最新消息 - Amazon EMR
AWS 文档中描述的 AWS 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 AWS 服务入门

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

最新消息

本主题介绍 Amazon EMR 6.x 系列和 5.x 系列的当前发布版本中的功能和已解决的问题。发布版本 6.2.0 选项卡发布版本 5.32.0 选项卡上也提供了这些发布说明,以及应用程序版本、组件版本和此发布版本的可用配置分类。

https://docs.amazonaws.cn/emr/latest/ReleaseGuide/amazon-emr-release-notes.rss 订阅 Amazon EMR 发行说明的 RSS 源,以便在有新的 Amazon EMR 发布版本可用时接收更新。

有关回到发布版本 4.2.0 的早期版本发布说明,请参阅Amazon EMR 新增功能历史记录

注意

早期的 25 个 Amazon EMR 发布版本现在使用 AWS 签名版本 4 对发送到 Amazon S3 的请求进行身份验证。AWS 签名版本 2 正在淘汰,在 2020 年 6 月 24 日后创建的新 S3 存储桶将不支持签名版本 2 签名的请求。现有存储桶将会继续支持签名版本 2。我们建议您迁移到支持签名版本 4 的 Amazon EMR 版本,这样您可以继续访问新的 S3 存储桶,避免工作负载中断。

现在提供支持签名版本 4 的以下 EMR 版本:emr-4.7.4、emr-4.8.5、emr-4.9.6、emr-4.10.1、emr-5.1.1、emr-5.2.3、emr -5.3.2、emr-5.4.1、emr-5.5.4、emr-5.6.1、emr-5.7.1、emr-5.8.3、emr-5.9.1、emr-5.10.1、emr-5.11 .4、emr-5.12.3、emr-5.13.1、emr-5.14.2、emr-5.15.1、emr-5.16.1、emr-5.17.2、emr-5.18.1、emr-5.19.1、emr-5.20.1 和 emr-5.21.2。EMR 版本 5.22.0 及更高版本已支持签名版本 4。

如果您使用的是诸如 Apache Spark、Apache Hive、Presto 之类的 Amazon EMR 应用程序,则无需更改您的应用程序代码,即可使用签名版本 4。如果您使用的是 Amazon EMR 中未包含的自定义应用程序,则可能需要更新代码,才能使用签名版本 4。有关可能需要哪些更新的更多信息,请参阅从签名版本 2 转向签名版本 4

发布版本 6.2.0(Amazon EMR 6.x 系列的最新版本)

New Amazon EMR release versions are made available in different regions over a period of several days, beginning with the first region on the initial release date. The latest release version may not be available in your region during this period.

以下发行说明包含有关 Amazon EMR 发布版本 6.2.0 的信息。更改是相对于 6.1.0 而言的。

首次发布日期:2020 年 12 月 9 日

上次更新日期:2021 年 3 月 24 日

支持的应用程序

  • AWS SDK for Java 版本 1.11.828

  • emr-record-server 版本 1.7.0

  • Flink 版本 1.11.2

  • Ganglia 版本 3.7.2

  • Hadoop 版本 3.2.1-amzn-1

  • HBase 版本 2.2.6-amzn-0

  • HBase-operator-tools 1.0.0

  • HCatalog 版本 3.1.2-amzn-0

  • Hive 版本 3.1.2-amzn-3

  • Hudi 版本 0.6.0-amzn-1

  • Hue 版本 4.8.0

  • JupyterHub 版本 1.1.0

  • Livy 版本 0.7.0

  • MXNet 版本 1.7.0

  • Oozie 版本 5.2.0

  • Phoenix 版本 5.0.0

  • Pig 版本 0.17.0

  • Presto 版本 0.238.3-amzn-1

  • PrestoSQL 版本 343

  • Spark 版本 3.0.1-amzn-0

  • spark-rapids 0.2.0

  • TensorFlow 版本 2.3.1

  • Zeppelin 版本 0.9.0-preview1

  • Zookeeper 版本 3.4.14

  • 连接器和驱动程序:DynamoDB Connector 4.16.0

