すべてのプロダクト
Search
ドキュメントセンター

E-MapReduce:テストプラン

最終更新日:Jan 11, 2025

このトピックでは、TPC ベンチマーク H(TPC-H)を使用してオンライン分析処理(OLAP)クエリの性能をテストする方法について説明します。

TPC-H の概要

次の説明は、TPC-H の公式ドキュメントからの引用です。

TPC-H は意思決定支援ベンチマークです。ビジネス指向のアドホッククエリと同時データ変更のスイートで構成されています。クエリとデータベースにデータを入力するために選択されたデータは、業界全体にわたる幅広い関連性を持つように選択されています。このベンチマークは、大量のデータを調べ、高度に複雑なクエリを実行し、重要なビジネス上の質問に回答する意思決定支援システムを示しています。

詳細については、「TPC BENCHMARK™ H 標準仕様」をご参照ください。

説明

このトピックで説明されている TPC-H 性能テストは、TPC-H ベンチマークテストに基づいて実装されていますが、TPC-H ベンチマークテストのすべての要件を満たしているわけではありません。したがって、テスト結果は、公開されている TPC-H ベンチマークテストの結果と比較することはできません。

データセット

TPC-H は、意思決定支援システムをシミュレートするためにトランザクション処理性能評議会(TPC)によって開発されたテストデータセットです。 TPC-H は、学術界や産業界で意思決定支援システムの性能を評価するために使用されます。

TPC-H は、本番環境のデータをモデル化して、販売システムのデータウェアハウスをシミュレートします。データウェアハウスは 8 つのテーブルで構成されています。各テーブルのサイズは 1 GB から 3 TB の範囲です。 TPC-H ベンチマークテストには 22 のクエリが含まれます。テストは、各クエリの応答時間、つまりクエリを送信してから返された結果を受信するまでに必要な時間に焦点を当てています。テスト結果は、システムのクエリ処理能力を包括的に反映できます。詳細については、「TPC BENCHMARK™ H 標準仕様」をご参照ください。

手順

この例では、TPC-H ベンチマークテストの 22 のクエリが使用されます。テストデータの量はテスト結果に影響します。 TPC-H のデータ生成ツールを使用すると、スケールファクター(SF)を変更して、生成されるデータの量を調整できます。 1 SF は 1 GB のデータを示します。

説明

