选择您的 Cookie 首选项

我们使用必要 Cookie 和类似工具提供我们的网站和服务。我们使用性能 Cookie 收集匿名统计数据,以便我们可以了解客户如何使用我们的网站并进行改进。必要 Cookie 无法停用,但您可以单击“自定义”或“拒绝”来拒绝性能 Cookie。

如果您同意,AWS 和经批准的第三方还将使用 Cookie 提供有用的网站功能、记住您的首选项并显示相关内容,包括相关广告。要接受或拒绝所有非必要 Cookie,请单击“接受”或“拒绝”。要做出更详细的选择,请单击“自定义”。

配置 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 分类指定属性,以及将执行引擎设置为 Tez,以便 Hive 和 Pig 使用 hive-sitepig-properties 配置分类。

注意

为了便于读取,包含 Linux 行继续符(\)。它们可以通过 Linux 命令删除或使用。对于 Windows,请将它们删除或替换为脱字号(^)。

aws emr create-cluster --release-label emr-7.7.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 有关更多信息,请参阅为运行的集群中的实例组提供配置

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 数据集

90.26 秒

79.20 秒

12.25%

Parquet 数据集

54.67 秒

42.23 秒

22.75%

隐私网站条款Cookie 首选项
© 2025, Amazon Web Services, Inc. 或其附属公司。保留所有权利。