配置 Tez
您可以使用 tez-site
配置分类设置值来自定义 Tez,该配置分类将配置 tez-site.xml
配置文件中的设置。有关更多信息,请参阅 Apache Tez 文档中的 TezConfigurationhive-site
和 pig-properties
配置分类。示例如下。
示例配置
例 示例:自定义 Tez 根日志记录级别,并将 Tez 设置为 Hive 和 Pig 的执行引擎
下面显示的 create-cluster
命令将创建一个安装了 Tez、Hive 和 Pig 的集群。该命令引用存储在 Amazon S3 中的文件 myConfig.json
,该文件为将 tez.am.log.level
设置为 DEBUG
的 tez-site
分类指定属性,以及将执行引擎设置为 Tez,以便 Hive 和 Pig 使用 hive-site
和 pig-properties
配置分类。
注意
为了便于读取,包含 Linux 行继续符(\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号(^)。
aws emr create-cluster --release-label
emr-7.3.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。有关更多信息,请参阅为运行的集群中的实例组提供配置。
Tez 异步拆分打开
当表路径中有大量小文件并且查询尝试读取所有文件时,与每个单独拆分相对应的每个小文件将合并在一个 Tez 分组拆分下。然后,单个映射器将处理单个 Tez 分组拆分。由于执行是同步的,因此分组拆分下的每个单独拆分都将逐一得到处理。这就要求 RecordReader
对象同步处理各个拆分。
名称 | 分类 | 描述 |
---|---|---|
|
|
指定 Tez 用于预启动 |
|
|
指定要由进程守护程序线程保持预初始化 |
Tez 异步拆分打开的基准测试
我们已使用以下环境和配置对 Tez 异步拆分打开功能进行了基准测试:
-
基准环境 – Amazon EMR 集群,有 1 个使用 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 数据集 |
90.26 秒 |
79.20 秒 |
12.25% |
Parquet 数据集 |
54.67 秒 |
42.23 秒 |
22.75% |