新增功能
本页介绍了 Amazon EMR 6.x 和 Amazon EMR 5.x 最新发行版中的更改和可用功能。Amazon EMR 发行版 6.9.0 页面和 Amazon EMR 发行版 5.36.0 页面上也提供了这些发布说明,以及应用程序版本、组件版本和每个发行版的可用配置分类。
订阅 RSS 源,通过 https://docs.amazonaws.cn/emr/latest/ReleaseGuide/amazon-emr-release-notes.rss 获取 Amazon EMR 发布说明,以便在新的 Amazon EMR 发行版可用时接收更新。
有关早期发行版的发布说明,请参阅 发布说明的 Amazon EMR 存档。
Amazon EMR 发行版现在使用 Amazon 签名版本 4(SigV4)对发送到 Amazon S3 的请求进行身份验证。我们建议您使用支持 SigV4 的 Amazon EMR 发行版,这样您可以访问新的 S3 存储桶,避免工作负载中断。有关更多信息和支持 SigV4 的 Amazon EMR 发行版列表,请参阅 Amazon EMR 和 Amazon 签名版本 4。
Amazon EMR 6.9.0(6.x 系列的最新发行版)
从初始发布日期的第一个区域开始,新的 Amazon EMR 发行版将在几天内陆续在不同区域提供。在此期间,您所在区域可能无法提供最新发行版。
以下发布说明包括有关 Amazon EMR 发行版 6.9.0 的信息。更改与 Amazon EMR 发行版 6.8.0 有关。有关发布时间表的信息,请参阅更改日志。
新功能
Amazon EMR 发行版 6.9.0 支持 Apache Spark RAPIDS 22.08.0、Apache Hudi 0.12.1、Apache Iceberg 0.14.1、Trino 398 和 Tez 0.10.2。
Amazon EMR 发行版 6.9.0 包括一个新的开源应用程序,Delta Lake 2.1.0。
Amazon EMR 发行版 6.9.0 及更高版本包含适用于 Apache Spark 的 Amazon Redshift 集成。本地集成之前是一种开源工具,现在是 Spark 连接器,您可以将其用于构建 Apache Spark 应用程序,这些应用程序可在 Amazon Redshift 和 Amazon Redshift Serverless 中读取和写入数据。有关更多信息,请参阅将适用于 Apache Spark 的 Amazon Redshift 集成与 Amazon EMR 结合使用。
Amazon EMR 发行版 6.9.0 增加了对在集群缩减期间将日志存档到 Amazon S3 的支持。之前,您只能在集群终止期间将日志文件存档到 Amazon S3。这项新功能可确保即使在节点终止后,集群上生成的日志文件仍保留在 Amazon S3 上。有关更多信息,请参阅配置集群日志记录和调试。
为了支持长时间运行的查询,Trino 现在包括容错执行机制。容错执行通过重试失败的查询或其组件任务来减少查询失败。有关更多信息,请参阅Trino 中的容错执行。
您可以在 Amazon EMR 上使用 Apache Flink 对 Apache Hive 表或任何 Flink 表源(例如 Iceberg、Kinesis 或 Kafka)的元数据进行统一的
BATCH
和STREAM
处理。您可以使用 Amazon Web Services Management Console、Amazon CLI 或 Amazon EMR API 指定 Amazon Glue 数据目录作为 Flink 的元存储。有关更多信息,请参阅配置 Flink。现在,您可以在 EC2 集群上的 Amazon EMR 上使用 Amazon SageMaker Studio,为 Apache Spark、Apache Hive 和 Presto 查询指定 Amazon Identity and Access Management(IAM)运行时角色和基于 Amazon Lake Formation 的访问控制。有关更多信息,请参阅为 Amazon EMR 步骤配置运行时角色。
已知问题
对于 Amazon EMR 发行版 6.9.0,Trino 不适用于为 Apache Ranger 启用的集群。如果您需要将 Trino 与 Ranger 结合使用,请联系 Amazon Web Services Support
。 如果您使用适用于 Apache Spark 的 Amazon Redshift 集成,并且具有 Parquet 格式的时间、timetz、时间戳或 timestamptz(精度为微秒),连接器会将时间值舍入为最接近的毫秒值。解决方法是使用文本卸载格式
unload_s3_format
参数。当您将 Spark 与 Hive 分区位置格式化结合使用以读取 Amazon S3 中的数据,并在 Amazon EMR 版本 5.30.0 至 5.36.0 以及 6.2.0 至 6.9.0 上运行 Spark 时,可能会遇到导致集群无法正确读取数据的问题。如果您的分区具有以下所有特征,会发生这种情况:
-
从同一个表扫描两个或多个分区。
-
至少有一个分区目录路径是至少一个其他分区目录路径的前缀,例如,
s3://bucket/table/p=a
是s3://bucket/table/p=a b
的前缀。 -
另一个分区目录中前缀后面的第一个字符的 UTF-8 值小于
/
字符 (U+002F)。例如,在s3://bucket/table/p=a b
中,a 和 b 之间出现的空格字符 (U+0020) 就属于此类。请注意,还有其他 14 个非控制字符:!“#$%&‘()*+,-
。有关更多信息,请参阅 UTF-8 encoding table and Unicode characters(UTF-8 编码表和 Unicode 字符)。
解决方法是在
spark-defaults
分类中将spark.sql.sources.fastS3PartitionDiscovery.enabled
配置设置为false
。-
从 Amazon SageMaker Studio 连接到 Amazon EMR 集群可能会间歇性失败,并显示 403 Forbidden(403 禁止访问)响应代码。如果在集群上设置 IAM 角色的时间超过 60 秒,就会发生此错误。解决方法是安装 Amazon EMR 补丁以启用重试,并将超时增加到至少 300 秒。启动集群时,按照以下步骤应用引导操作。
使用以下 URI 从 Amazon S3 下载引导脚本和 RPM 文件。将
regionName
替换为您计划启动集群的 Amazon Web Services 区域。s3://emr-data-access-control-
regionName
/customer-bootstrap-actions/gcsc/replace-rpms.sh s3://emr-data-access-control-regionName
/customer-bootstrap-actions/gcsc/emr-secret-agent-1.18.0-SNAPSHOT20221121212949.noarch.rpm将上一步中的文件上传到您自己的 Amazon S3 存储桶中。存储桶必须位于您计划启动集群的同一 Amazon Web Services 区域。
启动集群时,执行以下引导操作。将
bootstrap_URI
和RPM_URI
替换为来自 Amazon S3 的相应 URI。--bootstrap-actions "Path=
bootstrap_URI
,Args=[RPM_URI
]"
在 Amazon EMR 发行版 5.36.0 和 6.6.0 到 6.9.0 中,
SecretAgent
和RecordServer
服务组件可能会因为 Log4j2 属性中的文件名模式配置不正确而出现日志数据丢失的情况。错误的配置导致组件每天只生成一个日志文件。当应用轮换策略时,它会重写现有文件,而不是按预期生成新的日志文件。应变方法是使用引导操作每小时生成一次日志文件,并在文件名中附加一个自动增量的整数来处理轮换。对于 Amazon EMR 发行版 6.6.0 到 6.9.0,启动集群时,请执行以下引导操作。
‑‑bootstrap‑actions "Path=s3://emr-data-access-control-us-east-1/customer-bootstrap-actions/log-rotation-emr-6x/replace-puppet.sh,Args=[]"
对于 Amazon EMR 发行版 5.36.0,启动集群时,请执行以下引导操作。
‑‑bootstrap‑actions "Path=s3://emr-data-access-control-us-east-1/customer-bootstrap-actions/log-rotation-emr-5x/replace-puppet.sh,Args=[]"
-
Apache Flink 提供 Native S3 FileSystem 和 Hadoop FileSystem 连接器,允许应用程序创建 FileSink 并将数据写入 Amazon S3。此 FileSink 失败并出现以下两个异常之一。
java.lang.UnsupportedOperationException: Recoverable writers on Hadoop are only supported for HDFS
Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.io.retry.RetryPolicies.retryOtherThanRemoteAndSaslException(Lorg/apache/hadoop/io/retry/RetryPolicy;Ljava/util/Map;)Lorg/apache/hadoop/io/retry/RetryPolicy; at org.apache.hadoop.yarn.client.RMProxy.createRetryPolicy(RMProxy.java:302) ~[hadoop-yarn-common-3.3.3-amzn-0.jar:?]
解决方法是安装 Amazon EMR 补丁,该补丁可以修复 Flink 中的上述问题。要在启动集群时应用引导操作,请完成以下步骤。
-
将 flink-rpm
下载到 Amazon S3 存储桶中。您的 RPM 路径是 s3://
。DOC-EXAMPLE-BUCKET
/rpms/flink/ -
使用以下 URI 从 Amazon S3 下载引导脚本和 RPM 文件。将
替换为您计划启动集群的 Amazon Web Services 区域。regionName
s3://emr-data-access-control-
regionName
/customer-bootstrap-actions/gcsc/replace-rpms.sh
-
更改、增强和解决的问题
对于 Amazon EMR 发行版 6.9.0 及更高版本,Amazon EMR 安装的所有使用 Log4j 库的组件都使用 Log4j 版本 2.17.1 或更高版本。
-
在 Amazon EMR 版本 6.6.0、6.7.0 和 6.8.0 上将 DynamoDB 连接器与 Spark 结合使用时,即使输入拆分引用了非空数据,表中的所有读取都会返回空结果。Amazon EMR 发行版 6.9.0 修复了此问题。
在使用 Spark SQL 读取数据时,Amazon EMR 6.9.0 添加对基于 Lake Formation 的访问控制及 Apache Hudi 的有限支持。支持针对使用 Spark SQL 的 SELECT 查询,并且仅限于列级访问控制。有关更多信息,请参阅 Hudi 和 Lake Formation。
当您使用 Amazon EMR 6.9.0 创建启用了节点标签
的 Hadoop 集群时,YARN 指标 API 会返回所有分区的聚合信息,而不是默认分区。有关更多信息,请参阅 YARN-11414 。 在 Amazon EMR 版本 6.6.0 及更高版本上,当您通过默认 Amazon Linux (AL) AMI 选项启动新的 Amazon EMR 集群时,Amazon EMR 将会自动使用最新的 Amazon Linux AMI。在较早版本中,Amazon EMR 不会在初始版本之后更新 Amazon Linux AMI。请参阅在 Amazon EMR 使用默认的 Amazon Linux AMI。
OsReleaseLabel(Amazon Linux 版本) Amazon Linux 内核版本 可用日期 支持的区域 2.0.20221210.1 4.14.301 2023 年 1 月 12 日 us‑east‑1
,us‑east‑2
,us‑west‑1
,us‑west‑2
,eu‑north‑1
,eu‑west‑1
,eu‑west‑2
,eu‑west‑3
,eu‑central‑1
,eu‑south‑1
,ap‑east‑1
,ap‑south‑1
,ap‑southeast‑3
,ap‑northeast‑1
,ap‑northeast‑2
,ap‑northeast‑3
,ap‑southeast‑1
,ap‑southeast‑2
,af‑south‑1
,sa‑east‑1
,me‑south‑1
,ca‑central‑1
2.0.20221103.3 4.14.296 2022 年 12 月 5 日 us-east-1
,us-east-2
,us-west-1
,us-west-2
,eu-north-1
,eu-west-1
,eu-west-2
,eu-west-3
,eu-central-1
,eu-south-1
,ap-east-1
,ap-south-1
,ap-southeast-3
,ap-northeast-1
,ap-northeast-2
,ap-northeast-3
,ap-southeast-1
,ap-southeast-2
,af-south-1
,sa-east-1
,me-south-1
,ca-central-1
Amazon EMR 5.36.0(5.x 系列的最新发行版)
从初始发布日期的第一个区域开始,新的 Amazon EMR 发行版将在几天内陆续在不同区域提供。在此期间,您所在区域可能无法提供最新发行版。
以下发布说明包括有关 Amazon EMR 发行版 5.36.0 的信息。更改与 5.35.0 有关。
首次发布日期:2022 年 6 月 15 日
新功能
Amazon EMR 版本 5.36.0 在启用 Apache Ranger 的集群上,通过 Apache Spark 增加了对数据定义语言(DDL)的支持。这样,您就能够使用 Apache Ranger 管理操作的访问权限,例如创建、更改和删除 Amazon EMR 集群中的数据库和表。
Amazon EMR 5.36.0 支持使用默认 AMI 为集群自动更新 Amazon Linux。请参阅在 Amazon EMR 使用默认的 Amazon Linux AMI。
OsReleaseLabel(Amazon Linux 版本) Amazon Linux 内核版本 可用日期 支持的区域 2.0.20221210.1 4.14.301 2023 年 1 月 12 日 us‑east‑1
,us‑east‑2
,us‑west‑1
,us‑west‑2
,eu‑north‑1
,eu‑west‑1
,eu‑west‑2
,eu‑west‑3
,eu‑central‑1
,eu‑south‑1
,ap‑east‑1
,ap‑south‑1
,ap‑southeast‑3
,ap‑northeast‑1
,ap‑northeast‑2
,ap‑northeast‑3
,ap‑southeast‑1
,ap‑southeast‑2
,af‑south‑1
,sa‑east‑1
,me‑south‑1
,ca‑central‑1
2.0.20221103.3 4.14.296 2022 年 12 月 5 日 us‑east‑1
,us‑east‑2
,us‑west‑1
,us‑west‑2
,eu‑north‑1
,eu‑west‑1
,eu‑west‑2
,eu‑west‑3
,eu‑central‑1
,eu‑south‑1
,ap‑east‑1
,ap‑south‑1
,ap‑southeast‑3
,ap‑northeast‑1
,ap‑northeast‑2
,ap‑northeast‑3
,ap‑southeast‑1
,ap‑southeast‑2
,af‑south‑1
,sa‑east‑1
,me‑south‑1
,ca‑central‑1
2.0.20221004.0 4.14.294 2022 年 11 月 2 日 us‑east‑1
,us‑east‑2
,us‑west‑1
,us‑west‑2
,eu‑north‑1
,eu‑west‑1
,eu‑west‑2
,eu‑west‑3
,eu‑central‑1
,eu‑south‑1
,ap‑east‑1
,ap‑south‑1
,ap‑southeast‑3
,ap‑northeast‑1
,ap‑northeast‑2
,ap‑northeast‑3
,ap‑southeast‑1
,ap‑southeast‑2
,af‑south‑1
,sa‑east‑1
,me‑south‑1
,ca‑central‑1
2.0.20220912.1 4.14.291 2022 年 10 月 7 日 us‑east‑1
,us‑east‑2
,us‑west‑1
,us‑west‑2
,eu‑north‑1
,eu‑west‑1
,eu‑west‑2
,eu‑west‑3
,eu‑central‑1
,eu‑south‑1
,ap‑east‑1
,ap‑south‑1
,ap‑southeast‑3
,ap‑northeast‑1
,ap‑northeast‑2
,ap‑northeast‑3
,ap‑southeast‑1
,ap‑southeast‑2
,af‑south‑1
,sa‑east‑1
,me‑south‑1
,ca‑central‑1
2.0.20220719.0 4.14.287 2022 年 8 月 10 日 us‑west‑1
,eu‑west‑3
,eu‑north‑1
,eu‑central‑1
,ap‑south‑1
,me‑south‑1
2.0.20220426.0 4.14.281 2022 年 6 月 14 日 us‑east‑1
,us‑east‑2
,us‑west‑1
,us‑west‑2
,eu‑north‑1
,eu‑west‑1
,eu‑west‑2
,eu‑west‑3
,eu‑central‑1
,eu‑south‑1
,ap‑east‑1
,ap‑south‑1
,ap‑southeast‑3
,ap‑northeast‑1
,ap‑northeast‑2
,ap‑northeast‑3
,ap‑southeast‑1
,ap‑southeast‑2
,af‑south‑1
,sa‑east‑1
,me‑south‑1
,ca‑central‑1
更改、增强和解决的问题
Amazon EMR 5.36.0 升级现在支持:aws-sdk 1.12.206、Hadoop 2.10.1-amzn-4、Hive 2.3.9-amzn-2、Hudi 0.10.1-amzn-1、Spark 2.4.8-amzn-2、Presto 0.267-amzn-1、Amazon Glue 连接器 1.18.0、EMRFS 2.51.0。
已知问题
当您将 Spark 与 Hive 分区位置格式化结合使用以读取 Amazon S3 中的数据,并在 Amazon EMR 版本 5.30.0 至 5.36.0 以及 6.2.0 至 6.9.0 上运行 Spark 时,可能会遇到导致集群无法正确读取数据的问题。如果您的分区具有以下所有特征,会发生这种情况:
-
从同一个表扫描两个或多个分区。
-
至少有一个分区目录路径是至少一个其他分区目录路径的前缀,例如,
s3://bucket/table/p=a
是s3://bucket/table/p=a b
的前缀。 -
另一个分区目录中前缀后面的第一个字符的 UTF-8 值小于
/
字符 (U+002F)。例如,在s3://bucket/table/p=a b
中,a 和 b 之间出现的空格字符 (U+0020) 就属于此类。请注意,还有其他 14 个非控制字符:!“#$%&‘()*+,-
。有关更多信息,请参阅 UTF-8 encoding table and Unicode characters(UTF-8 编码表和 Unicode 字符)。
解决方法是在
spark-defaults
分类中将spark.sql.sources.fastS3PartitionDiscovery.enabled
配置设置为false
。-
在 Amazon EMR 发行版 5.36.0 和 6.6.0 到 6.9.0 中,
SecretAgent
和RecordServer
服务组件可能会因为 Log4j2 属性中的文件名模式配置不正确而出现日志数据丢失的情况。错误的配置导致组件每天只生成一个日志文件。当应用轮换策略时,它会重写现有文件,而不是按预期生成新的日志文件。应变方法是使用引导操作每小时生成一次日志文件,并在文件名中附加一个自动增量的整数来处理轮换。对于 Amazon EMR 发行版 6.6.0 到 6.9.0,启动集群时,请执行以下引导操作。
‑‑bootstrap‑actions "Path=s3://emr-data-access-control-us-east-1/customer-bootstrap-actions/log-rotation-emr-6x/replace-puppet.sh,Args=[]"
对于 Amazon EMR 发行版 5.36.0,启动集群时,请执行以下引导操作。
‑‑bootstrap‑actions "Path=s3://emr-data-access-control-us-east-1/customer-bootstrap-actions/log-rotation-emr-5x/replace-puppet.sh,Args=[]"
Amazon EMR 和 Amazon 签名版本 4
Amazon EMR 发行版现在使用 Amazon 签名版本 4(SigV4)对发送到 Amazon S3 的请求进行身份验证。2020 年 6 月 24 日之后在 Amazon S3 中创建的存储桶不支持由签名版本 2(SigV2)签名的请求。2020 年 6 月 24 日或之前创建的存储桶将继续支持 SigV2。建议您迁移到支持 SigV4 的 Amazon EMR 发行版,这样您可以访问新的 S3 存储桶,避免工作负载中断。
如果您使用的是 Amazon EMR 中包含的应用程序,例如 Apache Spark、Apache Hive 和 Presto,则无需更改应用程序代码即可使用 SigV4。如果您使用的是 Amazon EMR 中未包含的自定义应用程序,则可能需要更新代码才能使用 SigV4。有关更多信息,请参阅《Amazon S3 用户指南》中的从签名版本 2 转向签名版本 4。
以下 Amazon EMR 发行版支持 SigV4: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、and emr-5.21.2、and emr-5.22.0 及更高版本。