

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

# Tez の設定
<a name="tez-configure"></a>

Tez をカスタマイズするには、値を設定して、`tez-site` 設定分類を使用します。これにより、`tez-site.xml` 設定ファイルが設定されます。詳細については、Apache Tez ドキュメントの [TezConfiguration](https://tez.apache.org/releases/0.8.2/tez-api-javadocs/configs/TezConfiguration.html) を参照してください。Hive または Pig を変更して Tez 実行エンジンを使用するには、必要に応じて `hive-site` と `pig-properties` 設定分類を使用します。次に例を示します。

## 設定例
<a name="tez-configure-example"></a>

**Example 例: Tez のルートログインレベルを変更して Tez を Hive や Pig の実行エンジンとして設定する**  
次に示す `create-cluster` コマンドの例では、Tez、Hive、および Pig がインストールされたクラスターを作成します。このコマンドでは、Amazon S3 に格納されているファイル `myConfig.json` を参照します。そのファイルは `tez-site` 分類のプロパティを指定して `tez.am.log.level` を `DEBUG` に設定し、`hive-site` と `pig-properties` 設定分類を使用して Hive や Pig の実行エンジンを Tez に設定します。  
読みやすくするために、Linux 行連続文字 (\$1) が含まれています。Linux コマンドでは、これらは削除することも、使用することもできます。Windows の場合、削除するか、キャレット (^) に置き換えてください。

```
aws emr create-cluster --release-label emr-7.12.0 \
--applications Name=Tez Name=Hive Name=Pig --ec2-attributes KeyName=myKey \
--instance-type m5.xlarge --instance-count 3 \
--configurations https://s3.amazonaws.com/amzn-s3-demo-bucket/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 を使用します。詳細については、「[実行中のクラスター内のインスタンスグループの設定を指定する](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/emr-configure-apps-running-cluster.html)」を参照してください。

## Tez 非同期分割オープニング
<a name="tez-configure-async"></a>

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

Amazon EMR 6.15.0 では、入力スプリットを Tez グループ分割で非同期的に開くように指定できる設定が導入されています。この機能は [TEZ-4397](https://issues.apache.org/jira/browse/TEZ-4397) で開始されましたが、OSS Hive ではリグレッションが発生していました。EMR Hive では Hive ACID テーブルのリグレッションとその他のバグが修正されました。この改善により、1 つの Tez グループ分割で多数の入力分割がある場合に、読み取りクエリのパフォーマンスが向上します。


| 名前 | 分類 | 説明 | 
| --- | --- | --- | 
|  `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` の初期化は、逐次処理ではなくデーモンスレッドで非同期的に行うことができます。 | 

設定に関する注意事項:


| 主題 | Details | 
| --- | --- | 
| 推奨設定 | 上記の設定は、`hive-site` と `tez-site` の両方で必要な値に設定することをお勧めします。 | 
| 値の一致 | 構成設定の値は、`hive-site` と `tez-site` の両方で同じである必要があります。 | 
| LLAP の推奨事項 | LLAP が有効になっている場合は、この機能を使用することはお勧めしません。 | 

### Tez 非同期分割オープンのベンチマーク
<a name="tez-configure-async-benchmark"></a>

Tez の非同期分割オープン機能のベンチマークには、以下の環境と構成を使用しました。
+ **ベンチマーク環境** - m5.16xlarge を使用するプライマリノードが 1 つ、m5.16xlarge を使用するコアノードが 16 個の Amazon EMR クラスター。
+ **ベンチマーク設定** - 単一の Tez グループ分割に多数の入力分割がある場合のベンチマークシナリオをシミュレートするには、`tez.grouping.split-count` を `1` に設定します。
+ **ベンチマークに使用されるテーブル** - テーブルには 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% | 