ビッグデータテストチュートリアル:ビッグデータとは何か、戦略、テスト方法

⚡ スマートサマリー

ビッグデータテストは、分散型Hadoopクラスタ全体にわたるデータステージング検証、MapReduce検証、出力検証とアーキテクチャおよびパフォーマンスチェックを組み合わせることで、ビッグデータアプリケーションがテラバイト規模のデータを正しく、迅速かつ安全に処理することを検証します。

  • 🔘 主な焦点: 検証されるのは、製品の個々の機能ではなく、クラスター全体におけるデータ処理の全体性です。
  • ☑️ 3つのフェーズ: データステージング、MapReduce、および出力検証は、すべてのHadoopテストサイクルを構成する要素です。
  • データ品質を最優先に: アプリケーションのテストを行う前に、適合性、正確性、重複性、一貫性、妥当性、完全性が確認されます。
  • 🧪 Archi構造は重要だ: パフォーマンスおよびフェイルオーバーサービスにより、クラスターはノード障害が発生してもスループットが低下することなく稼働し続けることが確認されています。
  • 🛠️ 調整パラメータ: ストレージレイアウト、コミットログ、同時実行性、キャッシング、タイムアウト、およびJVM設定が測定されます。
  • ⚠️ 既知の課題: 自動化に関するスキル不足、仮想マシンの遅延、そして膨大なデータセットが、ビッグデータテストを複雑にしている。

ビッグデータテストのチュートリアル。戦略、Hadoopテストフェーズ、パフォーマンステストについて解説します。

ビッグデータテストとは何ですか?

ビッグデータテストとは、ビッグデータアプリケーションのすべての機能が期待どおりに動作することを確認するためのテストプロセスです。ビッグデータテストの目的は、パフォーマンスとセキュリティを維持しながら、ビッグデータシステムがスムーズかつエラーなく動作することを保証することです。

ビッグデータとは、従来のコンピューティング技術では処理できない大規模なデータセットの集合です。これらのデータセットのテストには、さまざまなツール、技術、フレームワークが用いられます。ビッグデータは、量、種類、速度の点で驚異的なデータの作成、保存、検索、分析に関連しています。詳細については、 ビッグデータ, Hadoopの (NAIST) と MapReduce テストを開始する前に。

ビッグデータのテスト戦略とは何ですか?

ビッグデータアプリケーションのテストは、ソフトウェア製品の個々の機能をテストするよりも、データ処理能力の検証に重点が置かれます。ビッグデータテストにおいては、パフォーマンスと機能のテストが鍵となります。

ビッグデータテスト戦略では、QAエンジニアは汎用クラスタやその他のサポートコンポーネントを使用してテラバイト規模のデータの処理が成功したことを検証します。処理速度が非常に速いため、高度なテストスキルが求められます。処理には次の3種類があります。

  • バッチ処理: 保存されたデータはスケジュールに基づいて処理されるため、テストはジョブの完了と正確性を対象とします。
  • リアルタイム処理: 記録は到着時に処理されるため、テストは遅延とデータ損失を対象とします。
  • 対話型処理: アナリストは直接クエリを実行するため、テストではアドホッククエリの応答時間を対象とする。

下の図は、その戦略をまとめたものです。

ビッグデータテスト戦略図:QAエンジニアが検証するデータ処理の種類を示す図

これに加えて、データ品質もHadoopテストにおいて重要な要素です。アプリケーションをテストする前に、データの品質を確認する必要があり、これはデータベーステストの一部として考慮されるべきです。これには、適合性、正確性、重複、一貫性、妥当性、データの完全性など、さまざまな特性の確認が含まれます。このHadoopテストチュートリアルでは、次にHadoopアプリケーションのテスト方法について学びます。

Hadoopアプリケーションのテスト方法

次の図は、ビッグデータアプリケーションのテストにおける各段階の概要を示しています。

Hadoopクラスタ上でのビッグデータアプリケーションのテストにおける高レベルフェーズ

ビッグデータテスト、またはHadoopテストは、大きく3つのステップに分けられます。

ステップ 1: データステージングの検証

このビッグデータテストチュートリアルの最初のステップは、Hadoop導入前の段階と呼ばれ、プロセス検証が含まれます。

  • RDBMS、ウェブログ、ソーシャルメディアなど、さまざまなソースからのデータは、正しいデータがシステムに取り込まれていることを確認するために検証する必要があります。
  • ソース データと Hadoop システムにプッシュされたデータを比較して、それらが一致していることを確認する
  • 正しいデータが使用されていることを確認してくださいtracテッドして正しい場所にロードしました HDFS 場所

のようなツール タレンド また、Datameerはデータステージングの検証に使用できます。

ステップ 2: 「MapReduce」の検証

第2段階は「MapReduce」の検証です。この段階では、ビッグデータテスターは各ノードでビジネスロジックの検証を行い、その後複数のノードに対して実行した後に検証を行い、以下の点を確認します。

  • MapReduceプロセスは正しく動作します
  • データの集計ルールまたは分離ルールがデータに実装されている
  • キーと値のペアが生成される
  • MapReduce処理後のデータの検証