新功能

  • HBase:在提交阶段删除了重命名并添加了持久的 HFile 跟踪。请参阅 Amazon EMR 版本指南 中的持久的 HFile 跟踪

  • HBase:向后移植了创建用于强制在压缩时缓存数据块的配置

  • PrestoDB:对动态分区修剪进行了改进。基于规则的联接重排序适用于非分区数据。

  • 限定范围的托管策略:为符合 AWS 最佳实践,Amazon EMR 已推出 v2 EMR 限定范围的默认托管策略作为将弃用的策略的替代。请参阅 Amazon EMR 托管策略

  • 实例元数据服务 (IMDS) V2 支持状态:对于 Amazon EMR 6.2 或更高版本,Amazon EMR 组件使用 IMDSv2 进行所有 IMDS 调用。对于应用程序代码中的 IMDS 调用,您可以同时使用 IMDSv1 和 IMDSv2,或者配置 IMDS 只使用 IMDSv2 以增加安全性。如果在 Amazon EMR 6.x 之前的版本中禁用 IMDSv1,则会导致集群启动失败。

更改、增强和解决的问题

  • Spark:对 Spark 运行时进行了性能改进。

已知问题

  • Lower "Max open files" limit on older AL2. Amazon EMR releases: emr-5.30.x, emr-5.31.0, emr-5.32.0, emr-6.0.0, emr-6.1.0, and emr-6.2.0 are based on older versions of Amazon Linux 2 (AL2), which have a lower ulimit setting for “Max open files” when EMR clusters are created with the default AMI. The lower open file limit causes a "Too many open files" error when submitting Spark job. In the impacted EMR releases, the Amazon EMR default AMI has a default ulimit setting of 4096 for "Max open files," which is lower than the 65536 file limit in the latest Amazon Linux 2 AMI. The lower ulimit setting for "Max open files" causes Spark job failure when the Spark driver and executor try to open more than 4096 files. To fix the issue, Amazon EMR has a bootstrap action (BA) script that adjusts the ulimit setting at cluster creation. Amazon EMR releases 6.3.0 and 5.33.0 will include a permanent fix with a higher "Max open files" setting.

    The following workaround for this issue lets you to explicitly set the instance-controller ulimit to a maximum of 65536 files.

    Explicitly set a ulimit from the command line

    1. Edit /etc/systemd/system/instance-controller.service to add the following parameters to Service section.

      LimitNOFILE=65536

      LimitNPROC=65536

    2. Restart InstanceController

      $ sudo systemctl daemon-reload

      $ sudo systemctl restart instance-controller

    Set a ulimit using bootstrap action (BA)

    You can also use a bootstrap action (BA) script to configure the instance-controller ulimit to 65536 files at cluster creation.

    #!/bin/bash for user in hadoop spark hive; do sudo tee /etc/security/limits.d/$user.conf << EOF $user - nofile 65536 $user - nproc 65536 EOF done for proc in instancecontroller logpusher; do sudo mkdir -p /etc/systemd/system/$proc.service.d/ sudo tee /etc/systemd/system/$proc.service.d/override.conf << EOF [Service] LimitNOFILE=65536 LimitNPROC=65536 EOF pid=$(pgrep -f aws157.$proc.Main) sudo prlimit --pid $pid --nofile=65535:65535 --nproc=65535:65535 done sudo systemctl daemon-reload
  • 重要

    Amazon EMR 6.1.0 和 6.2.0 包含一个性能问题,此问题可能会严重影响所有 Hudi 插入、更新插入和删除操作。如果您计划将 Hudi 与 Amazon EMR 6.1.0 或 6.2.0 结合使用,则应联系 AWS Support 以获取已修补的 Hudi RPM。

  • 重要

    运行 Amazon Linux 或 Amazon Linux 2 AMI(Amazon Linux 系统映像)的 Amazon EMR 集群使用默认的 Amazon Linux 行为,而不会自动下载和安装要求重新启动的重要和关键内核更新。这与运行默认 Amazon Linux AMI 的其他 Amazon EC2 实例的行为相同。如果 EMR 版本发布后,要求重新启动的新 Amazon Linux 软件更新(如内核、NVIDIA 和 CUDA 更新)可用,则运行默认 AMI 的 EMR 集群实例不会自动下载并安装这些更新。要获取内核更新,您可以自定义 Amazon EMR AMI使用最新的 Amazon Linux AMI

  • 没有发布 Amazon EMR 6.2.0 Maven 构件。它们将与未来的 Amazon EMR 版本一起发布。

  • 使用 HBase 存储文件系统表进行持久 HFile 跟踪不支持 HBase 区域复制功能。有关 HBase 区域复制的更多信息,请参阅时间线一致的高可用读取

  • Amazon EMR 6.x 和 EMR 5.x Hive 分桶版本差异

    EMR 5.x 使用 OOS Apache Hive 2,而在 EMR 6.x 中使用 OOS Apache Hive 3。开源 Hive2 使用分桶版本 1,而开源 Hive3 使用分桶版本 2。Hive 2 (EMR 5.x) 和 Hive 3 (EMR 6.x) 之间的这种分桶版本差异意味着 Hive 以不同的方式对哈希函数进行分桶。请参见以下示例。

    下表是分别在 EMR 6.x 和 EMR 5.x 中创建的示例。

    -- Using following LOCATION in EMR 6.x CREATE TABLE test_bucketing (id INT, desc STRING) PARTITIONED BY (day STRING) CLUSTERED BY(id) INTO 128 BUCKETS LOCATION 's3://your-own-s3-bucket/emr-6-bucketing/'; -- Using following LOCATION in EMR 5.x LOCATION 's3://your-own-s3-bucket/emr-5-bucketing/';

    在 EMR 6.x 和 EMR 5.x 中插入相同的数据。

    INSERT INTO test_bucketing PARTITION (day='01') VALUES(66, 'some_data'); INSERT INTO test_bucketing PARTITION (day='01') VALUES(200, 'some_data');

    检查 S3 位置时,显示分桶文件名是不同的,因为哈希函数在 EMR 6.x (Hive 3) 和 EMR 5.x (Hive 2) 之间不同。

    [hadoop@ip-10-0-0-122 ~]$ aws s3 ls s3://your-own-s3-bucket/emr-6-bucketing/day=01/ 2020-10-21 20:35:16 13 000025_0 2020-10-21 20:35:22 14 000121_0 [hadoop@ip-10-0-0-122 ~]$ aws s3 ls s3://your-own-s3-bucket/emr-5-bucketing/day=01/ 2020-10-21 20:32:07 13 000066_0 2020-10-21 20:32:51 14 000072_0

    还可以通过在 EMR 6.x 的 Hive CLI 中运行以下命令来查看版本差异。请注意,它返回分桶版本 2。

    hive> DESCRIBE FORMATTED test_bucketing; ... Table Parameters: bucketing_version 2 ...

