Tez の設定 - Amazon EMR

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Tez の設定

Tez をカスタマイズするには、値を設定して、tez-site 設定分類を使用します。これにより、tez-site.xml 設定ファイルが設定されます。詳細については、Apache Tez ドキュメントTezConfigurationの「」を参照してください。Hive または Pig を変更して Tez 実行エンジンを使用するには、必要に応じて hive-sitepig-properties 設定分類を使用します。次に例を示します。

設定例

例: Tez のルートログインレベルを変更して Tez を Hive や Pig の実行エンジンとして設定する

次に示す create-cluster コマンドの例では、Tez、Hive、および Pig がインストールされたクラスターを作成します。このコマンドでは、Amazon S3 に格納されているファイル myConfig.json を参照します。そのファイルは tez-site 分類のプロパティを指定して tez.am.log.levelDEBUG に設定し、hive-sitepig-properties 設定分類を使用して Hive や Pig の実行エンジンを Tez に設定します。

注記

読みやすくするために、Linux 行連続文字 (\) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

aws emr create-cluster --release-label emr-7.2.0 \ --applications Name=Tez Name=Hive Name=Pig --ec2-attributes KeyName=myKey \ --instance-type m5.xlarge --instance-count 3 \ --configurations https://s3.amazonaws.com/mybucket/myfolder/myConfig.json --use-default-roles

myConfig.json のコンテンツの例を以下に示します。

[ { "Classification": "tez-site", "Properties": { "tez.am.log.level": "DEBUG" } }, { "Classification": "hive-site", "Properties": { "hive.execution.engine": "tez" } }, { "Classification": "pig-properties", "Properties": { "exectype": "tez" } } ]
注記

Amazon EMRバージョン 5.21.0 以降では、クラスター設定を上書きし、実行中のクラスター内のインスタンスグループごとに追加の設定分類を指定できます。これを行うには、Amazon EMRコンソール、 AWS Command Line Interface (AWS CLI)、または を使用します AWS SDK。詳細については、「実行中のクラスター内のインスタンスグループの設定を指定する」を参照してください。

Tez 非同期分割オープニング

テーブルパスに小さなファイルが多数あり、クエリがそれらをすべて読み込もうとすると、個々の分割に対応する、それぞれの小さなファイルが 1 つの Tez グループ分割にまとめられます。次に、単一のマッパーが単一の Tez グループ化分割を処理します。実行は同期的に行われるため、グループ分割の下にある個々の分割は 1 つずつ処理されます。そのためには、RecordReader オブジェクトは分割を同期的に処理する必要があります。

名前 分類 説明

tez.grouping.split.init.threads

tez-site

Tez が RecordReaders およびオープン分割を事前に開始するために使用するデーモンスレッドの数を指定します。ACID テーブルの場合、サポートされる tez.grouping.split.init.threads の最大値は 1 です。

tez.grouping.split.init.recordreaders

tez-site

デーモンスレッドによって事前に初期化されたままにする RecordReaders の数を指定します。これは Tez のグループ分割に InputSplits が多数含まれている場合に役立ちます。このような入力分割を処理するための RecordReaders の初期化は、逐次処理ではなくデーモンスレッドで非同期的に行うことができます。

Tez 非同期分割オープンのベンチマーク

Tez の非同期分割オープン機能のベンチマークには、以下の環境と構成を使用しました。

  • ベンチマーク環境 — を使用する 1 つのプライマリノードとm5.16xlarge、 を使用する 16 のコアノードを持つ Amazon EMRクラスターm5.16xlarge。

  • ベンチマーク設定 - 単一の Tez グループ分割に多数の入力分割がある場合のベンチマークシナリオをシミュレートするには、tez.grouping.split-count1 に設定します。

  • ベンチマークに使用されるテーブル - テーブルには 200 個のパーティションがあり、各パーティションには 1 つのファイルが含まれます。ベンチマークは、そのテーブルに CSV ファイルが含まれている場合と、そのテーブルにパーケットファイルが含まれている場合について行われます。ベンチマーク用の Hive クエリ: テーブルから SELECT COUNT(*) を 10 回実行し、平均実行時間を取得します。

  • Tez 非同期分割オープンを有効にする設定 - 以下のとおりです。

    • tez.grouping.split.init.threads = 4

    • tez.grouping.split.init.recordreaders = 10

データセット 機能が無効 (ベースライン) 機能が有効 改良点

CSV データセット

90.26 秒

79.20 秒

12.25%

Parquet データセット

54.67 秒

42.23 秒

22.75%