上記のデータ量は、未加工データの量を指します。テスト環境を準備するときは、インデックスによって占有されるスペースなど、他の要因も考慮する必要があります。

  1. 準備を行います。

    OLAP クエリのテストに必要な基本環境を準備します。

    説明

    テスト結果に影響を与える可能性のある変数を減らすために、既存のインスタンスの仕様をアップグレードまたはダウングレードするのではなく、テストを実行するたびに新しいインスタンスを使用することをお勧めします。

    1. Elastic Compute Service(ECS)インスタンスを作成します。詳細については、「インスタンスの作成」をご参照ください。

      このトピックでは、テストに使用される ECS インスタンスの仕様は次のとおりです。

      • インスタンスタイプ: ecs.g6e.4xlarge

      • オペレーティングシステム: CentOS 7.9

      • データディスク: エンタープライズ SSD(ESSD)。テストで使用されるデータ量に基づいて容量を決定できます。

    2. E-MapReduce(EMR)Serverless StarRocks インスタンスを作成します。詳細については、「インスタンスの作成」をご参照ください。

      このテストでは、8 つの計算ユニット(CU)を持つバックエンド(BE)が使用されます。これは、EMR Serverless StarRocks インスタンスが 8 つの CPU コアと 32 GB のメモリで構成されていることを示しています。ビジネス要件に基づいてコンピューティングリソースを構成することもできます。

      説明

      EMR Serverless StarRocks インスタンスと ECS インスタンスを同じ仮想プライベートクラウド(VPC)およびリージョンに作成することをお勧めします。

  2. テストパッケージを構成します。

    1. ECS インスタンスにログオンします。詳細については、「インスタンスへの接続」をご参照ください。

    2. 次のコマンドを実行して、StarRocks のベンチマークテストパッケージをダウンロードして解凍します。

      wget https://emr-olap.oss-cn-beijing.aliyuncs.com/packages/starrocks-benchmark-for-serverless.tar.gz
      tar xzvf starrocks-benchmark-for-serverless.tar.gz
      // StarRocks 用のベンチマークテストパッケージをダウンロードして解凍します。
    3. 次のコマンドを実行して、starrocks-benchmark-for-serverless ディレクトリに移動します。

      cd starrocks-benchmark-for-serverless
      // starrocks-benchmark-for-serverless ディレクトリに移動します。
    4. vim group_vars/all コマンドを実行し、テストに必要な次のパラメーターを指定します。

      # mysql client config
      login_host: fe-c-8764bab92bc6****-internal.starrocks.aliyuncs.com
      login_port: 9030
      login_user: admin
      login_password: xxxx
      
      # oss config
      bucket: ""
      endpoint: ""
      access_key_id: ""
      access_key_secret: ""
      
      # benchmark config
      scale_factor: 1
      work_dir_root: /mnt/disk1/starrocks-benchmark/workdirs
      dataset_generate_root_path: /mnt/disk1/starrocks-benchmark/datasets
      // mysql クライアント設定、OSS 設定、ベンチマーク設定を指定します。

      次の表に、パラメーターを示します。

      パラメーター

      説明

      備考

      login_host

      EMR Serverless StarRocks インスタンス上のフロントエンド ( FE ) の内部エンドポイントです。

      EMR Serverless StarRocksインスタンスの[インスタンスの詳細] タブに移動して、[FE の詳細] セクションでインスタンスの[内部エンドポイント] を表示できます。

      重要

      パブリックエンドポイントを使用しないことをお勧めします。

      クライアントを StarRocks サービスに接続するために使用されるパラメーター。

      login_port

      EMR Serverless StarRocksインスタンス上のFEのクエリポート。デフォルト値:9030。

      EMR Serverless StarRocksインスタンスの[インスタンスの詳細] タブに移動して、[FE の詳細] セクションでインスタンスの[クエリポート] を表示できます。

      login_user

      EMR Serverless StarRocks インスタンスへのログオンに使用される初期ユーザー名。

      login_password

      EMR Serverless StarRocks インスタンスへのログオンに使用されるパスワード。

      bucket

      オブジェクトストレージサービス(OSS)バケットの名前。

      オプション。 OSS の構成。これらのパラメーターを指定すると、生成されたテストデータセットは OSS に保存されます。

      endpoint

      OSS へのアクセスに使用されるエンドポイント。

      access_key_id

      Alibaba Cloud アカウントの AccessKey ID。

      access_key_secret

      Alibaba Cloud アカウントの AccessKey シークレット。

      scale_factor

      テストデータセットの SF。生成されるデータの量を制御します。デフォルト値: 1。単位: GB。

      ベンチマークの構成。

      work_dir_root

      作業ディレクトリのルートディレクトリ。ルートディレクトリは、テーブル作成ステートメントや TPC-H テストのその他の SQL ステートメントなどのデータを保存するために使用されます。デフォルト値: /mnt/disk1/starrocks-benchmark/workdirs

      dataset_generate_root_path

      生成されたテストデータセットが保存されるパス。既定値: /mnt/disk1/starrocks-benchmark/datasets です。

      OSSバケットが指定されている場合、バケットはこのパスにマウントされます。

  3. 次のコマンドを実行して、エンドツーエンドの自動 TPC-H テストを有効にします。

    bin/run_tpch.sh
    // エンドツーエンドの自動 TPC-H テストを実行します。

    エンドツーエンドの自動 TPC-H テスト中に、データベース、テーブル、22 の SQL ステートメント、およびデータセットが作成され、データがロードされ、クエリが実行されます。

    次の操作を実行することもできます。

    • 次のコマンドを実行して、データセットをリロードします。

      bin/run_tpch.sh reload
      // データセットをリロードします。
    • 次のコマンドを実行して、TPC-H クエリテストを実行します。

      bin/run_tpch.sh query
      // TPC-H クエリテストを実行します。
  4. テスト結果を表示します。

    • テスト結果の概要を確認します。

      bin/run_tpch.sh コマンドが実行されると、テスト結果が表示されます。テスト結果の例:

      TASK [tpc_h : debug] ****************************************************************************************************************************************
      ok: [10.1.**.**] => {
          "command_output.stdout_lines": [
              "[info] 2022-03-01 09:51:23.295 | Run sql queries started.", // SQL クエリの実行が開始されました。
              "[info] 2022-03-01 09:51:23.330 | Run q10.sql started.", // q10.sql の実行が開始されました。
              "[info] 2022-03-01 09:51:23.913 | Run q10.sql finished. Time taken: 0:00:00, .557 seconds", // q10.sql の実行が完了しました。所要時間: 0:00:00, .557 秒
              ...
              "[info] 2022-03-01 09:51:33.324 | Run sql queries finished. Time taken: 0:00:10, 10.026 seconds" // SQL クエリの実行が完了しました。所要時間: 0:00:10, 10.026 秒
          ]
      }
      ...
      
    • テスト結果の詳細を確認します。

      bin/run_tpch.sh コマンドが正常に実行されると、システムは TPC-H 性能テスト全体の作業ディレクトリを構築し、<work_dir> ディレクトリのパスを返します。このパスに切り替えて、クエリステートメント、テーブル作成ステートメント、実行ログなどの関連情報を表示できます。filepath

      説明

      この例では、<work_dir> ディレクトリのパスは /mnt/disk1/starrocks-benchmark/workdirs/tpc_h/sf1 です。

      cd <work_dir>/logs コマンドを実行して、作業ディレクトリの logs ディレクトリに移動し、テスト結果と SQL ステートメントの詳細な実行結果を表示することもできます。

      次のコードは、<work_dir> ディレクトリの構造を示しています。

      <work_dir>/
      ├── config # run.sh および run_mysql.sh スクリプトの構成。
      ├── logs # TPC-H 性能テストの最新の実行ログ。
      │   ├── *.sql.err
      │   ├── *.sql.out
      │   └── run.log
      ├── queries # TPC-H 性能テストに含まれる 22 の SQL クエリ。
      │   ├── ddl
      │   │   └── create_tables.sql # TPC-H 性能テストのテーブルを作成するために使用されるステートメント。
      │   └── *.sql
      ├── run_mysql.sh
      ├── run.sh # TPC-H 性能テストで完全に実行されるクエリ。
      └── tpch_tools # dbgen ツールキット。
      
      // ディレクトリ構造と各ファイルの説明です。