发布版本 5.32.0(Amazon EMR 5.x 系列的最新版本)

New Amazon EMR release versions are made available in different regions over a period of several days, beginning with the first region on the initial release date. The latest release version may not be available in your region during this period.

以下版本说明包含有关 Amazon EMR 发行版本 5.32.0 的信息。更改是相对于 5.31.0 而言的。

首次发行日期:2021 年 1 月 8 日

升级

  • 已将 Amazon Glue 连接器升级到版本 1.14.0

  • 已将 Amazon SageMaker Spark 开发工具包升级到版本 1.4.1

  • 已将 AWS Java 开发工具包升级到版本 1.11.890

  • 已将 EMR DynamoDB Connector 升级到版本 4.16.0

  • 已将 EMRFS 升级到版本 2.45.0

  • 已将 EMR Log Analytics Metrics 升级到版本 1.18.0

  • 已将 EMR MetricsAndEventsApiGateway Client 升级到版本 1.5.0

  • 已将 EMR Record Server 升级到版本 1.8.0

  • 已将 EMR S3 Dist CP 升级到版本 2.17.0

  • 已将 EMR Secret Agent 升级到版本 1.7.0

  • 已将 Flink 升级到版本 1.11.2

  • 已将 Hadoop 升级到版本 2.10.1-amzn-0

  • 已将 Hive 升级到版本 2.3.7-amzn-3

  • 已将 Hue 升级到版本 4.8.0

  • 已将 MXNet 升级到版本 1.7.0

  • 已将 OpenCV 升级到版本 4.4.0

  • 已将 Presto 升级到版本 0.240.1-amzn-0

  • 已将 Spark 升级到版本 2.4.7-amzn-0

  • 已将 TensorFlow 升级到版本 2.3.1

更改、增强和解决的问题