ステップ 3: 出力検証フェーズ

Hadoop テストの最終段階または第 XNUMX 段階は、出力検証プロセスです。 出力データ ファイルが生成され、要件に基づいて EDW (エンタープライズ データ ウェアハウス) またはその他のシステムに移動できるようになります。

第3段階の活動内容は以下のとおりです。

  • 変換ルールが正しく適用されていることを確認するには
  • データの整合性とターゲット システムへのデータのロードが成功したかどうかを確認するには
  • 対象データとHDFSファイルシステムのデータを比較し、データ破損が無いことを確認するには

Archi構造試験

今度は、データそのものから、データを格納するクラスターへと注目が移る。

Hadoop は非常に大量のデータを処理し、リソースを大量に消費します。そのため、ビッグデータ プロジェクトの成功を確実にするには、アーキテクチャ テストが不可欠です。設計が不十分または不適切なシステムは、パフォーマンスの低下につながり、システムが要件を満たせない可能性があります。最低限、 パフォーマンス また、フェイルオーバーテストサービスはHadoop環境で実行する必要があります。

パフォーマンス テストには、ジョブ完了時間、メモリ使用率、データ スループット、および同様のシステム メトリックのテストが含まれます。フェイルオーバー テスト サービスの目的は、データ ノードの障害発生時にデータ処理がシームレスに行われることを検証することです。

性能試験

ビッグデータのパフォーマンステストは、主に3つの分野を対象としています。

  • データ取り込みとスループット: この段階では、ビッグデータテスターは、システムがさまざまなデータソースからデータをどれだけ速く消費できるかを検証します。テストには、キューが一定時間内に処理できるメッセージ数を特定することが含まれます。また、基盤となるデータストアにデータがどれだけ速く挿入できるか、たとえば、データストアへの挿入速度も含まれます。 MongoDB (NAIST) と Cassandra データベース。
  • 情報処理: これには、クエリやMapReduceジョブの実行速度を検証することが含まれます。また、基盤となるデータストアにデータセットが格納された状態で、データ処理を単独でテストすることも含まれます。例えば、基盤となるHDFS上でMapReduceジョブを実行する場合などです。
  • サブコンポーネントのパフォーマンス: これらのシステムは複数のコンポーネントで構成されており、各コンポーネントを個別にテストすることが不可欠です。例えば、メッセージのインデックス作成と処理速度、MapReduceジョブ、クエリパフォーマンス、検索などです。

パフォーマンス テストのアプローチ

ビッグデータアプリケーションのパフォーマンステストでは、膨大な量の構造化データと非構造化データのテストが必要となり、そのような大規模なデータをテストするには、特別なテスト手法が求められます。

以下のワークフローは、パフォーマンス テストがたどる一連の流れを示しています。

ビッグデータクラスタのセットアップから最適な構成までの性能テストアプローチのワークフロー

パフォーマンス テストは以下の順序で実行されます。

  1. このプロセスは、パフォーマンスをテストするビッグデータクラスタのセットアップから始まります。
  2. 対応するワークロードを特定して設計する
  3. 個々のクライアントを準備する(カスタムスクリプトを作成する)
  4. テストを実行し、結果を分析します(目標が達成されない場合は、コンポーネントを調整して再実行します)。
  5. 最適な構成

パフォーマンステストのパラメータ

性能テストで検証すべき様々なパラメータは以下のとおりです。

  • データストレージ: 異なるノードでデータがどのように保存されるか
  • コミットログ: コミットログのサイズはどの程度まで許容されるか
  • 同時実行性: 書き込み操作と読み取り操作を実行できるスレッド数はいくつですか?
  • キャッシング: キャッシュ設定の「行キャッシュ」と「キーキャッシュ」を調整してください。
  • タイムアウト: 接続タイムアウト、クエリタイムアウトなどの値。
  • JVMパラメータ: ヒープサイズ、GC収集アルゴリズムなど
  • MapReduceのパフォーマンス: ソート、マージなど
  • メッセージキュー: メッセージ送信速度、サイズなど

テスト環境のニーズ

テスト環境の要件は、テスト対象のアプリケーションの種類によって異なります。ビッグデータソフトウェアのテストの場合、テスト環境には以下の要素が含まれる必要があります。

  • 大量のデータを保存および処理するのに十分なスペースが必要です。
  • 分散ノードとデータを持つクラスターが必要です
  • ビッグデータのパフォーマンスをテストするには、パフォーマンスを高く維持するために CPU とメモリの使用率を最小限にする必要があります。

ビッグデータテストと従来型データベーステストの比較

以下の表は、2つの分野を物件ごとに比較したものです。

