設定 Tez - Amazon EMR

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

設定 Tez

您可以使用 tez-site 組態分類來設定值以自訂 Tez,這樣做就會設定 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.am.log.level 設定為 DEBUGtez-site 分類的屬性,並使用 hive-sitepig-properties 組態分類將 Hive 和 Pig 的執行引擎設定為 Tez。

注意

包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。

aws emr create-cluster --release-label emr-7.5.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 5.21.0 版及更新EMR版本,您可以覆寫叢集組態,並為執行中叢集中的每個執行個體群組指定其他組態分類。您可以使用 Amazon EMR主控台、 AWS Command Line Interface (AWS CLI) 或 來執行此操作 AWS SDK。如需詳細資訊,請參閱為執行中叢集的執行個體群組提供組態

Tez 非同步分割開啟

當資料表路徑中有大量的小型檔案,且查詢嘗試讀取所有檔案時,對應於每個分割的各小型檔案都會合併在單一 Tez 分組分割之下。然後,單一映射器會處理單一 Tez 分組分割。此執行為同步發生,因此會逐一處理分組分割下的每個分割。這需要 RecordReader 物件才能同步處理分割。

名稱 分類 描述

tez.grouping.split.init.threads

tez-site

指定 Tez 用來預先啟動 RecordReaders 和開啟分割的常駐程式執行緒數量。用於 ACID 資料表,支援的最大值tez.grouping.split.init.threads1

tez.grouping.split.init.recordreaders

tez-site

指定要由常駐程式執行緒預先初始化的 RecordReaders 數量。當 Tez 分組分割包含大量 InputSplits 時,這就很有用。可以使用常駐程式執行緒非同步完成處理這些輸入分割的 RecordReaders 初始化 (而不是按順序處理)。

Tez 非同步分割開啟的基準測試

我們使用以下環境和組態來對 Tez 非同步分割開啟能力進行基準測試:

  • 基準環境 – 具有 1 個主要節點的 Amazon EMR叢集,使用 m5.16xlarge、 和 16 個使用 的核心節點 m5.16xlarge.

  • 基準測試組態:若要模擬基準測試的情境 (其中,大量輸入分割位於單一 Tez 分組分割中),請將 tez.grouping.split-count 設定為 1

  • 用於基準測試的資料表:該資料表包含 200 個分割區,每個分割區都包含一個檔案。當該資料表包含 時, 的基準已完成 CSV 檔案,以及當該資料表包含 parquet 檔案時。用於基準測試的 Hive 查詢:從資料表執行 SELECT COUNT(*) 十次,並計算平均執行期。

  • 啟用 Tez 非同步分割開啟的組態:如下所示:

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

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

資料集 功能已停用 (基準) 功能已啟用 改進

CSV dataset

90.26 秒

79.20 秒

12.25%

Parquet dataset

54.67 秒

42.23 秒

22.75%