新功能

  • 实例元数据服务 (IMDS) V2 支持状态:Amazon EMR 5.23.1、5.27.1 和 5.32 或更高版本的组件使用 IMDSv2 进行所有 IMDS 调用。对于应用程序代码中的 IMDS 调用,您可以同时使用 IMDSv1 和 IMDSv2,或者配置 IMDS 只使用 IMDSv2 以增加安全性。对于其他 5.x EMR 版本,禁用 IMDSv1 会导致集群启动失败。

  • 从 Amazon EMR 5.32.0 开始,您可以启动与 Apache Ranger 本机集成的集群。Apache Ranger 是一个开源框架,用于在 Hadoop 平台上启用、监视和管理全面的数据安全功能。有关更多信息,请参阅 Apache Ranger。借助本机集成,您可以使用自己的 Apache Ranger 在 Amazon EMR 上实施精细的数据访问控制。请参阅 Amazon EMR 版本指南中的将 Amazon EMR 与 Apache Ranger 集成

  • Amazon EMR 版本 5.32.0 支持 Amazon EMR on EKS。有关 EMR on EKS 使用入门的更多详细信息,请参阅什么是 Amazon EMR on EKS

  • Amazon EMR 版本 5.32.0 支持 Amazon EMR Studio(预览版)。有关 EMR Studio 使用入门的更多详细信息,请参阅 Amazon EMR Studio(预览版)

  • 限定范围的托管策略:为符合 AWS 最佳实践,Amazon EMR 已推出 v2 EMR 限定范围的默认托管策略作为将弃用的策略的替代。请参阅 Amazon EMR 托管策略

已知问题

  • Lower "Max open files" limit on older AL2. Amazon EMR releases: emr-5.30.x, emr-5.31.0, emr-5.32.0, emr-6.0.0, emr-6.1.0, and emr-6.2.0 are based on older versions of Amazon Linux 2 (AL2), which have a lower ulimit setting for “Max open files” when EMR clusters are created with the default AMI. The lower open file limit causes a "Too many open files" error when submitting Spark job. In the impacted EMR releases, the Amazon EMR default AMI has a default ulimit setting of 4096 for "Max open files," which is lower than the 65536 file limit in the latest Amazon Linux 2 AMI. The lower ulimit setting for "Max open files" causes Spark job failure when the Spark driver and executor try to open more than 4096 files. To fix the issue, Amazon EMR has a bootstrap action (BA) script that adjusts the ulimit setting at cluster creation. Amazon EMR releases 6.3.0 and 5.33.0 will include a permanent fix with a higher "Max open files" setting.

    The following workaround for this issue lets you to explicitly set the instance-controller ulimit to a maximum of 65536 files.

    Explicitly set a ulimit from the command line

    1. Edit /etc/systemd/system/instance-controller.service to add the following parameters to Service section.

      LimitNOFILE=65536

      LimitNPROC=65536

    2. Restart InstanceController

      $ sudo systemctl daemon-reload

      $ sudo systemctl restart instance-controller

    Set a ulimit using bootstrap action (BA)

    You can also use a bootstrap action (BA) script to configure the instance-controller ulimit to 65536 files at cluster creation.

    #!/bin/bash for user in hadoop spark hive; do sudo tee /etc/security/limits.d/$user.conf << EOF $user - nofile 65536 $user - nproc 65536 EOF done for proc in instancecontroller logpusher; do sudo mkdir -p /etc/systemd/system/$proc.service.d/ sudo tee /etc/systemd/system/$proc.service.d/override.conf << EOF [Service] LimitNOFILE=65536 LimitNPROC=65536 EOF pid=$(pgrep -f aws157.$proc.Main) sudo prlimit --pid $pid --nofile=65535:65535 --nproc=65535:65535 done sudo systemctl daemon-reload
  • 重要

    运行 Amazon Linux 或 Amazon Linux 2 AMI(Amazon Linux 系统映像)的 Amazon EMR 集群使用默认的 Amazon Linux 行为,而不会自动下载和安装要求重新启动的重要和关键内核更新。这与运行默认 Amazon Linux AMI 的其他 Amazon EC2 实例的行为相同。如果 EMR 版本发布后,要求重新启动的新 Amazon Linux 软件更新(如内核、NVIDIA 和 CUDA 更新)可用,则运行默认 AMI 的 EMR 集群实例不会自动下载并安装这些更新。要获取内核更新,您可以自定义 Amazon EMR AMI使用最新的 Amazon Linux AMI

  • 目前,GovCloud 区域不支持通过控制台创建指定 AWS Ranger 集成选项的安全配置。可以通过 CLI 完成安全配置。请参阅 Amazon EMR 管理指南中的创建 EMR 安全配置