特性 従来のデータベーステスト ビッグデータのテスト
Rescale データ テスターは構造化データを扱います テスターは構造化データと非構造化データの両方を処理します
テストのアプローチ テストアプローチは明確に定義されており、長年の実績がある テストアプローチには集中的な研究開発努力が必要です
テスト戦略 テスターは、手動で行う「サンプリング」戦略、または自動化ツールによる「網羅的検証」戦略のいずれかを選択できます。 ビッグデータにおける「サンプリング」戦略は課題である
インフラ ファイルサイズが制限されているため、特別なテスト環境は必要ありません。 データ サイズとファイル (HDFS) が大きいため、特別なテスト環境が必要です
検証ツール テスターは、ExcelベースのマクロまたはUIベースの自動化ツールのいずれかを使用する。 特定のツールは定義されておらず、MapReduceのようなプログラミングツールからHiveQLまで、その範囲は広範である。
テストツール テストツールは基本的な操作知識と少ないトレーニングで使用できます テストツールを操作するには、特定のスキルとトレーニングが必要です。また、これらのツールはまだ開発初期段階にあり、今後新たな機能が追加される可能性があります。

ビッグデータシナリオで使用されるツール

以下の表は、一般的なツールをクラスタ層別に分類したものです。

ビッグデータ Cluster ビッグデータ ツール
NoSQL: CouchDB、データベース MongoDB, Cassandra、Redis、ZooKeeper、HBase
MapReduce: ハドゥープ、 ハイブ、Pig、Cascading、Oozie、Kafka、S4、MapR、 用水路
ストレージ: S3、HDFS(Hadoop分散ファイルシステム)
サーバー: 弾性、 Heroku, Google App Engine、EC2
処理: R、ヤフー! パイプ、Mechanical Turk、BigSheets、Datameer

ビッグデータテストの課題

ほぼすべてのビッグデータプロジェクトにおいて、3つの実際的な障害が繰り返し発生する。

  • オートメーション: 自動化テスト ビッグデータを扱うには、技術的な専門知識を持つ人材が必要です。また、自動化ツールは、テスト中に発生する予期せぬ問題に対処するようには設計されていません。
  • 仮想化: これはテストの重要な段階の一つです。仮想マシンのレイテンシは、リアルタイムのビッグデータ性能テストにおいてタイミングの問題を引き起こします。また、ビッグデータにおけるイメージの管理も煩雑です。
  • 大規模データセット: 音量には3つの圧力が伴う。
    • より多くのデータを検証する必要があり、それをより迅速に行う必要がある
    • テスト作業を自動化する必要がある
    • さまざまなプラットフォームでテストできる必要がある

パフォーマンステストの課題

  • 多様な技術群: 各サブコンポーネントは異なる技術に属しており、個別にテストする必要がある。
  • 特定のツールが利用できない: 単一のツールでエンドツーエンドのテストを実行できるものはありません。例えば、NoSQLはメッセージキューには適さないかもしれません。
  • テストスクリプト: テストシナリオとテストケースを設計するには、高度なスクリプト作成能力が必要となる。
  • テスト環境: データサイズが大きいため、特別なテスト環境が必要です。
  • 監視ソリューション: 環境全体を監視できるソリューションは限られている。
  • 診断ソリューション: パフォーマンスのボトルネック領域を詳細に分析するには、カスタムソリューションが必要です。

よくあるご質問

データベーステストの一環として、アプリケーションテスト開始前にデータ品質がチェックされます。テスターは、データの適合性、正確性、重複、一貫性、妥当性、完全性を検証し、NULL値、エンコードの問題、列シフトなどを検出します。

AIは、プライベートレコードを公開することなく本番環境を模倣した合成テストデータを生成し、固定ルールでは見逃されるパイプラインの異常を検出し、実行すべき検証チェックの優先順位を決定します。ただし、ビジネスロジックに対する人間のレビューは依然として不可欠です。

Copilot や同様のエージェントアシスタントは定型文を高速化します: HiveQL 比較クエリ、PySpark アサーションと調整スクリプト。生成されたコードは、まず既知の正常なデータセットに対して実行してください。もっともらしいクエリでも、誤った列を検証してしまう可能性があるためです。

スキーマ検証は、受信レコードがHDFSまたはNoSQLストアに到達する前に、期待されるフィールド、型、およびnull許容性を持っていることを確認します。取り込み時にスキーマのずれを検出するコストは、 trac後で出力が破損する。

チームは、本番環境からサンプリングしたマスクされたサブセット、ヌル値や外れ値などのエッジケースをストレスを与えるように生成されたレコード、および再生された過去のストリームを組み合わせて使用​​します。サンプリングだけではリスクが高く、発見すべき障害はまれなレコードによって引き起こされる可能性があるためです。

ETLテストは、定義されたツールと予測可能なデータ量を用いて、データウェアハウスへの構造化データのロードを検証します。ビッグデータテストは、分散クラスタ上の構造化データと非構造化データを対象とし、検証はMapReduceまたはHiveQLで記述されます。

メッセージサイズに対する取り込み速度を測定し、バックログを挿入してキューが回復することを確認し、途中でノードを停止して何もドロップされないことを確認します。ソースイベントのカウントされたウィンドウをシンクと比較します。

SQLとHiveQL、MapReduceのための1つの言語、または Spark 職務内容、HDFSとNoSQLストアに関する実務知識、およびテストハーネス用のスクリプト作成能力が求められます。エンドツーエンドのツールは存在しないため、分析的思考力がより重要になります。