亚马逊 EMR 6.x 版本 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

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

亚马逊 EMR 6.x 版本

下方的每个选项卡列出了每个 Amazon EMR 6.x 发行版中可用的应用程序版本、发布说明、组件版本和配置分类。

亚马逊 EMR 6.x 系列支持 Apache Hadoop 3。有关每个版本中的应用程序版本的综合图,请参阅Amazon EMR 6.x 版本中的应用程序版本 (PNG)

从初始发布日期的第一个区域开始,新的 Amazon EMR 发行版本将在几天内在不同区域提供。在此期间,您所在地区可能无法提供最新版本。

6.3.0 (Latest)

6.3.0 应用程序版本

此版本支持以下应用程序:JupyterEnterpriseGatewayFlinkGangliaHadoopHBaseHCatalogHiveHueJupyterHubLivyMXNetOoziePhoenixPigPrestoPrestoSQLSparkSqoopTensorFlowTezZeppelin, 和ZooKeeper

下图描述了此版本的中提供的应用程序版本以及前四个 Amazon EMR 发布版本中的应用程序版本。

有关每个 Amazon EMR 版本的的全面历史记录,请参见下面的示意图:

6.3.0 发布说明

以下发布说明包括有关亚马逊 EMR 版本 6.3.0 的信息。更改是相对于 6.2.0 而言。

首次发布日期:2021 年 5 月 12 日

支持的应用程序

  • Amazon SDK for Java版本 1.11.977

  • CloudWatch 水槽版本 2.1.0

  • DynamoDB 连接器 4.16.0 版本

  • EMRFS 版本 2.46.0

  • 亚马逊 EMR 好东西版本 3.2.0

  • 亚马逊 EMR Kinesis 连接器 3.5.0 版

  • Amazon EMR 记录服务器版本 2.0.0

  • Amazon EMR 脚本 2.5.0

  • Flink 版本 1.12.1

  • Ganglia 版本 3.7.2

  • AmazonGlue 合 Hive Metastore 客户端版本 3.2.0

  • Hadoop 版本 3.2.1-amzn-3

  • HBase 版本 2.2.6-amzn-1

  • HBase 操作员工具 1.0.0

  • HCatalog 版本 3.1.2-amzn-0

  • Hive 版本 3.1.2-amzn-4

  • Hudi 版本 0.7.0-amzn-0

  • Hue 版本 4.9.0

  • Java JDK 版本科雷特托 8.282.08.1(构建 1.8.0_282-b08)

  • JupyterHub 版本 1.2.0

  • Livy 版本 0.7.0-incubating

  • MxNet 1.7.0 版本

  • Oozie 版本 5.2.1

  • Phoenix 版本 5.0.0

  • Pig 版本 0.17.0

  • Presto 版本 0.245.1-amzn-0

  • PrestoSQL 版本 350

  • 阿帕奇游侠 KMS (多主机透明加密) 版本 2.0.0

  • amzn-0

  • 游侠-S3 插件 1.1.0

  • SageMaker Spark SDK 版本 1.4.1

  • 斯卡拉版本 2.12.10(OpenJDK 64 位服务器虚拟机,Java 1.8.0_282)

  • 火花版本 3.1.1-amzn-0

  • S火K-Red-Zrap 0.4.1

  • Sqoop 版本 1.4.7

  • TensorFlow 版本 2.4.1

  • tez 版本 0.9.2

  • Zeppelin 版本 0.9.0

  • Zookeeper 版本 3.4.14

  • 连接器和驱动器:DynamoDB 连接器 4.16.0

新功能

  • 借助 Amazon EMR 6.3.0,您可以启动与 Apache 游侠本地集成的集群。Apache Ranger 是一个开源框架,用于跨 Hadoop 平台启用、监控和管理全面的数据安全。有关更多信息,请参阅 。Apache Renger。通过本机集成,您可以携带自己的 Apache Ranger,在 Amazon EMR 上强制实施细粒度的数据访问控制。请参阅将亚马逊 EMR 与阿帕奇游侠集成,请参阅 Amazon EMR 管理指南。

  • 适用于的托管策略:对齐Amazon最佳实践中,Amazon EMR 引入了 v2 EMR 范围的默认托管策略,作为将弃用的策略的替代品。请参阅Amazon EMR 托管策略

  • 实例元数据服务 (IMDS) V2 支持状态:对于亚马逊 EMR 6.2 或更高版本,亚马逊 EMR 组件对所有 IMDS 呼叫都使用 IMDSv2。对于应用程序代码中的 IMDS 调用,您可以同时使用 IMDSv1 和 IMDSv2,或者将 IMDS 配置为仅使用 IMDSv2 以提高安全性。如果您在早期 Amazon EMR 6.x 版本中禁用 IMDSv1,则会导致群集启动失败。

更改、增强和已解决的问题

  • 文件输出提交器默认算法已从 v2 算法更改为开源 Spark 3.1 中的 v1 算法。有关更多信息,请参阅。阿帕奇火花 JIRA 门票。

  • 亚马逊 EMR 恢复到 v2 算法,这是先前 Amazon EMR 6.x 版本中使用的默认算法,以防止性能回归。要恢复开源 Spark 3.1 行为,请将spark.hadoop.mapreduce.fileoutputcommitter.algorithm.version1。开源 Spark 进行了此更改,因为文件输出提交器算法 v2 中的任务提交不是原子的,在某些情况下可能会导致输出数据正确性问题。但是,算法 v1 中的任务提交也不是原子的。在某些情况下,任务提交包括在重命名之前执行的删除操作。这可能会导致无提示的数据正确性问题。

已知问题

  • 对于亚马逊 EMR 6.3.0 和 6.2.0 私有子网集群,您不能访问 Ganglia Web 用户界面。您将收到 “访问被拒绝 (403)” 错误。其他 Web 用户界面,如火花、色相、JupyterHub、齐柏林、利维和 Tez 工作正常。公有子网群集上的 Ganglia Web UI 访问也正常工作。要解决该问题,请在主节点上重新启动 httpd 服务sudo systemctl restart httpd

  • 何时Amazon已启用 Glue 数据目录,使用 Spark 访问Amazon具有空字符串位置 URI 的 Glue 数据库可能会失败。这种情况发生在早期的亚马逊 EMR 版本中,但 SPARK-31709 (https://issues.apache.org/jira/browse/SPARK-31709) 使其适用于更多案例。例如,当在默认Amazon位置 URI 为空字符串的 Glue 数据库,spark.sql("CREATE TABLE mytest (key string) location '/table_path';")失败,并显示消息 “无法从空字符串创建路径”。要变通解决此问题,请手动设置AmazonGlue 合数据库,然后使用 Spark 在这些数据库中创建表。

  • 在亚马逊 EMR 6.3.0 中,PrestoSQL 已从版本 343 升级到版本 350。有两个与此版本更改相关的开放源代码安全相关的更改。基于文件的目录访问控制从denyallow当未定义表、架构或会话属性规则时。此外,基于文件的系统访问控制更改为支持没有定义目录规则的文件。在这种情况下,允许对目录的所有访问。

    有关更多信息,请参阅 。第 344 号发布 (2020 年 10 月 9 日)

  • 请注意,每个人都可以读取 Hadoop 用户目录(/home/hadoop)。它具有 Unix 755(drwxr-xr-x)目录权限,允许像 Hive 这样的框架进行读取访问。您可以将文件放在 /home/hadoop 及其子目录中,但请注意这些目录的权限以保护敏感信息。

  • 较早的 AL2 上的 “最大打开文件” 限制较低。 亚马逊 EMR 版本:EMR 5.30.x、EMR-5.31.0、EMR-5.32.0、EMR-6.0.0、EMR-6.1.0 和 EMR-6.2.0 基于旧版本的 OFAMZON Linux 2 (AL2),当使用默认 AMI 创建 EMR 集群时,这些版本的下限设置为 “最大打开文件”。提交 Spark 作业时,打开的文件下限会导致 “打开的文件过多” 错误。在受影响的 EMR 版本中,亚马逊 EMR 默认 AMI 对于 “最大打开文件” 的默认限制设置为 4096,低于最新亚马逊 Linux 2 AMI 中的 65536 文件限制。当 Spark 驱动程序和执行程序尝试打开超过 4096 个文件时,“最大打开文件” 的下限设置会导致 Spark 作业失败。要修复此问题,Amazon EMR 有一个引导操作 (BA) 脚本,用于在创建集群时调整 ulimit 设置。亚马逊 EMR 6.3.0 和 5.33.0 版将包括一个具有更高 “最大打开文件” 设置的永久修复程序。

    此问题的以下解决方法允许您显式将实例控制器 ulimit 设置为最多 65536 文件。

    从命令行显式设置 ulimit

    1. 编辑/etc/systemd/system/instance-controller.service将以下参数添加到服务部分。

      LimitNOFILE=65536

      LimitNPROC=65536

    2. 重新启动实例 Controller

      $ sudo systemctl daemon-reload

      $ sudo systemctl restart instance-controller

    使用引导操作设置 u限制 (BA)

    您还可以使用引导操作 (BA) 脚本在群集创建时将实例控制器 ulimit 配置为 65536 个文件。

    #!/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
  • 重要

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

6.3.0 组件版本

下面列出了 Amazon EMR 随此发布版本一起安装的组件。一些组件作为大数据应用程序包的一部分安装。其他组件是独有的,并且已为系统流程和功能安装这些组件。它们通常以 emraws 开头。最新的 Amazon EMR 发布版本中的大数据应用程序包通常是在社区中找到的最新版本。我们尽快在中提供社区发布版本。

Amazon EMR 中的某些组件与社区版本不同。这些组件具有以下形式的 CommunityVersion-amzn-EmrVersion 的版本标签。EmrVersion 从 0 开始。例如,如果开源社区组件名为myapp-component已对版本 2.2 进行三次修改以包含在不同的 Amazon EMR 发行版中,其发布版本将列出为2.2-amzn-2

组件 Version 说明
aws-sagemaker-spark-sdk 1.4.1 Amazon SageMaker Spark 开发工具包
emr-ddb 4.16.0 适用于 Hadoop 生态系统应用程序的 Amazon DynamoDB 连接器。
emr-goodies 3.2.0 适用于 Hadoop 生态系统的方便易用的库。
emr-kinesis 3.5.0 适用于 Hadoop 生态系统应用程序的 Amazon Kinesis 连接器。
emr-notebook-env 1.2.0 适用于 emr 笔记本的 Conda env
emr-s3-dist-cp 2.18.0 针对 Amazon S3 优化的分布式复制应用程序。
emr-s3-select 2.1.0 EMR S3 Select 连接器
emrfs 2.46.0 适用于 Hadoop 生态系统应用程序的 Amazon S3 连接器。
flink-client 1.12.1 Apache Flink 命令行客户端脚本和应用程序。
弗林克-作业管理器配置 1.12.1 管理资源在 EMR 节点上的 Apache 弗林克 JobManager.
ganglia-monitor 3.7.2 适用于 Hadoop 生态系统应用程序的嵌入式 Ganglia 代理以及 Ganglia 监控代理。
ganglia-metadata-collector 3.7.2 用于从 Ganglia 监控代理中聚合指标的 Ganglia 元数据收集器。
ganglia-web 3.7.1 用于查看由 Ganglia 元数据收集器收集的指标的 Web 应用程序。
hadoop-client 3.2.1-amzn-3 Hadoop 命令行客户端,如“hdfs”、“hadoop”或“yarn”。
hadoop-hdfs-datanode 3.2.1-amzn-3 用于存储数据块的 HDFS 节点级服务。
hadoop-hdfs-library 3.2.1-amzn-3 HDFS 命令行客户端和库
hadoop-hdfs-namenode 3.2.1-amzn-3 用于跟踪文件名和数据块位置的 HDFS 服务。
hadoop-hdfs-journalnode 3.2.1-amzn-3 用于管理 HA 集群上的 Hadoop 文件系统日志的 HDFS 服务。
hadoop-httpfs-server 3.2.1-amzn-3 用于 HDFS 操作的 HTTP 终端节点。
hadoop-kms-server 3.2.1-amzn-3 基于 Hadoop 的 KeyProvider API 的加密密钥管理服务器。
hadoop-mapred 3.2.1-amzn-3 用于运行 MapReduce 应用程序的 MapReduce 执行引擎库。
hadoop-yarn-nodemanager 3.2.1-amzn-3 用于管理单个节点上的容器的 YARN 服务。
hadoop-yarn-resourcemanager 3.2.1-amzn-3 用于分配和管理群集资源与分布式应用程序的 YARN 服务。
hadoop-yarn-timeline-server 3.2.1-amzn-3 用于检索 YARN 应用程序的当前信息和历史信息的服务。
hbase-hmaster 2.2.6-amzn-1 适用于负责协调区域和执行管理命令的 HBase 集群的服务。
hbase-region-server 2.2.6-amzn-1 用于服务于一个或多个 HBase 区域的服务。
hbase-client 2.2.6-amzn-1 HBase 命令行客户端。
hbase-rest-server 2.2.6-amzn-1 用于向 HBase 提供 RESTful HTTP 终端节点的服务。
hbase-thrift-server 2.2.6-amzn-1 用于向 HBase 提供 Thrift 终端节点的服务。
hcatalog-client 3.1.2-amzn-4 用于操作 hcatalog-server 的“hcat”命令行客户端。
hcatalog-server 3.1.2-amzn-4 用于为分布式应用程序提供 HCatalog、表和存储管理层的服务。
hcatalog-webhcat-server 3.1.2-amzn-4 用于向 HCatalog 提供 REST 接口的 HTTP 终端节点。
hive-client 3.1.2-amzn-4 Hive 命令行客户端。
hive-hbase 3.1.2-amzn-4 Hive-hbase 客户端。
hive-metastore-server 3.1.2-amzn-4 用于访问 Hive 元存储 (一个用于存储 Hadoop 操作中的 SQL 的元数据的语义存储库) 的服务。
hive-server2 3.1.2-amzn-4 用于将 Hive 查询作为 Web 请求接受的服务。
hudi 0.7.0-amzn-0 增量处理框架,以支持低延迟和高效率的数据管道。
hudi-presto 0.7.0-amzn-0 用于运行 Presto 以及 Hudl 的捆绑库。
hudi-prestosql 0.7.0-amzn-0 用于运行 PrestoSQL 以及 HudSql 的捆绑库。
hudi-sparf 0.7.0-amzn-0 用于运行 Spark 以及 Hudi 的捆绑库。
hue-server 4.9.0 用于使用 Hadoop 生态系统应用程序分析数据的 Web 应用程序
jupyterhub 1.2.0 Jupyter 笔记本的多用户服务器
livy-server 0.7.0-incubating 用于与 Apache Spark 交互的 REST 接口
nginx 1.12.1 nginx [引擎 x] 是 HTTP 和反向代理服务器
mxnet 1.7.0 用于深度学习的灵活的、可扩展且高效的库。
mariadb-server 5.5.68+ MariaDB 数据库服务器。
nvidia-cuda 10.1.243 Nvidia 驱动程序和 Cuda 工具包
oozie-client 5.2.1 Oozie 命令行客户端。
oozie-server 5.2.1 用于接受 Oozie 工作流请求的服务。
opencv 4.5.0 开源计算机视觉库。
phoenix-library 5.0.0-HBase-2.0 服务器和客户端的 phoenix 库
phoenix-query-server 5.0.0-HBase-2.0 向 Avatica API 提供 JDBC 访问权限以及协议缓冲区和 JSON 格式访问权限的轻量级服务器
presto-coordinator 0.245.1-amzn-0 用于在 presto-worker 之中接受查询并管理查询的服务。
presto-worker 0.245.1-amzn-0 用于执行查询的各个部分的服务。
presto-client 0.245.1-amzn-0 Presto 命令行客户端,安装在 HA 集群的备用主服务器(未启动 Presto 服务器)上。
prestosq-协调器 350 用于在 prestoql-worker 之中接受查询并管理查询的服务。
prestoq-worker 350 用于执行查询的各个部分的服务。
prestoq-client 350 Presto 命令行客户端,安装在 HA 集群的备用主服务器(未启动 Presto 服务器)上。
pig-client 0.17.0 Pig 命令行客户端。
r 4.0.2 用于统计计算的 R 项目
ranger-kms-server 2.0.0 Apache Ranger 密钥管理系统
spark-client 3.1.1-amzn-0 Spark 命令行客户端。
spark-history-server 3.1.1-amzn-0 用于查看完整的 Spark 应用程序的生命周期的已记录事件的 Web UI。
spark-on-yarn 3.1.1-amzn-0 适用于 YARN 的内存中执行引擎。
spark-yarn-slave 3.1.1-amzn-0 YARN 从属项所需的 Apache Spark 库。
spark-amzn- 0.4.1 Nvidia 火花急流插件,加速阿帕奇火花与 GPU.
sqoop-client 1.4.7 Apache Sqoop 命令行客户端。
tensorflow 2.4.1 适用于高性能数值计算的 TensorFlow 开源软件库。
tez-on-yarn 0.9.2 tez YARN 应用程序和库。
webserver 2.4.41+ Apache HTTP 服务器。
zeppelin-server 0.9.0 支持交互式数据分析的基于 Web 的笔记本电脑。
zookeeper-server 3.4.14 用于维护配置信息、命名、提供分布式同步以及提供组服务的集中式服务。
zookeeper-client 3.4.14 ZooKeeper 命令行客户端。

6.3.0 配置分类

配置分类允许您自定义应用程序。这些通常与应用程序的配置 XML 文件相对应,例如hive-site.xml。有关更多信息,请参阅 配置应用程序

在您为运行的集群中的实例组指定配置时,将发生重新配置操作。EMR 仅为您修改的分类启动重新配置操作。有关更多信息,请参阅 在正在运行的集群中重新配置实例组

EMR-6.3.0 分类
分类 说明 RECONDEGREE

capacity-scheduler

更改 Hadoop 的 capacity-scheduler.xml 文件中的值。

重新启动 ResourceManager 服务。

container-executor

更改 Hadoop YARN 的 container-executor.cfg 文件中的值。

不适用

container-log4j

更改 Hadoop YARN 的 container-log4j.properties 文件中的值。

不适用

core-site

更改 Hadoop 的 core-site.xml 文件中的值。

重新启动 Hadoop HDFS 服务 Namenode、辅助编码、数据编码、ZKFC 和日记节点。重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动 Hadoop KMS、游侠 KMS、Hiveser2、蜂巢 MetaStore、Hadoop Httpfs 和映射历史记录服务器。

码头-conf

更改码头相关设置。

不适用

emrfs-site

更改 EMRFS 设置。

重新启动 Hadoop HDFS 服务 Namenode、辅助编码、数据编码、ZKFC 和日记节点。重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动 HBASE 区域服务器、HBASEmaster、HBASEFT、HBASE 休息服务器 2、配置单 MetaStore、Hadoop Httpfs 和映射历史记录服务器。

flink-conf

更改 flink-conf.yaml 设置。

重新启动 Fink 历史记录服务器。

flink-log4j

更改 Flink log4j.properties 设置。

重新启动 Fink 历史记录服务器。

flink-log4j 会话

更改 Flink log4j-session.properties 设置为 Kubernetesion.properties。

重新启动 Fink 历史记录服务器。

flink-log4j-cli

更改 Flink log4j-cli.properties 设置。

重新启动 Fink 历史记录服务器。

hadoop-env

更改适用于所有 Hadoop 组件的 Hadoop 环境中的值。

重新启动 Hadoop HDFS 服务 Namenode、辅助编码、数据编码、ZKFC 和日记节点。重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动凤凰查询服务器、隐藏服务器 2、配置单 MetaStore 和映射历史记录服务器。

hadoop-log4j

更改 Hadoop 的 log4j.properties 文件中的值。

重新启动 Hadoop HDFS 服务次级数据节点、数据节点和日志节点。重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动 Hadoop KMS、Hadoop Httpfs 和映射历史记录服务器。

hadoop-ssl-server

更改 hadoop ssl 服务器配置

不适用

hadoop-ssl-client

更改 hadoop ssl 客户端配置

不适用

hbase

适用于 Apache HBase 的 Amazon EMR 辅助设置。

自定义 EMR 特定属性。设置 EMRFS 站点和 hbase 站点配置。有关其相关重新启动的信息,请参阅这些

hbase-env

更改 HBase 环境中的值。

重新启动 HBase 服务 RegionServer,HBASE,ThriftServer,REST 服务器。

hbase-log4j

更改 HBase 的 hbase-log4j.properties 文件中的值。

重新启动 HBase 服务 RegionServer,HBASE,ThriftServer,REST 服务器。

hbase-metrics

更改 HBase 的 hadoop-metrics2-hbase.properties 文件中的值。

重新启动 HBase 服务 RegionServer,HBASE,ThriftServer,REST 服务器。

hbase-policy

更改 HBase 的 hbase-policy.xml 文件中的值。

不适用

hbase-site

更改 HBase 的 hbase-site.xml 文件中的值。

重新启动 HBase 服务 RegionServer,HBASE,ThriftServer,REST 服务器。此外,重新启动凤凰 QueryServer。

hdfs-encryption-zones

配置 HDFS 加密区域。

这种分类不应重新配置。

hdfs-env

更改 HDFS 环境中的值。

重新启动 Hadoop HDFS 服务纳米编码、数据执行程序和 ZKFC。

hdfs-site

更改 HDFS 的 hdfs-site.xml 中的值。

重新启动 Hadoop HDFS 服务 Namenode、辅助编码、数据编码、ZKFC 和日记节点。此外,重新启动 Hadoop Httpfs。

hcatalog-env

更改 HCatalog 的环境中的值。

重新启动配置单元目录服务器。

hcatalog-server-jndi

更改 HCatalog 的 jndi.properties 中的值。

重新启动配置单元目录服务器。

hcatalog-server-proto-hive-site

更改 HCatalog 的 proto-hive-site.xml 中的值。

重新启动配置单元目录服务器。

hcatalog-webhcat-env

更改 HCatalog WebHCat 的环境中的值。

重新启动配置单元 WebHCat 服务器。

hcatalog-webhcat-log4j2

更改 HCatalog WebHCat 的 log4j2.properties 中的值。

重新启动配置单元 WebHCat 服务器。

hcatalog-webhcat-site

更改 HCatalog WebHCat 的 webhcat-site.xml 文件中的值。

重新启动配置单元 WebHCat 服务器。

hive

适用于 Apache Hive 的 Amazon EMR 辅助设置。

设置配置以启动 Hive LLAP 服务。

hive-beeline-log4j2

更改 Hive 的 beeline-log4j2.properties 文件中的值。

不适用

hive-parquet-logging

更改 Hive parquet-logging.properties 文件中的值。

不适用

hive-env

更改 Hive 环境中的值。

重新启动节约服务器 2、配置单元存储和配置单元目录服务器。运行配置单元架构 CLI 命令来验证配置单元数据仓。

hive-exec-log4j2

更改 Hive 的 hive-exec-log4j2.properties 文件中的值。

不适用

hive-llap-daemon-log4j2

更改 Hive 的 llap-daemon-log4j2.properties 文件中的值。

不适用

hive-log4j2

更改 Hive 的 hive-log4j2.properties 文件中的值。

不适用

hive-site

更改 Hive 的 hive-site.xml 文件中的值

重新启动节约服务器 2、配置单元存储和配置单元目录服务器。运行配置单元架构 CLI 命令来验证配置单元数据仓。同时重新启动 Oozie 和齐柏林。

hiveserver2-site

更改 Hive Server2 的 hiveserver2-site.xml 文件中的值

不适用

hue-ini

更改 Hue 的 ini 文件中的值

重新启动 Hue。同时激活 Hue 配置覆盖 CLI 命令以获取新配置。

httpfs-env

更改 HTTPFS 环境中的值。

重新启动 Hadoop Httpfs 服务。

httpfs-site

更改 Hadoop 的 httpfs-site.xml 文件中的值。

重新启动 Hadoop Httpfs 服务。

hadoop-kms-acls

更改 Hadoop 的 kms-acls.xml 文件中的值。

不适用

hadoop-kms-env

更改 Hadoop KMS 环境中的值。

重新启动 Hadoop-KMS 服务。

hadoop-kms-log4j

更改 Hadoop 的 kms-log4j.properties 文件中的值。

不适用

hadoop-kms-site

更改 Hadoop 的 kms-site.xml 文件中的值。

重新启动 Hadoop 公里和范围公里服务。

hudi-env

更改 HDFS 环境中的值。

不适用

jupyter-notebook-conf

更改 Jupyter Notebook 的 jupyter_notebook_config.py 文件中的值。

不适用

jupyter-hub-conf

更改 JupyterHubs 的 jupyterhub_config.py 文件中的值。

不适用

jupyter-s3-conf

配置 Jupyter Notebook S3 持久性。

不适用

jupyter-sparkmagic-conf

更改 Sparkmagic 的 config.json 文件中的值。

不适用

livy-conf

更改 Livy 的 livy.conf 文件中的值。

重新启动 Livy 服务器。

livy-env

更改 Livy 环境中的值。

重新启动 Livy 服务器。

livy-log4j

更改 Livy log4j.properties 设置。

重新启动 Livy 服务器。

mapred-env

更改 MapReduce 应用程序的环境中的值。

重新启动 Hadoop 映射-历史记录服务器。

mapred-site

更改 MapReduce 应用程序的 mapred-site.xml 文件中的值。

重新启动 Hadoop 映射-历史记录服务器。

oozie-env

更改 Oozie 的环境中的值。

重新启动 Oozie。

oozie-log4j

更改 Oozie 的 oozie-log4j.properties 文件中的值。

重新启动 Oozie。

oozie-site

更改 Oozie 的 oozie-site.xml 文件中的值。

重新启动 Oozie。

phoenix-hbase-metrics

更改 Phoenix 的 hadoop-metrics2-hbase.properties 文件中的值。

不适用

phoenix-hbase-site

更改 Phoenix 的 hbase-site.xml 文件中的值。

不适用

phoenix-log4j

更改 Phoenix 的 log4j.properties 文件中的值。

重新启动凤凰查询服务器。

phoenix-metrics

更改 Phoenix 的 hadoop-metrics2-phoenix.properties 文件中的值。

不适用

pig-env

更改 Pig 环境中的值。

不适用

pig-properties

更改 Pig 的 pig.properties 文件中的值。

重新启动 Oozie。

pig-log4j

更改 Pig 的 log4j.properties 文件中的值。

不适用

presto-log

更改 Presto 的 log.properties 文件中的值。

重新启动预存储服务器(用于 PrestoDB)

presto-config

更改 Presto 的 config.properties 文件中的值。

重新启动预存储服务器(用于 PrestoDB)

presto-password-authenticator

更改 Presto 的 password-authenticator.properties 文件中的值。

不适用

presto-env

更改 Presto 的 presto-env.sh 文件中的值。

重新启动预存储服务器(用于 PrestoDB)

presto-node

更改 Presto 的 node.properties 文件中的值。

不适用

presto-connector-blackhole

更改 Presto 的 blackhole.properties 文件中的值。

不适用

presto-connector-cassandra

更改 Presto 的 cassandra.properties 文件中的值。

不适用

presto-connector-hive

更改 Presto 的 hive.properties 文件中的值。

重新启动预存储服务器(用于 PrestoDB)

presto-connector-jmx

更改 Presto 的 jmx.properties 文件中的值。

不适用

presto-connector-kafka

更改 Presto 的 kafka.properties 文件中的值。

不适用

presto-connector-localfile

更改 Presto 的 localfile.properties 文件中的值。

不适用

presto-connector-memory

更改 Presto 的 memory.properties 文件中的值。

不适用

presto-connector-mongodb

更改 Presto 的 mongodb.properties 文件中的值。

不适用

presto-connector-mysql

更改 Presto 的 mysql.properties 文件中的值。

不适用

presto-connector-postgresql

更改 Presto 的 postgresql.properties 文件中的值。

不适用

presto-connector-raptor

更改 Presto 的 raptor.properties 文件中的值。

不适用

presto-connector-redis

更改 Presto 的 redis.properties 文件中的值。

不适用

presto-connector-redshift

更改 Presto 的 redshift.properties 文件中的值。

不适用

presto-connector-tpch

更改 Presto 的 tpch.properties 文件中的值。

不适用

presto-connector-tpcds

更改 Presto 的 tpcds.properties 文件中的值。

不适用

prestosql-log

更改 Presto 的 log.properties 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

prestosql-config

更改 Presto 的 config.properties 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

prestosq-password-authenticator

更改 Presto 的 password-authenticator.properties 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

prestol-env

更改 Presto 的 presto-env.sh 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

prestosq-SNAPSNAT

更改 PrestoSQL 的 node.properties 文件中的值。

不适用

prestosq-connector-blackhole

更改 PrestoSQL 的黑眼镜 .properties 文件中的值。

不适用

prestosq-connector-cassandra

更改 PrestoSQL 的 cassandra.properties 文件中的值。

不适用

prestosq-connector-hive

更改 PrestoSQL 的 hive.properties 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

Prestosq-连接器jmx

更改 PrestoSQL 的 jmx.properties 文件中的值。

不适用

prestosq-connector-kafka

更改 PrestoSQL 的 kafka.properties 文件中的值。

不适用

prestosql-connector-localfile

更改 PrestoSQL 的 localproperties 文件中的值。

不适用

presto-connector-memory

更改 PrestoSQL 的 memor.properties 文件中的值。

不适用

prestosq-connector-mongodb

更改 PrestoSQL 的 mongodb.properties 文件中的值。

不适用

prestosq-connector-mysql

更改 PrestoSQL 的 mysql.properties 文件中的值。

不适用

prestosql-connector-postgresql

更改 PrestoSQL 的 postgresql.properties 文件中的值。

不适用

presto-connector-raptor

更改 PrestoSQL 的 raptor.properties 文件中的值。

不适用

prestosq-connector-redis

更改 PrestoSQL 的 redis.properties 文件中的值。

不适用

prestosq-connector-redshift

更改 PrestoSQL 的 redshift.properties 文件中的值。

不适用

presto-connector-tpch

更改 PrestoSQL 的 tpch.properties 文件中的值。

不适用

prestosq-connector-tpcds

更改 PrestoSQL 的 tpcds.properties 文件中的值。

不适用

ranger-kms-dbks-site

更改 Ranger KMS 的 dbks-site.xml 文件中的值。

重新启动游侠 KMS 服务器。

ranger-kms-site

更改 Ranger KMS 的 ranger-kms-site.xml 文件中的值。

重新启动游侠 KMS 服务器。

ranger-kms-env

更改 Ranger KMS 环境中的值。

重新启动游侠 KMS 服务器。

ranger-kms-log4j

更改 Ranger KMS 的 kms-log4j.properties 文件中的值。

不适用

ranger-kms-db-ca

更改 S3 上用于与 Ranger KMS 进行 MySQL SSL 连接的 CA 文件的值。

不适用

spark

适用于 Apache Spark 的 Amazon EMR 辅助设置。

此属性修改火花默认值。请参阅此处的操作。

spark-defaults

更改 Spark 的 spark-defaults.conf 文件中的值。

重新启动 Spark 历史服务器和 Spark 节俭服务器。

spark-env

更改 Spark 环境中的值。

重新启动 Spark 历史服务器和 Spark 节俭服务器。

spark-hive-site

更改 Spark 的 hive-site.xml 文件中的值

不适用

spark-log4j

更改 Spark 的 log4j.properties 文件中的值。

重新启动 Spark 历史服务器和 Spark 节俭服务器。

spark-metrics

更改 Spark 的 metrics.properties 文件中的值。

重新启动 Spark 历史服务器和 Spark 节俭服务器。

sqoop-env

更改 Sqoop 的环境中的值。

不适用

sqoop-oraoop-site

更改 Sqoop OraOop 的 oraoop-site.xml 文件中的值。

不适用

sqoop-site

更改 Sqoop 的 sqoop-site.xml 文件中的值。

不适用

tez-site

更改 Tez 的 tez-site.xml 文件中的值。

重新启动 Oozie 和蜂巢服务器 2。

yarn-env

更改 YARN 环境中的值。

重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动映射-历史记录服务器。

yarn-site

更改 YARN 的 yarn-site.xml 文件中的值。

重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动 Livy 服务器和映射历史记录服务器。

zeppelin-env

更改 Zeppelin 环境中的值。

重新启动 Zeppelin。

zeppelin-site

更改 zeppelin-site.xml 中的配置设置。

重新启动 Zeppelin。

zookeeper-config

更改 ZooKeeper 的 zoo.cfg 文件中的值。

重新启动动动物管理员服务器。

zookeeper-log4j

更改 ZooKeeper 的 log4j.properties 文件中的值。

重新启动动动物管理员服务器。

6.2.0

6.2.0 应用程序版本

此版本支持以下应用程序:JupyterEnterpriseGatewayFlinkGangliaHadoopHBaseHCatalogHiveHueJupyterHubLivyMXNetOoziePhoenixPigPrestoPrestoSQLSparkSqoopTensorFlowTezZeppelin, 和ZooKeeper

下图描述了此版本的中提供的应用程序版本以及前四个 Amazon EMR 发布版本中的应用程序版本。

有关每个 Amazon EMR 版本的的全面历史记录,请参见下面的示意图:

6.2.0 发布说明

以下发布说明包括有关亚马逊 EMR 版本 6.2.0 的信息。更改是相对于 6.1.0 而言。

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

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

支持的应用程序

  • Amazon SDK for Java版本 1.11.828

  • emr-记录-服务器版本 1.7.0

  • Flink 版本 1.11.2

  • Ganglia 版本 3.7.2

  • Hadoop 版本 3.2.1-amzn-1

  • HBase 版本 2.2.6-amzn-0

  • HBase 操作员工具 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

  • 普雷斯托版本 0.238.3-amzn-1

  • PrestoSQL 版本 343

  • 火花版本 3.0.1-amzn-0

  • S火Zek-Rapid 0.2.0

  • TensorFlow 版本 2.3.1

  • Zeppelin 版本 0.9.0-preview1

  • Zookeeper 版本 3.4.14

  • 连接器和驱动器:DynamoDB 连接器 4.16.0

新功能

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

  • HBase: 反向传输创建强制在压缩时缓存块的配置

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

  • 适用于的托管策略:对齐Amazon最佳实践中,Amazon EMR 引入了 v2 EMR 范围的默认托管策略,作为将弃用的策略的替代品。请参阅Amazon EMR 托管策略

  • 实例元数据服务 (IMDS) V2 支持状态:对于亚马逊 EMR 6.2 或更高版本,亚马逊 EMR 组件对所有 IMDS 呼叫都使用 IMDSv2。对于应用程序代码中的 IMDS 调用,您可以同时使用 IMDSv1 和 IMDSv2,或者将 IMDS 配置为仅使用 IMDSv2 以提高安全性。如果您在早期 Amazon EMR 6.x 版本中禁用 IMDSv1,则会导致群集启动失败。

更改、增强和已解决的问题

  • 火花:Spark 运行时的性能改进。

已知问题

  • 对于亚马逊 EMR 6.2.0 和 6.3.0 私有子网集群,您不能访问 Ganglia Web 用户界面。您将收到 “访问被拒绝 (403)” 错误。其他 Web 用户界面(如斯巴拉克、色相、JupyterHub、齐柏林、利维和 Tez)正常工作。公有子网群集上的 Ganglia Web UI 访问也正常工作。要解决该问题,请在主节点上重新启动 httpd 服务sudo systemctl restart httpd

  • 亚马逊 EMR 6.2.0 中存在一个问题,其中 httpd 持续失败,导致 Ganglia 不可用。您会收到 "无法连接到服务器" 错误。若要修复已在运行的群集,请 SSH 到群集主节点并添加行Listen 80到该文件httpd.conf位于/etc/httpd/conf/httpd.conf。此问题已在亚马逊 EMR 6.3.0 中得到修复。

  • 当您使用安全配置时,HTTPD 在 EMR 6.2.0 群集上失败。这使得 Ganglia Web 应用程序用户界面不可用。要访问 Ganglia Web 应用程序用户界面,请添加Listen 80添加到/etc/httpd/conf/httpd.conf文件中添加到集群主节点上。有关连接到集群的信息,请参阅使用 SSH Connect 到主节点

    当您使用安全配置时,EMR Notebooks 也无法建立与 EMR 6.2.0 群集的连接。笔记本将无法列出内核和提交 Spark 作业。我们建议您改为将 EMR Notebooks 本与其他版本的 Amazon EMR 一起使用。

  • 较早的 AL2 上的 “最大打开文件” 限制较低。 亚马逊 EMR 版本:EMR 5.30.x、EMR-5.31.0、EMR-5.32.0、EMR-6.0.0、EMR-6.1.0 和 EMR-6.2.0 基于旧版本的 OFAMZON Linux 2 (AL2),当使用默认 AMI 创建 EMR 集群时,这些版本的下限设置为 “最大打开文件”。提交 Spark 作业时,打开的文件下限会导致 “打开的文件过多” 错误。在受影响的 EMR 版本中,亚马逊 EMR 默认 AMI 对于 “最大打开文件” 的默认限制设置为 4096,低于最新亚马逊 Linux 2 AMI 中的 65536 文件限制。当 Spark 驱动程序和执行程序尝试打开超过 4096 个文件时,“最大打开文件” 的下限设置会导致 Spark 作业失败。要修复此问题,Amazon EMR 有一个引导操作 (BA) 脚本,用于在创建集群时调整 ulimit 设置。亚马逊 EMR 6.3.0 和 5.33.0 版将包括一个具有更高 “最大打开文件” 设置的永久修复程序。

    此问题的以下解决方法允许您显式将实例控制器 ulimit 设置为最多 65536 文件。

    从命令行显式设置 ulimit

    1. 编辑/etc/systemd/system/instance-controller.service将以下参数添加到服务部分。

      LimitNOFILE=65536

      LimitNPROC=65536

    2. 重新启动实例 Controller

      $ sudo systemctl daemon-reload

      $ sudo systemctl restart instance-controller

    使用引导操作设置 u限制 (BA)

    您还可以使用引导操作 (BA) 脚本在群集创建时将实例控制器 ulimit 配置为 65536 个文件。

    #!/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
  • 重要

    亚马逊 EMR 6.1.0 和 6.2.0 包含可能严重影响所有 Hudi 插入、插入和删除操作的性能问题。如果您计划将 Hudi 与亚马逊 EMR 6.1.0 或 6.2.0 结合使用,请联系Amazon支持,以获得修补的胡迪 RPM。

  • 重要

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

  • 亚马逊 EMR 6.2.0 Maven 工件不会发布。它们将随亚马逊 EMR 的未来版本一起发布。

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

  • 亚马逊 EMR 6.x 和 EMR 5.x 配置单元分段版本差异

    EMR 5.x 使用 OOS 阿帕奇配置单元 2,而在 EMR 6.x 中使用 OOS 阿帕奇配置单元 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 ...

6.2.0 组件版本

下面列出了 Amazon EMR 随此发布版本一起安装的组件。一些组件作为大数据应用程序包的一部分安装。其他组件是独有的,并且已为系统流程和功能安装这些组件。它们通常以 emraws 开头。最新的 Amazon EMR 发布版本中的大数据应用程序包通常是在社区中找到的最新版本。我们尽快在中提供社区发布版本。

Amazon EMR 中的某些组件与社区版本不同。这些组件具有以下形式的 CommunityVersion-amzn-EmrVersion 的版本标签。EmrVersion 从 0 开始。例如,如果开源社区组件名为myapp-component已对版本 2.2 进行三次修改以包含在不同的 Amazon EMR 发行版中,其发布版本将列出为2.2-amzn-2

组件 Version 说明
aws-sagemaker-spark-sdk 1.4.1 Amazon SageMaker Spark 开发工具包
emr-ddb 4.16.0 适用于 Hadoop 生态系统应用程序的 Amazon DynamoDB 连接器。
emr-goodies 3.1.0 适用于 Hadoop 生态系统的方便易用的库。
emr-kinesis 3.5.0 适用于 Hadoop 生态系统应用程序的 Amazon Kinesis 连接器。
emr-notebook-env 1.0.0 适用于 emr 笔记本的 Conda env
emr-s3-dist-cp 2.16.0 针对 Amazon S3 优化的分布式复制应用程序。
emr-s3-select 2.0.0 EMR S3 Select 连接器
emrfs 2.44.0 适用于 Hadoop 生态系统应用程序的 Amazon S3 连接器。
flink-client 1.11.2 Apache Flink 命令行客户端脚本和应用程序。
弗林克-作业管理器配置 1.11.2 管理资源在 EMR 节点上的 Apache 弗林克 JobManager.
ganglia-monitor 3.7.2 适用于 Hadoop 生态系统应用程序的嵌入式 Ganglia 代理以及 Ganglia 监控代理。
ganglia-metadata-collector 3.7.2 用于从 Ganglia 监控代理中聚合指标的 Ganglia 元数据收集器。
ganglia-web 3.7.1 用于查看由 Ganglia 元数据收集器收集的指标的 Web 应用程序。
hadoop-client 3.2.1-amzn-2 Hadoop 命令行客户端,如“hdfs”、“hadoop”或“yarn”。
hadoop-hdfs-datanode 3.2.1-amzn-2 用于存储数据块的 HDFS 节点级服务。
hadoop-hdfs-library 3.2.1-amzn-2 HDFS 命令行客户端和库
hadoop-hdfs-namenode 3.2.1-amzn-2 用于跟踪文件名和数据块位置的 HDFS 服务。
hadoop-hdfs-journalnode 3.2.1-amzn-2 用于管理 HA 集群上的 Hadoop 文件系统日志的 HDFS 服务。
hadoop-httpfs-server 3.2.1-amzn-2 用于 HDFS 操作的 HTTP 终端节点。
hadoop-kms-server 3.2.1-amzn-2 基于 Hadoop 的 KeyProvider API 的加密密钥管理服务器。
hadoop-mapred 3.2.1-amzn-2 用于运行 MapReduce 应用程序的 MapReduce 执行引擎库。
hadoop-yarn-nodemanager 3.2.1-amzn-2 用于管理单个节点上的容器的 YARN 服务。
hadoop-yarn-resourcemanager 3.2.1-amzn-2 用于分配和管理群集资源与分布式应用程序的 YARN 服务。
hadoop-yarn-timeline-server 3.2.1-amzn-2 用于检索 YARN 应用程序的当前信息和历史信息的服务。
hbase-hmaster 2.2.6-amzn-0 适用于负责协调区域和执行管理命令的 HBase 集群的服务。
hbase-region-server 2.2.6-amzn-0 用于服务于一个或多个 HBase 区域的服务。
hbase-client 2.2.6-amzn-0 HBase 命令行客户端。
hbase-rest-server 2.2.6-amzn-0 用于向 HBase 提供 RESTful HTTP 终端节点的服务。
hbase-thrift-server 2.2.6-amzn-0 用于向 HBase 提供 Thrift 终端节点的服务。
hcatalog-client 3.1.2-amzn-3 用于操作 hcatalog-server 的“hcat”命令行客户端。
hcatalog-server 3.1.2-amzn-3 用于为分布式应用程序提供 HCatalog、表和存储管理层的服务。
hcatalog-webhcat-server 3.1.2-amzn-3 用于向 HCatalog 提供 REST 接口的 HTTP 终端节点。
hive-client 3.1.2-amzn-3 Hive 命令行客户端。
hive-hbase 3.1.2-amzn-3 Hive-hbase 客户端。
hive-metastore-server 3.1.2-amzn-3 用于访问 Hive 元存储 (一个用于存储 Hadoop 操作中的 SQL 的元数据的语义存储库) 的服务。
hive-server2 3.1.2-amzn-3 用于将 Hive 查询作为 Web 请求接受的服务。
hudi 0.6.0-amzn-1 增量处理框架,以支持低延迟和高效率的数据管道。
hudi-presto 0.6.0-amzn-1 用于运行 Presto 以及 Hudl 的捆绑库。
hudi-prestosql 0.6.0-amzn-1 用于运行 PrestoSQL 以及 HudSql 的捆绑库。
hudi-sparf 0.6.0-amzn-1 用于运行 Spark 以及 Hudi 的捆绑库。
hue-server 4.8.0 用于使用 Hadoop 生态系统应用程序分析数据的 Web 应用程序
jupyterhub 1.1.0 Jupyter 笔记本的多用户服务器
livy-server 0.7.0-incubating 用于与 Apache Spark 交互的 REST 接口
nginx 1.12.1 nginx [引擎 x] 是 HTTP 和反向代理服务器
mxnet 1.7.0 用于深度学习的灵活的、可扩展且高效的库。
mariadb-server 5.5.64+ MariaDB 数据库服务器。
nvidia-cuda 10.1.243 Nvidia 驱动程序和 Cuda 工具包
oozie-client 5.2.0 Oozie 命令行客户端。
oozie-server 5.2.0 用于接受 Oozie 工作流请求的服务。
opencv 4.4.0 开源计算机视觉库。
phoenix-library 5.0.0-HBase-2.0 服务器和客户端的 phoenix 库
phoenix-query-server 5.0.0-HBase-2.0 向 Avatica API 提供 JDBC 访问权限以及协议缓冲区和 JSON 格式访问权限的轻量级服务器
presto-coordinator 0.238.3-amzn--1 用于在 presto-worker 之中接受查询并管理查询的服务。
presto-worker 0.238.3-amzn--1 用于执行查询的各个部分的服务。
presto-client 0.238.3-amzn--1 Presto 命令行客户端,安装在 HA 集群的备用主服务器(未启动 Presto 服务器)上。
prestosq-协调器 343 用于在 prestoql-worker 之中接受查询并管理查询的服务。
prestoq-worker 343 用于执行查询的各个部分的服务。
prestosq-client 343 Presto 命令行客户端,安装在 HA 集群的备用主服务器(未启动 Presto 服务器)上。
pig-client 0.17.0 Pig 命令行客户端。
r 3.4.3 用于统计计算的 R 项目
ranger-kms-server 2.0.0 Apache Ranger 密钥管理系统
spark-client 3.0.1-amzn-0 Spark 命令行客户端。
spark-history-server 3.0.1-amzn-0 用于查看完整的 Spark 应用程序的生命周期的已记录事件的 Web UI。
spark-on-yarn 3.0.1-amzn-0 适用于 YARN 的内存中执行引擎。
spark-yarn-slave 3.0.1-amzn-0 YARN 从属项所需的 Apache Spark 库。
spark-amzn- 0.2.0 Nvidia 火花急流插件,加速阿帕奇火花与 GPU.
sqoop-client 1.4.7 Apache Sqoop 命令行客户端。
tensorflow 2.3.1 适用于高性能数值计算的 TensorFlow 开源软件库。
tez-on-yarn 0.9.2 tez YARN 应用程序和库。
webserver 2.4.41+ Apache HTTP 服务器。
zeppelin-server 0.9.0-SNAPSNAT 支持交互式数据分析的基于 Web 的笔记本电脑。
zookeeper-server 3.4.14 用于维护配置信息、命名、提供分布式同步以及提供组服务的集中式服务。
zookeeper-client 3.4.14 ZooKeeper 命令行客户端。

6.2.0 配置分类

配置分类允许您自定义应用程序。这些通常与应用程序的配置 XML 文件相对应,例如hive-site.xml。有关更多信息,请参阅 配置应用程序

在您为运行的集群中的实例组指定配置时,将发生重新配置操作。EMR 仅为您修改的分类启动重新配置操作。有关更多信息,请参阅 在正在运行的集群中重新配置实例组

EMR-6.2.0 分类
分类 说明 RECONDEGREE

capacity-scheduler

更改 Hadoop 的 capacity-scheduler.xml 文件中的值。

重新启动 ResourceManager 服务。

container-executor

更改 Hadoop YARN 的 container-executor.cfg 文件中的值。

不适用

container-log4j

更改 Hadoop YARN 的 container-log4j.properties 文件中的值。

不适用

core-site

更改 Hadoop 的 core-site.xml 文件中的值。

重新启动 Hadoop HDFS 服务 Namenode、辅助编码、数据编码、ZKFC 和日记节点。重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动 Hadoop KMS、游侠 KMS、Hiveser2、蜂巢 MetaStore、Hadoop Httpfs 和映射历史记录服务器。

码头-conf

更改码头相关设置。

不适用

emrfs-site

更改 EMRFS 设置。

重新启动 Hadoop HDFS 服务 Namenode、辅助编码、数据编码、ZKFC 和日记节点。重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动 HBASE 区域服务器、HBASEmaster、HBASEFT、HBASE 休息服务器 2、配置单 MetaStore、Hadoop Httpfs 和映射历史记录服务器。

flink-conf

更改 flink-conf.yaml 设置。

不适用

flink-log4j

更改 Flink log4j.properties 设置。

不适用

flink-log4j-yarn-session

更改 Flink log4j-yarn-session.properties 设置。

不适用

flink-log4j-cli

更改 Flink log4j-cli.properties 设置。

不适用

hadoop-env

更改适用于所有 Hadoop 组件的 Hadoop 环境中的值。

重新启动 Hadoop HDFS 服务 Namenode、辅助编码、数据编码、ZKFC 和日记节点。重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动凤凰查询服务器、隐藏服务器 2、配置单 MetaStore 和映射历史记录服务器。

hadoop-log4j

更改 Hadoop 的 log4j.properties 文件中的值。

重新启动 Hadoop HDFS 服务次级数据节点、数据节点和日志节点。重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动 Hadoop KMS、Hadoop Httpfs 和映射历史记录服务器。

hadoop-ssl-server

更改 hadoop ssl 服务器配置

不适用

hadoop-ssl-client

更改 hadoop ssl 客户端配置

不适用

hbase

适用于 Apache HBase 的 Amazon EMR 辅助设置。

自定义 EMR 特定属性。设置 EMRFS 站点和 hbase 站点配置。有关其相关重新启动的信息,请参阅这些

hbase-env

更改 HBase 环境中的值。

重新启动 HBase 服务 RegionServer,HBASE,ThriftServer,REST 服务器。

hbase-log4j

更改 HBase 的 hbase-log4j.properties 文件中的值。

重新启动 HBase 服务 RegionServer,HBASE,ThriftServer,REST 服务器。

hbase-metrics

更改 HBase 的 hadoop-metrics2-hbase.properties 文件中的值。

重新启动 HBase 服务 RegionServer,HBASE,ThriftServer,REST 服务器。

hbase-policy

更改 HBase 的 hbase-policy.xml 文件中的值。

不适用

hbase-site

更改 HBase 的 hbase-site.xml 文件中的值。

重新启动 HBase 服务 RegionServer,HBASE,ThriftServer,REST 服务器。此外,重新启动凤凰 QueryServer。

hdfs-encryption-zones

配置 HDFS 加密区域。

这种分类不应重新配置。

hdfs-env

更改 HDFS 环境中的值。

重新启动 HDOOP HDFS ZKFC。

hdfs-site

更改 HDFS 的 hdfs-site.xml 中的值。

重新启动 Hadoop HDFS 服务 Namenode、辅助编码、数据编码、ZKFC 和日记节点。此外,重新启动 Hadoop Httpfs。

hcatalog-env

更改 HCatalog 的环境中的值。

重新启动配置单元目录服务器。

hcatalog-server-jndi

更改 HCatalog 的 jndi.properties 中的值。

重新启动配置单元目录服务器。

hcatalog-server-proto-hive-site

更改 HCatalog 的 proto-hive-site.xml 中的值。

重新启动配置单元目录服务器。

hcatalog-webhcat-env

更改 HCatalog WebHCat 的环境中的值。

重新启动配置单元 WebHCat 服务器。

hcatalog-webhcat-log4j2

更改 HCatalog WebHCat 的 log4j2.properties 中的值。

重新启动配置单元 WebHCat 服务器。

hcatalog-webhcat-site

更改 HCatalog WebHCat 的 webhcat-site.xml 文件中的值。

重新启动配置单元 WebHCat 服务器。

hive

适用于 Apache Hive 的 Amazon EMR 辅助设置。

设置配置以启动 Hive LLAP 服务。

hive-beeline-log4j2

更改 Hive 的 beeline-log4j2.properties 文件中的值。

不适用

hive-parquet-logging

更改 Hive parquet-logging.properties 文件中的值。

不适用

hive-env

更改 Hive 环境中的值。

重新启动节约服务器 2、配置单元存储和配置单元目录服务器。运行配置单元架构 CLI 命令来验证配置单元数据仓。

hive-exec-log4j2

更改 Hive 的 hive-exec-log4j2.properties 文件中的值。

不适用

hive-llap-daemon-log4j2

更改 Hive 的 llap-daemon-log4j2.properties 文件中的值。

不适用

hive-log4j2

更改 Hive 的 hive-log4j2.properties 文件中的值。

不适用

hive-site

更改 Hive 的 hive-site.xml 文件中的值

重新启动节约服务器 2、配置单元存储和配置单元目录服务器。运行配置单元架构 CLI 命令来验证配置单元数据仓。同时重新启动 Oozie 和齐柏林。

hiveserver2-site

更改 Hive Server2 的 hiveserver2-site.xml 文件中的值

不适用

hue-ini

更改 Hue 的 ini 文件中的值

重新启动 Hue。同时激活 Hue 配置覆盖 CLI 命令以获取新配置。

httpfs-env

更改 HTTPFS 环境中的值。

重新启动 Hadoop Httpfs 服务。

httpfs-site

更改 Hadoop 的 httpfs-site.xml 文件中的值。

重新启动 Hadoop Httpfs 服务。

hadoop-kms-acls

更改 Hadoop 的 kms-acls.xml 文件中的值。

不适用

hadoop-kms-env

更改 Hadoop KMS 环境中的值。

重新启动 Hadoop-KMS 服务。

hadoop-kms-log4j

更改 Hadoop 的 kms-log4j.properties 文件中的值。

不适用

hadoop-kms-site

更改 Hadoop 的 kms-site.xml 文件中的值。

重新启动 Hadoop 公里和范围公里服务。

hudi-env

更改 HDFS 环境中的值。

不适用

jupyter-notebook-conf

更改 Jupyter Notebook 的 jupyter_notebook_config.py 文件中的值。

不适用

jupyter-hub-conf

更改 JupyterHubs 的 jupyterhub_config.py 文件中的值。

不适用

jupyter-s3-conf

配置 Jupyter Notebook S3 持久性。

不适用

jupyter-sparkmagic-conf

更改 Sparkmagic 的 config.json 文件中的值。

不适用

livy-conf

更改 Livy 的 livy.conf 文件中的值。

重新启动 Livy 服务器。

livy-env

更改 Livy 环境中的值。

重新启动 Livy 服务器。

livy-log4j

更改 Livy log4j.properties 设置。

重新启动 Livy 服务器。

mapred-env

更改 MapReduce 应用程序的环境中的值。

重新启动 Hadoop 映射-历史记录服务器。

mapred-site

更改 MapReduce 应用程序的 mapred-site.xml 文件中的值。

重新启动 Hadoop 映射-历史记录服务器。

oozie-env

更改 Oozie 的环境中的值。

重新启动 Oozie。

oozie-log4j

更改 Oozie 的 oozie-log4j.properties 文件中的值。

重新启动 Oozie。

oozie-site

更改 Oozie 的 oozie-site.xml 文件中的值。

重新启动 Oozie。

phoenix-hbase-metrics

更改 Phoenix 的 hadoop-metrics2-hbase.properties 文件中的值。

不适用

phoenix-hbase-site

更改 Phoenix 的 hbase-site.xml 文件中的值。

不适用

phoenix-log4j

更改 Phoenix 的 log4j.properties 文件中的值。

重新启动凤凰查询服务器。

phoenix-metrics

更改 Phoenix 的 hadoop-metrics2-phoenix.properties 文件中的值。

不适用

pig-env

更改 Pig 环境中的值。

不适用

pig-properties

更改 Pig 的 pig.properties 文件中的值。

重新启动 Oozie。

pig-log4j

更改 Pig 的 log4j.properties 文件中的值。

不适用

presto-log

更改 Presto 的 log.properties 文件中的值。

重新启动预存储服务器(用于 PrestoDB)

presto-config

更改 Presto 的 config.properties 文件中的值。

重新启动预存储服务器(用于 PrestoDB)

presto-password-authenticator

更改 Presto 的 password-authenticator.properties 文件中的值。

不适用

presto-env

更改 Presto 的 presto-env.sh 文件中的值。

重新启动预存储服务器(用于 PrestoDB)

presto-node

更改 Presto 的 node.properties 文件中的值。

不适用

presto-connector-blackhole

更改 Presto 的 blackhole.properties 文件中的值。

不适用

presto-connector-cassandra

更改 Presto 的 cassandra.properties 文件中的值。

不适用

presto-connector-hive

更改 Presto 的 hive.properties 文件中的值。

重新启动预存储服务器(用于 PrestoDB)

presto-connector-jmx

更改 Presto 的 jmx.properties 文件中的值。

不适用

presto-connector-kafka

更改 Presto 的 kafka.properties 文件中的值。

不适用

presto-connector-localfile

更改 Presto 的 localfile.properties 文件中的值。

不适用

presto-connector-memory

更改 Presto 的 memory.properties 文件中的值。

不适用

presto-connector-mongodb

更改 Presto 的 mongodb.properties 文件中的值。

不适用

presto-connector-mysql

更改 Presto 的 mysql.properties 文件中的值。

不适用

presto-connector-postgresql

更改 Presto 的 postgresql.properties 文件中的值。

不适用

presto-connector-raptor

更改 Presto 的 raptor.properties 文件中的值。

不适用

presto-connector-redis

更改 Presto 的 redis.properties 文件中的值。

不适用

presto-connector-redshift

更改 Presto 的 redshift.properties 文件中的值。

不适用

presto-connector-tpch

更改 Presto 的 tpch.properties 文件中的值。

不适用

presto-connector-tpcds

更改 Presto 的 tpcds.properties 文件中的值。

不适用

prestosql-log

更改 Presto 的 log.properties 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

prestosql-config

更改 Presto 的 config.properties 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

prestosq-password-authenticator

更改 Presto 的 password-authenticator.properties 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

prestol-env

更改 Presto 的 presto-env.sh 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

prestosq-SNAPSNAT

更改 PrestoSQL 的 node.properties 文件中的值。

不适用

prestosql-connector-blackhole

更改 PrestoSQL 的黑hole.properties 文件中的值。

不适用

prestosq-connector-cassandra

更改 PrestoSQL 的 cassandra.properties 文件中的值。

不适用

prestosq-connector-hive

更改 PrestoSQL 的 hive.properties 文件中的值。

重新启动预存储服务器(用于 PrestoSQL)

Prestosq-连接器jmx

更改 PrestoSQL 的 jmx.properties 文件中的值。

不适用

prestosq-connector-kafka

更改 PrestoSQL 的 kafka.properties 文件中的值。

不适用

prestosql-connector-localfile

更改 PrestoSQL 的 localfile.properties 文件中的值。

不适用

presto-connector-memory

更改 PrestoSQL 的 memor.properties 文件中的值。

不适用

prestosq-connector-mongodb

更改 PrestoSQL 的 mongodb.properties 文件中的值。

不适用

prestosq-connector-mysql

更改 PrestoSQL 的 mysql.properties 文件中的值。

不适用

prestosql-connector-postgresql

更改 PrestoSQL 的 postgresql.properties 文件中的值。

不适用

presto-connector-raptor

更改 PrestoSQL 的 raptor.properties 文件中的值。

不适用

prestosq-connector-redis

更改 PrestoSQL 的 redis.properties 文件中的值。

不适用

prestosq-connector-redshift

更改 PrestoSQL 的 redshift.properties 文件中的值。

不适用

presto-connector-tpch

更改 PrestoSQL 的 tpch.properties 文件中的值。

不适用

prestosq-connector-tpcds

更改 PrestoSQL 的 tpcds.properties 文件中的值。

不适用

ranger-kms-dbks-site

更改 Ranger KMS 的 dbks-site.xml 文件中的值。

重新启动游侠 KMS 服务器。

ranger-kms-site

更改 Ranger KMS 的 ranger-kms-site.xml 文件中的值。

重新启动游侠 KMS 服务器。

ranger-kms-env

更改 Ranger KMS 环境中的值。

重新启动游侠 KMS 服务器。

ranger-kms-log4j

更改 Ranger KMS 的 kms-log4j.properties 文件中的值。

不适用

ranger-kms-db-ca

更改 S3 上用于与 Ranger KMS 进行 MySQL SSL 连接的 CA 文件的值。

不适用

spark

适用于 Apache Spark 的 Amazon EMR 辅助设置。

此属性修改火花默认值。请参阅此处的操作。

spark-defaults

更改 Spark 的 spark-defaults.conf 文件中的值。

重新启动 Spark 历史服务器和 Spark 节俭服务器。

spark-env

更改 Spark 环境中的值。

重新启动 Spark 历史服务器和 Spark 节俭服务器。

spark-hive-site

更改 Spark 的 hive-site.xml 文件中的值

不适用

spark-log4j

更改 Spark 的 log4j.properties 文件中的值。

重新启动 Spark 历史服务器和 Spark 节俭服务器。

spark-metrics

更改 Spark 的 metrics.properties 文件中的值。

重新启动 Spark 历史服务器和 Spark 节俭服务器。

sqoop-env

更改 Sqoop 的环境中的值。

不适用

sqoop-oraoop-site

更改 Sqoop OraOop 的 oraoop-site.xml 文件中的值。

不适用

sqoop-site

更改 Sqoop 的 sqoop-site.xml 文件中的值。

不适用

tez-site

更改 Tez 的 tez-site.xml 文件中的值。

重新启动 Oozie。

yarn-env

更改 YARN 环境中的值。

重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动映射-历史记录服务器。

yarn-site

更改 YARN 的 yarn-site.xml 文件中的值。

重新启动 Hadoop YARN 服务 ResourceManager、NodeManager、ProxyServer 和时间服务器。此外,重新启动 Livy 服务器和映射历史记录服务器。

zeppelin-env

更改 Zeppelin 环境中的值。

重新启动 Zeppelin。

zookeeper-config

更改 ZooKeeper 的 zoo.cfg 文件中的值。

重新启动动动物管理员服务器。

zookeeper-log4j

更改 ZooKeeper 的 log4j.properties 文件中的值。

重新启动动动物管理员服务器。

6.1.0

6.1.0 应用程序版本

此版本支持以下应用程序:FlinkGangliaHadoopHBaseHCatalogHiveHueJupyterHubLivyMXNetOoziePhoenixPigPrestoPrestoSQLSparkSqoopTensorFlowTezZeppelin, 和ZooKeeper

下图描述了此版本的中提供的应用程序版本以及前四个 Amazon EMR 发布版本中的应用程序版本。

有关每个 Amazon EMR 版本的的全面历史记录,请参见下面的示意图:

6.1.0 发布说明

以下发布说明包括有关亚马逊 EMR 版本 6.1.0 的信息。更改是相对于 6.0.0 而言。

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

上次更新日期:2020 年 10 月 15 日

支持的应用程序

  • Amazon SDK for Java版本 1.11.828

  • Flink 版本 1.11.0

  • Ganglia 版本 3.7.2

  • Hadoop 版本 3.2.1-amzn-1

  • HBase 版本 2.2.5

  • HBase 操作员-工具 1.0.0

  • HCatalog 版本 3.1.2-amzn-0

  • Hive 版本 3.1.2-amzn-1

  • Hudi 版本 0.5.2-incubating

  • Hue 版本 4.7.1

  • JupyterHub 版本 1.1.0

  • Livy 版本 0.7.0

  • MxNet 版本 1.6.0

  • Oozie 版本 5.2.0

  • Phoenix 版本 5.0.0

  • Presto 版本 0.232

  • PrestoSQL 版本 338

  • 火花版本 3.0.0-amzn-0

  • TensorFlow 版本 2.1.0

  • Zeppelin 版本 0.9.0-preview1

  • Zookeeper 版本 3.4.14

  • 连接器和驱动器:DynamoDB 连接器 4.14.0

新功能

  • 从 Amazon EMR 版本 5.30.0 和 Amazon EMR 版本 6.1.0 开始支持 ARM 实例类型。

  • 从亚马逊 EMR 6.1.0 版和 5.30.0 版开始,支持 M6g 通用实例类型。有关更多信息,请参阅 。支持的实例类型中的Amazon EMR 管理指南

  • 从 Amazon EMR 5.23.0 版开始支持 EC2 置放组功能,作为多个主节点集群的一个选项。目前,置放群组要素仅支持主节点类型,SPREAD策略应用于这些主节点。这些区域有:SPREAD策略在不同的底层硬件中放置一小组实例,以防止在发生硬件故障时丢失多个主节点。有关更多信息,请参阅 。EMR 与 EC2 置放群组的集成中的Amazon EMR 管理指南

  • 托管扩展 — 使用 Amazon EMR 6.1.0 版本,您可以启用 EMR 托管扩展,以根据工作负载自动增加或减少集群中实例或单元的数量。EMR 会持续评估集群指标,以便做出扩展决策,从而优化集群的成本和速度。托管扩展也适用于 Amazon EMR 版本 5.30.0 及更高版本,6.0.0 除外。有关更多信息,请参阅 。扩展群集资源中的Amazon EMR 管理指南

  • EMR 6.1.0 支持 PrestoSQL 版本 338。有关更多信息,请参阅 。Presto

    • 仅在 EMR 6.1.0 及更高版本上支持 PrestoSQL,而不是在 EMR 6.0.0 或 EMR 5.x 上。

    • 应用程序名称Presto继续用于在群集上安装 PrestoDB。要在群集上安装 PrestoSQL,请使用应用程序名称PrestoSQL

    • 您可以安装 PrestoDB 或 PrestoSQL,但不能在单个群集上安装两者。如果在尝试创建集群时同时指定了 PrestoDB 和 PrestoSQL,则会发生验证错误并且集群创建请求失败。

    • PrestoSQL 在单主集群和多主集群上均受支持。在多主体群集上,需要外部 Hive 元数据仓才能运行 PrestoSQL 或 PrestoDB。请参阅具有多个主节点的 EMR 集群中支持的应用程序

  • 在 Apache Hadoop 和 Apache Spark 上使用码头提供 ECR 自动身份验证支持:Spark 用户可以使用 Docker Hub 和 Amazon Elastic Container Registry (Amazon ECR) 中的 Docker 映像定义环境和库依赖项。

    配置 Docker使用 Amazon EMR 6.x 通过 Docker 运行 Spark 应用程序

  • EMR 支持阿帕奇蜂巢 ACID 事务:亚马逊 EMR 6.1.0 增加了对蜂巢 ACID 交易的支持,因此它符合数据库的 ACID 属性。使用此功能,您可以使用 Amazon Simple Storage Service (Amazon S3) 中的数据在 Hive 托管表中运行插入、更新、删除和合并操作。这是用例如流式传输、数据重新陈述、使用 MERGE 批量更新以及缓慢更改维度的关键功能。有关包括配置示例和使用案例在内的更多信息,请参阅亚马逊 EMR 支持阿帕奇蜂巢 ACID 交易

更改、增强和已解决的问题

  • 在 EMR 6.0.0 上不支持 Apache Fink,但在使用 Flink 1.11.0 的 EMR 6.1.0 上支持它。这是 Fink 正式支持 Hadoop 3 的第一个版本。请参阅Apache Flink 1.11.0 发行公告

  • 神经节已从默认 EMR 6.1.0 软件包中删除。

已知问题

  • 较早的 AL2 上的 “最大打开文件” 限制较低。 亚马逊 EMR 版本:EMR 5.30.x、EMR-5.31.0、EMR-5.32.0、EMR-6.0.0、EMR-6.1.0 和 EMR-6.2.0 基于旧版本的 OFAMZON Linux 2 (AL2),当使用默认 AMI 创建 EMR 集群时,这些版本的下限设置为 “最大打开文件”。提交 Spark 作业时,打开的文件下限会导致 “打开的文件过多” 错误。在受影响的 EMR 版本中,亚马逊 EMR 默认 AMI 对于 “最大打开文件” 的默认限制设置为 4096,低于最新亚马逊 Linux 2 AMI 中的 65536 文件限制。当 Spark 驱动程序和执行程序尝试打开超过 4096 个文件时,“最大打开文件” 的下限设置会导致 Spark 作业失败。要修复此问题,Amazon EMR 有一个引导操作 (BA) 脚本,用于在创建集群时调整 ulimit 设置。亚马逊 EMR 6.3.0 和 5.33.0 版将包括一个具有更高 “最大打开文件” 设置的永久修复程序。

    此问题的以下解决方法允许您显式将实例控制器 ulimit 设置为最多 65536 文件。

    从命令行显式设置 ulimit

    1. 编辑/etc/systemd/system/instance-controller.service将以下参数添加到服务部分。

      LimitNOFILE=65536

      LimitNPROC=65536

    2. 重启实例 Controller

      $ sudo systemctl daemon-reload

      $ sudo systemctl restart instance-controller

    使用引导操作设置 u限制 (BA)

    您还可以使用引导操作 (BA) 脚本在群集创建时将实例控制器 ulimit 配置为 65536 个文件。

    #!/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
  • 重要

    亚马逊 EMR 6.1.0 和 6.2.0 包含可能严重影响所有 Hudi 插入、插入和删除操作的性能问题。如果您计划将 Hudi 与亚马逊 EMR 6.1.0 或 6.2.0 结合使用,请联系Amazon支持,以获得修补的胡迪 RPM。

  • 如果将自定义垃圾回收配置设置为spark.driver.extraJavaOptionsspark.executor.extraJavaOptions,这将导致 EMR 6.1 驱动程序/执行程序启动失败,因为垃圾回收配置冲突。使用 EMR 6.1.0 版,您应该为驱动程序和执行程序指定自定义 Spark 垃圾回收配置,其属性spark.driver.defaultJavaOptionsspark.executor.defaultJavaOptions相反。阅读更多信息Apache Spark 运行时环境在亚马逊 EMR 6.1.0 上配置火花垃圾回收

  • 在 Oozie 中使用 Pig(以及在 Hue 中,因为 Hue 使用 Oozie 操作来运行 Pig 脚本)会生成一个错误,即无法加载本地 lzo 库。此错误消息是信息性的,不会阻止 Pig 运行。

  • Hudi 并发 Support:目前 Hudi 不支持并发写入单个 Hudi 表。此外,Hudi 在允许新作家启动之前回滚正在进行的作者所做的任何更改。并发写入可能会干扰此机制并引入竞争条件,从而导致数据损坏。您应确保作为数据处理工作流的一部分,任何时候都只有一个 Hudi 写入器对胡迪表进行操作。Hudi 确实支持多个并发读取器对同一 Hudi 表进行操作。

  • 具有多个主节点和 Kerberos 身份验证的群集中的已知问题

    如果在 EMR 5.20.0 版及更高版本中运行具有多个主节点和 Kerberos 身份验证的群集,则在群集运行一段时间后,您可能会遇到群集操作(如缩小或步骤提交)的问题。时间段取决于您定义的 Kerberos 票证有效期。缩小问题会影响您提交的自动缩小和显式缩小请求。其他群集操作也可能受到影响。

    解决办法:

    • SSH 作为hadoop用户连接到具有多个主节点的 EMR 群集的领导主节点。

    • 运行以下命令来续订hadoop用户。

      kinit -kt <keytab_file> <principal>

      通常情况下,密钥表文件位于/etc/hadoop.keytab和本金采用格式hadoop/<hostname>@<REALM>

    注意

    此替代方法将在 Kerberos 票证有效的时间段内生效。默认情况下,此持续时间为 10 小时,但可以通过 Kerberos 设置进行配置。一旦 Kerberos 票证过期,您必须重新运行上述命令。

  • 亚马逊 EMR 6.1.0 中存在影响运行 Presto 的集群的问题。经过较长的一段时间(天)后,群集可能会抛出错误,例如 “su: 无法执行 /bin/bash:资源暂时不可用” 或 “通道 0 上的 shell 请求失败”。此问题是由内部 Amazon EMR 进程(即时控制器)产生过多的轻量级进程 (LWP) 导致的,这最终导致 Hadoop 用户超出其 nproc 限制。这可以防止用户打开其他进程。此问题的解决方案是升级到 EMR 6.2.0。

6.1.0 组件版本

下面列出了 Amazon EMR 随此发布版本一起安装的组件。一些组件作为大数据应用程序包的一部分安装。其他组件是独有的,并且已为系统流程和功能安装这些组件。它们通常以 emraws 开头。最新的 Amazon EMR 发布版本中的大数据应用程序包通常是在社区中找到的最新版本。我们尽快在中提供社区发布版本。

Amazon EMR 中的某些组件与社区版本不同。这些组件具有以下形式的 CommunityVersion-amzn-EmrVersion 的版本标签。EmrVersion 从 0 开始。例如,如果开源社区组件名为myapp-component已对版本 2.2 进行三次修改以包含在不同的 Amazon EMR 发行版中,其发布版本将列出为2.2-amzn-2

组件 Version 说明
aws-sagemaker-spark-sdk 1.3.0 Amazon SageMaker Spark 开发工具包
emr-ddb 4.14.0 适用于 Hadoop 生态系统应用程序的 Amazon DynamoDB 连接器。
emr-goodies 3.1.0 适用于 Hadoop 生态系统的方便易用的库。
emr-kinesis 3.5.0 适用于 Hadoop 生态系统应用程序的 Amazon Kinesis 连接器。
emr-s3-dist-cp emrfs 针对 Amazon S3 优化的分布式复制应用程序。
emr-s3-select 2.0.0 EMR S3 Select 连接器
emrfs 2.42.0 适用于 Hadoop 生态系统应用程序的 Amazon S3 连接器。
flink-client 1.11.0 Apache Flink 命令行客户端脚本和应用程序。
ganglia-monitor 3.7.2 适用于 Hadoop 生态系统应用程序的嵌入式 Ganglia 代理以及 Ganglia 监控代理。
ganglia-metadata-collector 3.7.2 用于从 Ganglia 监控代理中聚合指标的 Ganglia 元数据收集器。
ganglia-web 3.7.1 用于查看由 Ganglia 元数据收集器收集的指标的 Web 应用程序。
hadoop-client 3.2.1-amzn-1 Hadoop 命令行客户端,如“hdfs”、“hadoop”或“yarn”。
hadoop-hdfs-datanode 3.2.1-amzn-1 用于存储数据块的 HDFS 节点级服务。
hadoop-hdfs-library 3.2.1-amzn-1 HDFS 命令行客户端和库
hadoop-hdfs-namenode 3.2.1-amzn-1 用于跟踪文件名和数据块位置的 HDFS 服务。
hadoop-hdfs-journalnode 3.2.1-amzn-1 用于管理 HA 集群上的 Hadoop 文件系统日志的 HDFS 服务。
hadoop-httpfs-server 3.2.1-amzn-1 用于 HDFS 操作的 HTTP 终端节点。
hadoop-kms-server 3.2.1-amzn-1 基于 Hadoop 的 KeyProvider API 的加密密钥管理服务器。
hadoop-mapred 3.2.1-amzn-1 用于运行 MapReduce 应用程序的 MapReduce 执行引擎库。
hadoop-yarn-nodemanager 3.2.1-amzn-1 用于管理单个节点上的容器的 YARN 服务。
hadoop-yarn-resourcemanager 3.2.1-amzn-1 用于分配和管理群集资源与分布式应用程序的 YARN 服务。
hadoop-yarn-timeline-server 3.2.1-amzn-1 用于检索 YARN 应用程序的当前信息和历史信息的服务。
hbase-hmaster 2.2.5 适用于负责协调区域和执行管理命令的 HBase 集群的服务。
hbase-region-server 2.2.5 用于服务于一个或多个 HBase 区域的服务。
hbase-client 2.2.5 HBase 命令行客户端。
hbase-rest-server 2.2.5 用于向 HBase 提供 RESTful HTTP 终端节点的服务。
hbase-thrift-server 2.2.5 用于向 HBase 提供 Thrift 终端节点的服务。
hcatalog-client 3.1.2-amzn-2 用于操作 hcatalog-server 的“hcat”命令行客户端。
hcatalog-server 3.1.2-amzn-2 用于为分布式应用程序提供 HCatalog、表和存储管理层的服务。
hcatalog-webhcat-server 3.1.2-amzn-2 用于向 HCatalog 提供 REST 接口的 HTTP 终端节点。
hive-client 3.1.2-amzn-2 Hive 命令行客户端。
hive-hbase 3.1.2-amzn-2 Hive-hbase 客户端。
hive-metastore-server 3.1.2-amzn-2 用于访问 Hive 元存储 (一个用于存储 Hadoop 操作中的 SQL 的元数据的语义存储库) 的服务。
hive-server2 3.1.2-amzn-2 用于将 Hive 查询作为 Web 请求接受的服务。
hudi 0.5.2-incubating-amzn-2 增量处理框架,以支持低延迟和高效率的数据管道。
hudi-presto 0.5.2-incubating-amzn-2 用于运行 Presto 以及 Hudl 的捆绑库。
hudi-prestosql 0.5.2-incubating-amzn-2 用于运行 PrestoSQL 以及 HudSql 的捆绑库。
hudi-sparf 0.5.2-incubating-amzn-2 用于运行 Spark 以及 Hudi 的捆绑库。
hue-server 4.7.1 用于使用 Hadoop 生态系统应用程序分析数据的 Web 应用程序
jupyterhub 1.1.0 Jupyter 笔记本的多用户服务器
livy-server 0.7.0-incubating 用于与 Apache Spark 交互的 REST 接口
nginx 1.12.1 nginx [引擎 x] 是 HTTP 和反向代理服务器
mxnet 1.6.0 用于深度学习的灵活的、可扩展且高效的库。
mariadb-server 5.5.64+ MariaDB 数据库服务器。
nvidia-cuda 9.2.88 Nvidia 驱动程序和 Cuda 工具包
oozie-client 5.2.0 Oozie 命令行客户端。
oozie-server 5.2.0 用于接受 Oozie 工作流请求的服务。
opencv 4.3.0 开源计算机视觉库。
phoenix-library 5.0.0-HBase-2.0 服务器和客户端的 phoenix 库
phoenix-query-server 5.0.0-HBase-2.0 向 Avatica API 提供 JDBC 访问权限以及协议缓冲区和 JSON 格式访问权限的轻量级服务器
presto-coordinator 0.232 用于在 presto-worker 之中接受查询并管理查询的服务。
presto-worker 0.232 用于执行查询的各个部分的服务。
presto-client 0.232 Presto 命令行客户端,安装在 HA 集群的备用主服务器(未启动 Presto 服务器)上。
prestosq-协调器 338 用于在 prestoql-worker 之中接受查询并管理查询的服务。
prestosq-worker 338 用于执行查询的各个部分的服务。
prestosq-client 338 Presto 命令行客户端,安装在 HA 集群的备用主服务器(未启动 Presto 服务器)上。
pig-client 0.17.0 Pig 命令行客户端。
r 3.4.3 用于统计计算的 R 项目
ranger-kms-server 2.0.0 Apache Ranger 密钥管理系统
spark-client 3.0.0-amzn-0 Spark 命令行客户端。
spark-history-server 3.0.0-amzn-0 用于查看完整的 Spark 应用程序的生命周期的已记录事件的 Web UI。
spark-on-yarn 3.0.0-amzn-0 适用于 YARN 的内存中执行引擎。
spark-yarn-slave 3.0.0-amzn-0 YARN 从属项所需的 Apache Spark 库。
sqoop-client 1.4.7 Apache Sqoop 命令行客户端。
tensorflow 2.1.0 适用于高性能数值计算的 TensorFlow 开源软件库。
tez-on-yarn 0.9.2 tez YARN 应用程序和库。
webserver 2.4.41+ Apache HTTP 服务器。
zeppelin-server 0.9.0-SNAPSNAT 支持交互式数据分析的基于 Web 的笔记本电脑。
zookeeper-server 3.4.14 用于维护配置信息、命名、提供分布式同步以及提供组服务的集中式服务。
zookeeper-client 3.4.14 ZooKeeper 命令行客户端。

6.1.0 配置分类

配置分类允许您自定义应用程序。这些通常与应用程序的配置 XML 文件相对应,例如hive-site.xml。有关更多信息,请参阅 配置应用程序

EMR-6.1.0 分类
分类 说明

capacity-scheduler

更改 Hadoop 的 capacity-scheduler.xml 文件中的值。

container-executor

更改 Hadoop YARN 的 container-executor.cfg 文件中的值。

container-log4j

更改 Hadoop YARN 的 container-log4j.properties 文件中的值。

core-site

更改 Hadoop 的 core-site.xml 文件中的值。

emrfs-site

更改 EMRFS 设置。

flink-conf

更改 flink-conf.yaml 设置。

flink-log4j

更改 Flink log4j.properties 设置。

flink-log4j-yarn-session

更改 Flink log4j-yarn-session.properties 设置。

flink-log4j-cli

更改 Flink log4j-cli.properties 设置。

hadoop-env

更改适用于所有 Hadoop 组件的 Hadoop 环境中的值。

hadoop-log4j

更改 Hadoop 的 log4j.properties 文件中的值。

hadoop-ssl-server

更改 hadoop ssl 服务器配置

hadoop-ssl-client

更改 hadoop ssl 客户端配置

hbase

适用于 Apache HBase 的 Amazon EMR 辅助设置。

hbase-env

更改 HBase 环境中的值。

hbase-log4j

更改 HBase 的 hbase-log4j.properties 文件中的值。

hbase-metrics

更改 HBase 的 hadoop-metrics2-hbase.properties 文件中的值。

hbase-policy

更改 HBase 的 hbase-policy.xml 文件中的值。

hbase-site

更改 HBase 的 hbase-site.xml 文件中的值。

hdfs-encryption-zones

配置 HDFS 加密区域。

hdfs-env

更改 HDFS 环境中的值。

hdfs-site

更改 HDFS 的 hdfs-site.xml 中的值。

hcatalog-env

更改 HCatalog 的环境中的值。

hcatalog-server-jndi

更改 HCatalog 的 jndi.properties 中的值。

hcatalog-server-proto-hive-site

更改 HCatalog 的 proto-hive-site.xml 中的值。

hcatalog-webhcat-env

更改 HCatalog WebHCat 的环境中的值。

hcatalog-webhcat-log4j2

更改 HCatalog WebHCat 的 log4j2.properties 中的值。

hcatalog-webhcat-site

更改 HCatalog WebHCat 的 webhcat-site.xml 文件中的值。

hive

适用于 Apache Hive 的 Amazon EMR 辅助设置。

hive-beeline-log4j2

更改 Hive 的 beeline-log4j2.properties 文件中的值。

hive-parquet-logging

更改 Hive parquet-logging.properties 文件中的值。

hive-env

更改 Hive 环境中的值。

hive-exec-log4j2

更改 Hive 的 hive-exec-log4j2.properties 文件中的值。

hive-llap-daemon-log4j2

更改 Hive 的 llap-daemon-log4j2.properties 文件中的值。

hive-log4j2

更改 Hive 的 hive-log4j2.properties 文件中的值。

hive-site

更改 Hive 的 hive-site.xml 文件中的值

hiveserver2-site

更改 Hive Server2 的 hiveserver2-site.xml 文件中的值

hue-ini

更改 Hue 的 ini 文件中的值

httpfs-env

更改 HTTPFS 环境中的值。

httpfs-site

更改 Hadoop 的 httpfs-site.xml 文件中的值。

hadoop-kms-acls

更改 Hadoop 的 kms-acls.xml 文件中的值。

hadoop-kms-env

更改 Hadoop KMS 环境中的值。

hadoop-kms-log4j

更改 Hadoop 的 kms-log4j.properties 文件中的值。

hadoop-kms-site

更改 Hadoop 的 kms-site.xml 文件中的值。

hudi-env

更改 HDFS 环境中的值。

jupyter-notebook-conf

更改 Jupyter Notebook 的 jupyter_notebook_config.py 文件中的值。

jupyter-hub-conf

更改 JupyterHubs 的 jupyterhub_config.py 文件中的值。

jupyter-s3-conf

配置 Jupyter Notebook S3 持久性。

jupyter-sparkmagic-conf

更改 Sparkmagic 的 config.json 文件中的值。

livy-conf

更改 Livy 的 livy.conf 文件中的值。

livy-env

更改 Livy 环境中的值。

livy-log4j

更改 Livy log4j.properties 设置。

mapred-env

更改 MapReduce 应用程序的环境中的值。

mapred-site

更改 MapReduce 应用程序的 mapred-site.xml 文件中的值。

oozie-env

更改 Oozie 的环境中的值。

oozie-log4j

更改 Oozie 的 oozie-log4j.properties 文件中的值。

oozie-site

更改 Oozie 的 oozie-site.xml 文件中的值。

phoenix-hbase-metrics

更改 Phoenix 的 hadoop-metrics2-hbase.properties 文件中的值。

phoenix-hbase-site

更改 Phoenix 的 hbase-site.xml 文件中的值。

phoenix-log4j

更改 Phoenix 的 log4j.properties 文件中的值。

phoenix-metrics

更改 Phoenix 的 hadoop-metrics2-phoenix.properties 文件中的值。

pig-env

更改 Pig 环境中的值。

pig-properties

更改 Pig 的 pig.properties 文件中的值。

pig-log4j

更改 Pig 的 log4j.properties 文件中的值。

presto-log

更改 Presto 的 log.properties 文件中的值。

presto-config

更改 Presto 的 config.properties 文件中的值。

presto-password-authenticator

更改 Presto 的 password-authenticator.properties 文件中的值。

presto-env

更改 Presto 的 presto-env.sh 文件中的值。

presto-node

更改 Presto 的 node.properties 文件中的值。

presto-connector-blackhole

更改 Presto 的 blackhole.properties 文件中的值。

presto-connector-cassandra

更改 Presto 的 cassandra.properties 文件中的值。

presto-connector-hive

更改 Presto 的 hive.properties 文件中的值。

presto-connector-jmx

更改 Presto 的 jmx.properties 文件中的值。

presto-connector-kafka

更改 Presto 的 kafka.properties 文件中的值。

presto-connector-localfile

更改 Presto 的 localfile.properties 文件中的值。

presto-connector-memory

更改 Presto 的 memory.properties 文件中的值。

presto-connector-mongodb

更改 Presto 的 mongodb.properties 文件中的值。

presto-connector-mysql

更改 Presto 的 mysql.properties 文件中的值。

presto-connector-postgresql

更改 Presto 的 postgresql.properties 文件中的值。

presto-connector-raptor

更改 Presto 的 raptor.properties 文件中的值。

presto-connector-redis

更改 Presto 的 redis.properties 文件中的值。

presto-connector-redshift

更改 Presto 的 redshift.properties 文件中的值。

presto-connector-tpch

更改 Presto 的 tpch.properties 文件中的值。

presto-connector-tpcds

更改 Presto 的 tpcds.properties 文件中的值。

prestosql-log

更改 Presto 的 log.properties 文件中的值。

prestosql-config

更改 Presto 的 config.properties 文件中的值。

prestosq-password-authenticator

更改 Presto 的 password-authenticator.properties 文件中的值。

prestol-env

更改 Presto 的 presto-env.sh 文件中的值。

prestosq-SNAPSNAT

更改 PrestoSQL 的 node.properties 文件中的值。

prestosql-connector-blackhole

更改 PrestoSQL 的黑hole.properties 文件中的值。

prestosq-connector-cassandra

更改 PrestoSQL 的 cassandra.properties 文件中的值。

prestosq-connector-hive

更改 PrestoSQL 的 hive.properties 文件中的值。

Prestosq-连接器jmx

更改 PrestoSQL 的 jmx.properties 文件中的值。

prestosq-connector-kafka

更改 PrestoSQL 的 kafka.properties 文件中的值。

prestosql-connector-localfile

更改 PrestoSQL 的 localfile.properties 文件中的值。

prestosq-connector-memory

更改 PrestoSQL 的 memor.properties 文件中的值。

prestosq-连接器-蒙古数据库

更改 PrestoSQL 的 mongodb.properties 文件中的值。

prestosq-connector-mysql

更改 PrestoSQL 的 mysql.properties 文件中的值。

prestosql-connector-postgresql

更改 PrestoSQL 的 postgresql.properties 文件中的值。

presto-connector-raptor

更改 PrestoSQL 的 raptor.properties 文件中的值。

prestosq-connector-redis

更改 PrestoSQL 的 redis.properties 文件中的值。

prestosq-connector-redshift

更改 PrestoSQL 的 redshift.properties 文件中的值。

presto-connector-tpch

更改 PrestoSQL 的 tpch.properties 文件中的值。

prestosq-connector-tpcds

更改 PrestoSQL 的 tpcds.properties 文件中的值。

ranger-kms-dbks-site

更改 Ranger KMS 的 dbks-site.xml 文件中的值。

ranger-kms-site

更改 Ranger KMS 的 ranger-kms-site.xml 文件中的值。

ranger-kms-env

更改 Ranger KMS 环境中的值。

ranger-kms-log4j

更改 Ranger KMS 的 kms-log4j.properties 文件中的值。

ranger-kms-db-ca

更改 S3 上用于与 Ranger KMS 进行 MySQL SSL 连接的 CA 文件的值。

spark

适用于 Apache Spark 的 Amazon EMR 辅助设置。

spark-defaults

更改 Spark 的 spark-defaults.conf 文件中的值。

spark-env

更改 Spark 环境中的值。

spark-hive-site

更改 Spark 的 hive-site.xml 文件中的值

spark-log4j

更改 Spark 的 log4j.properties 文件中的值。

spark-metrics

更改 Spark 的 metrics.properties 文件中的值。

sqoop-env

更改 Sqoop 的环境中的值。

sqoop-oraoop-site

更改 Sqoop OraOop 的 oraoop-site.xml 文件中的值。

sqoop-site

更改 Sqoop 的 sqoop-site.xml 文件中的值。

tez-site

更改 Tez 的 tez-site.xml 文件中的值。

yarn-env

更改 YARN 环境中的值。

yarn-site

更改 YARN 的 yarn-site.xml 文件中的值。

zeppelin-env

更改 Zeppelin 环境中的值。

zookeeper-config

更改 ZooKeeper 的 zoo.cfg 文件中的值。

zookeeper-log4j

更改 ZooKeeper 的 log4j.properties 文件中的值。

6.0.0

6.0.0 应用程序版本

此版本支持以下应用程序:GangliaHadoopHBaseHCatalogHiveHueJupyterHubLivyMXNetOoziePhoenixPrestoSparkTensorFlowTezZeppelin, 和ZooKeeper

下图描述了此版本的中提供的应用程序版本以及前四个 Amazon EMR 发布版本中的应用程序版本。

有关每个 Amazon EMR 版本的的全面历史记录,请参见下面的示意图:

6.0.0 发布说明

以下发布说明包括有关 Amazon EMR 发布版本 6.0.0 的信息。

首次发布日期:2020 年 3 月 10 日

支持的应用程序

  • Amazon SDK for Java 版本 1.11.711

  • Ganglia 版本 3.7.2

  • Hadoop 版本 3.2.1

  • HBase 版本 2.2.3

  • HCatalog 版本 3.1.2

  • Hive 版本 3.1.2

  • Hudi 版本 0.5.0-incubating

  • Hue 版本 4.4.0

  • JupyterHub 版本 1.0.0

  • Livy 版本 0.6.0

  • MXNet 版本 1.5.1

  • Oozie 版本 5.1.0

  • Phoenix 版本 5.0.0

  • Presto 版本 0.230

  • Spark 版本 2.4.4

  • TensorFlow 版本 1.14.0

  • Zeppelin 版本 0.9.0-SNAPSHOT

  • Zookeeper 版本 3.4.14

  • 连接器和驱动器:DynamoDB 连接器 4.14.0

注意

Flink、Sqoop、Pig 和 Mahout 在 Amazon EMR 版本 6.0.0 中不可用。

新功能

更改、增强和已解决的问题

  • Amazon Linux

    • Amazon Linux 2 是 EMR 6.x 发布版本系列的操作系统。

    • systemd用于服务管理,而不是upstart在亚马逊 Linux 中使用过 1.

  • Java 开发工具包 (JDK)

    • Coretto JDK 8 是 EMR 6.x 发布版本系列的默认 JDK。

  • Scala

    • Scala 2.12 与 Apache Spark 和 Apache Livy 一起使用。

  • Python 3

    • Python 3 现在是 EMR 中的默认 Python 版本。

  • YARN 节点标签

    • 从 Amazon EMR 6.x 发行版系列开始,默认情况下禁用 YARN 节点标签功能。默认情况下,应用程序主进程可以在核心节点和任务节点上运行。您可以通过配置以下属性来启用 YARN 节点标签功能:yarn.node-labels.enabledyarn.node-labels.am.default-node-label-expression。有关更多信息,请参阅了解主节点、核心节点和任务节点

已知问题

  • 较早的 AL2 上的 “最大打开文件” 限制较低。 亚马逊 EMR 版本:EMR 5.30.x、EMR-5.31.0、EMR-5.32.0、EMR-6.0.0、EMR-6.1.0 和 EMR-6.2.0 基于旧版本的 OFAMZON Linux 2 (AL2),当使用默认 AMI 创建 EMR 集群时,这些版本的下限设置为 “最大打开文件”。提交 Spark 作业时,打开的文件下限会导致 “打开的文件过多” 错误。在受影响的 EMR 版本中,亚马逊 EMR 默认 AMI 对于 “最大打开文件” 的默认限制设置为 4096,低于最新亚马逊 Linux 2 AMI 中的 65536 文件限制。当 Spark 驱动程序和执行程序尝试打开超过 4096 个文件时,“最大打开文件” 的下限设置会导致 Spark 作业失败。要修复此问题,Amazon EMR 有一个引导操作 (BA) 脚本,用于在创建集群时调整 ulimit 设置。亚马逊 EMR 6.3.0 和 5.33.0 版将包括一个具有更高 “最大打开文件” 设置的永久修复程序。

    此问题的以下解决方法允许您显式将实例控制器 ulimit 设置为最多 65536 文件。

    从命令行显式设置 ulimit

    1. 编辑/etc/systemd/system/instance-controller.service将以下参数添加到服务部分。

      LimitNOFILE=65536

      LimitNPROC=65536

    2. 重启实例 Controller

      $ sudo systemctl daemon-reload

      $ sudo systemctl restart instance-controller

    使用引导操作设置 u限制 (BA)

    您还可以使用引导操作 (BA) 脚本在群集创建时将实例控制器 ulimit 配置为 65536 个文件。

    #!/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
  • Spark 交互式 shell(包括 PySpark、SparkR 和 spark-shell)不支持将 Docker 与其他库一起使用。

  • 要在亚马逊 EMR 6.0.0 版中使用 Python 3,您必须将PATHyarn.nodemanager.env-whitelist

  • 当您使用时,不支持 Live Long at Process (LLAP) 功能。AmazonGlue 数据目录作为 Hive 的元存储。

  • 将 Amazon EMR 6.0.0 与 Spark 和 Docker 集成一起使用时,您需要使用相同的实例类型和相同数量的 EBS 卷配置集群中的实例,以避免在使用 Docker 运行时提交 Spark 作业时出现故障。

  • 在亚马逊 EMR 6.0.0 中,HBase Amazon S3 存储模式受HBASE-24286. 问题。使用现有 S3 数据创建集群时,HBase 主服务器无法初始化。

  • 具有多个主节点和 Kerberos 身份验证的群集中的已知问题

    如果在 EMR 5.20.0 版及更高版本中运行具有多个主节点和 Kerberos 身份验证的群集,则在群集运行一段时间后,您可能会遇到群集操作(如缩小或步骤提交)的问题。时间段取决于您定义的 Kerberos 票证有效期。缩小问题会影响您提交的自动缩小和显式缩小请求。其他群集操作也可能受到影响。

    解决办法:

    • SSH 作为hadoop用户连接到具有多个主节点的 EMR 群集的领导主节点。

    • 运行以下命令来续订hadoop用户。

      kinit -kt <keytab_file> <principal>

      通常情况下,密钥表文件位于/etc/hadoop.keytab和本金采用格式hadoop/<hostname>@<REALM>

    注意

    此替代方法将在 Kerberos 票证有效的时间段内生效。默认情况下,此持续时间为 10 小时,但可以通过 Kerberos 设置进行配置。一旦 Kerberos 票证过期,您必须重新运行上述命令。

6.0.0 组件版本

下面列出了 Amazon EMR 随此发布版本一起安装的组件。一些组件作为大数据应用程序包的一部分安装。其他组件是独有的,并且已为系统流程和功能安装这些组件。它们通常以 emraws 开头。最新的 Amazon EMR 发布版本中的大数据应用程序包通常是在社区中找到的最新版本。我们尽快在中提供社区发布版本。

Amazon EMR 中的某些组件与社区版本不同。这些组件具有以下形式的 CommunityVersion-amzn-EmrVersion 的版本标签。EmrVersion 从 0 开始。例如,如果开源社区组件名为myapp-component已对版本 2.2 进行三次修改以包含在不同的 Amazon EMR 发行版中,其发布版本将列出为2.2-amzn-2

组件 Version 说明
aws-sagemaker-spark-sdk 1.2.6 Amazon SageMaker Spark 开发工具包
emr-ddb 4.14.0 适用于 Hadoop 生态系统应用程序的 Amazon DynamoDB 连接器。
emr-goodies 3.0.0 适用于 Hadoop 生态系统的方便易用的库。
emr-kinesis 3.5.0 适用于 Hadoop 生态系统应用程序的 Amazon Kinesis 连接器。
emr-s3-dist-cp emrfs 针对 Amazon S3 优化的分布式复制应用程序。
emr-s3-select 1.5.0 EMR S3 Select 连接器
emrfs 2.39.0 适用于 Hadoop 生态系统应用程序的 Amazon S3 连接器。
ganglia-monitor 3.7.2 适用于 Hadoop 生态系统应用程序的嵌入式 Ganglia 代理以及 Ganglia 监控代理。
ganglia-metadata-collector 3.7.2 用于从 Ganglia 监控代理中聚合指标的 Ganglia 元数据收集器。
ganglia-web 3.7.1 用于查看由 Ganglia 元数据收集器收集的指标的 Web 应用程序。
hadoop-client 3.2.1-amzn-0 Hadoop 命令行客户端,如“hdfs”、“hadoop”或“yarn”。
hadoop-hdfs-datanode 3.2.1-amzn-0 用于存储数据块的 HDFS 节点级服务。
hadoop-hdfs-library 3.2.1-amzn-0 HDFS 命令行客户端和库
hadoop-hdfs-namenode 3.2.1-amzn-0 用于跟踪文件名和数据块位置的 HDFS 服务。
hadoop-hdfs-journalnode 3.2.1-amzn-0 用于管理 HA 集群上的 Hadoop 文件系统日志的 HDFS 服务。
hadoop-httpfs-server 3.2.1-amzn-0 用于 HDFS 操作的 HTTP 终端节点。
hadoop-kms-server 3.2.1-amzn-0 基于 Hadoop 的 KeyProvider API 的加密密钥管理服务器。
hadoop-mapred 3.2.1-amzn-0 用于运行 MapReduce 应用程序的 MapReduce 执行引擎库。
hadoop-yarn-nodemanager 3.2.1-amzn-0 用于管理单个节点上的容器的 YARN 服务。
hadoop-yarn-resourcemanager 3.2.1-amzn-0 用于分配和管理群集资源与分布式应用程序的 YARN 服务。
hadoop-yarn-timeline-server 3.2.1-amzn-0 用于检索 YARN 应用程序的当前信息和历史信息的服务。
hbase-hmaster 2.2.3 适用于负责协调区域和执行管理命令的 HBase 集群的服务。
hbase-region-server 2.2.3 用于服务于一个或多个 HBase 区域的服务。
hbase-client 2.2.3 HBase 命令行客户端。
hbase-rest-server 2.2.3 用于向 HBase 提供 RESTful HTTP 终端节点的服务。
hbase-thrift-server 2.2.3 用于向 HBase 提供 Thrift 终端节点的服务。
hcatalog-client 3.1.2-amzn-0 用于操作 hcatalog-server 的“hcat”命令行客户端。
hcatalog-server 3.1.2-amzn-0 用于为分布式应用程序提供 HCatalog、表和存储管理层的服务。
hcatalog-webhcat-server 3.1.2-amzn-0 用于向 HCatalog 提供 REST 接口的 HTTP 终端节点。
hive-client 3.1.2-amzn-0 Hive 命令行客户端。
hive-hbase 3.1.2-amzn-0 Hive-hbase 客户端。
hive-metastore-server 3.1.2-amzn-0 用于访问 Hive 元存储 (一个用于存储 Hadoop 操作中的 SQL 的元数据的语义存储库) 的服务。
hive-server2 3.1.2-amzn-0 用于将 Hive 查询作为 Web 请求接受的服务。
hudi 0.5.0-incubating-amzn-1 增量处理框架,以支持低延迟和高效率的数据管道。
hudi-presto 0.5.0-incubating-amzn-1 用于运行 Presto 以及 Hudl 的捆绑库。
hue-server 4.4.0 用于使用 Hadoop 生态系统应用程序分析数据的 Web 应用程序
jupyterhub 1.0.0 Jupyter 笔记本的多用户服务器
livy-server 0.6.0-incubating 用于与 Apache Spark 交互的 REST 接口
nginx 1.12.1 nginx [引擎 x] 是 HTTP 和反向代理服务器
mxnet 1.5.1 用于深度学习的灵活的、可扩展且高效的库。
mariadb-server 5.5.64+ MariaDB 数据库服务器。
nvidia-cuda 9.2.88 Nvidia 驱动程序和 Cuda 工具包
oozie-client 5.1.0 Oozie 命令行客户端。
oozie-server 5.1.0 用于接受 Oozie 工作流请求的服务。
opencv 3.4.0 开源计算机视觉库。
phoenix-library 5.0.0-HBase-2.0 服务器和客户端的 phoenix 库
phoenix-query-server 5.0.0-HBase-2.0 向 Avatica API 提供 JDBC 访问权限以及协议缓冲区和 JSON 格式访问权限的轻量级服务器
presto-coordinator 0.230 用于在 presto-worker 之中接受查询并管理查询的服务。
presto-worker 0.230 用于执行查询的各个部分的服务。
presto-client 0.230 Presto 命令行客户端,安装在 HA 集群的备用主服务器(未启动 Presto 服务器)上。
r 3.4.3 用于统计计算的 R 项目
spark-client 2.4.4 Spark 命令行客户端。
spark-history-server 2.4.4 用于查看完整的 Spark 应用程序的生命周期的已记录事件的 Web UI。
spark-on-yarn 2.4.4 适用于 YARN 的内存中执行引擎。
spark-yarn-slave 2.4.4 YARN 从属项所需的 Apache Spark 库。
tensorflow 1.14.0 适用于高性能数值计算的 TensorFlow 开源软件库。
tez-on-yarn 0.9.2 tez YARN 应用程序和库。
webserver 2.4.41+ Apache HTTP 服务器。
zeppelin-server 0.9.0-SNAPSHOT 支持交互式数据分析的基于 Web 的笔记本电脑。
zookeeper-server 3.4.14 用于维护配置信息、命名、提供分布式同步以及提供组服务的集中式服务。
zookeeper-client 3.4.14 ZooKeeper 命令行客户端。

6.0.0 配置分类

配置分类允许您自定义应用程序。这些通常与应用程序的配置 XML 文件相对应,例如hive-site.xml。有关更多信息,请参阅 配置应用程序

emr-6.0.0 分类
分类 说明

capacity-scheduler

更改 Hadoop 的 capacity-scheduler.xml 文件中的值。

container-executor

更改 Hadoop YARN 的 container-executor.cfg 文件中的值。

container-log4j

更改 Hadoop YARN 的 container-log4j.properties 文件中的值。

core-site

更改 Hadoop 的 core-site.xml 文件中的值。

emrfs-site

更改 EMRFS 设置。

hadoop-env

更改适用于所有 Hadoop 组件的 Hadoop 环境中的值。

hadoop-log4j

更改 Hadoop 的 log4j.properties 文件中的值。

hadoop-ssl-server

更改 hadoop ssl 服务器配置

hadoop-ssl-client

更改 hadoop ssl 客户端配置

hbase

适用于 Apache HBase 的 Amazon EMR 辅助设置。

hbase-env

更改 HBase 环境中的值。

hbase-log4j

更改 HBase 的 hbase-log4j.properties 文件中的值。

hbase-metrics

更改 HBase 的 hadoop-metrics2-hbase.properties 文件中的值。

hbase-policy

更改 HBase 的 hbase-policy.xml 文件中的值。

hbase-site

更改 HBase 的 hbase-site.xml 文件中的值。

hdfs-encryption-zones

配置 HDFS 加密区域。

hdfs-env

更改 HDFS 环境中的值。

hdfs-site

更改 HDFS 的 hdfs-site.xml 中的值。

hcatalog-env

更改 HCatalog 的环境中的值。

hcatalog-server-jndi

更改 HCatalog 的 jndi.properties 中的值。

hcatalog-server-proto-hive-site

更改 HCatalog 的 proto-hive-site.xml 中的值。

hcatalog-webhcat-env

更改 HCatalog WebHCat 的环境中的值。

hcatalog-webhcat-log4j2

更改 HCatalog WebHCat 的 log4j2.properties 中的值。

hcatalog-webhcat-site

更改 HCatalog WebHCat 的 webhcat-site.xml 文件中的值。

hive

适用于 Apache Hive 的 Amazon EMR 辅助设置。

hive-beeline-log4j2

更改 Hive 的 beeline-log4j2.properties 文件中的值。

hive-parquet-logging

更改 Hive parquet-logging.properties 文件中的值。

hive-env

更改 Hive 环境中的值。

hive-exec-log4j2

更改 Hive 的 hive-exec-log4j2.properties 文件中的值。

hive-llap-daemon-log4j2

更改 Hive 的 llap-daemon-log4j2.properties 文件中的值。

hive-log4j2

更改 Hive 的 hive-log4j2.properties 文件中的值。

hive-site

更改 Hive 的 hive-site.xml 文件中的值

hiveserver2-site

更改 Hive Server2 的 hiveserver2-site.xml 文件中的值

hue-ini

更改 Hue 的 ini 文件中的值

httpfs-env

更改 HTTPFS 环境中的值。

httpfs-site

更改 Hadoop 的 httpfs-site.xml 文件中的值。

hadoop-kms-acls

更改 Hadoop 的 kms-acls.xml 文件中的值。

hadoop-kms-env

更改 Hadoop KMS 环境中的值。

hadoop-kms-log4j

更改 Hadoop 的 kms-log4j.properties 文件中的值。

hadoop-kms-site

更改 Hadoop 的 kms-site.xml 文件中的值。

jupyter-notebook-conf

更改 Jupyter Notebook 的 jupyter_notebook_config.py 文件中的值。

jupyter-hub-conf

更改 JupyterHubs 的 jupyterhub_config.py 文件中的值。

jupyter-s3-conf

配置 Jupyter Notebook S3 持久性。

jupyter-sparkmagic-conf

更改 Sparkmagic 的 config.json 文件中的值。

livy-conf

更改 Livy 的 livy.conf 文件中的值。

livy-env

更改 Livy 环境中的值。

livy-log4j

更改 Livy log4j.properties 设置。

mapred-env

更改 MapReduce 应用程序的环境中的值。

mapred-site

更改 MapReduce 应用程序的 mapred-site.xml 文件中的值。

oozie-env

更改 Oozie 的环境中的值。

oozie-log4j

更改 Oozie 的 oozie-log4j.properties 文件中的值。

oozie-site

更改 Oozie 的 oozie-site.xml 文件中的值。

phoenix-hbase-metrics

更改 Phoenix 的 hadoop-metrics2-hbase.properties 文件中的值。

phoenix-hbase-site

更改 Phoenix 的 hbase-site.xml 文件中的值。

phoenix-log4j

更改 Phoenix 的 log4j.properties 文件中的值。

phoenix-metrics

更改 Phoenix 的 hadoop-metrics2-phoenix.properties 文件中的值。

presto-log

更改 Presto 的 log.properties 文件中的值。

presto-config

更改 Presto 的 config.properties 文件中的值。

presto-password-authenticator

更改 Presto 的 password-authenticator.properties 文件中的值。

presto-env

更改 Presto 的 presto-env.sh 文件中的值。

presto-node

更改 Presto 的 node.properties 文件中的值。

presto-connector-blackhole

更改 Presto 的 blackhole.properties 文件中的值。

presto-connector-cassandra

更改 Presto 的 cassandra.properties 文件中的值。

presto-connector-hive

更改 Presto 的 hive.properties 文件中的值。

presto-connector-jmx

更改 Presto 的 jmx.properties 文件中的值。

presto-connector-kafka

更改 Presto 的 kafka.properties 文件中的值。

presto-connector-localfile

更改 Presto 的 localfile.properties 文件中的值。

presto-connector-memory

更改 Presto 的 memory.properties 文件中的值。

presto-connector-mongodb

更改 Presto 的 mongodb.properties 文件中的值。

presto-connector-mysql

更改 Presto 的 mysql.properties 文件中的值。

presto-connector-postgresql

更改 Presto 的 postgresql.properties 文件中的值。

presto-connector-raptor

更改 Presto 的 raptor.properties 文件中的值。

presto-connector-redis

更改 Presto 的 redis.properties 文件中的值。

presto-connector-redshift

更改 Presto 的 redshift.properties 文件中的值。

presto-connector-tpch

更改 Presto 的 tpch.properties 文件中的值。

presto-connector-tpcds

更改 Presto 的 tpcds.properties 文件中的值。

ranger-kms-dbks-site

更改 Ranger KMS 的 dbks-site.xml 文件中的值。

ranger-kms-site

更改 Ranger KMS 的 ranger-kms-site.xml 文件中的值。

ranger-kms-env

更改 Ranger KMS 环境中的值。

ranger-kms-log4j

更改 Ranger KMS 的 kms-log4j.properties 文件中的值。

ranger-kms-db-ca

更改 S3 上用于与 Ranger KMS 进行 MySQL SSL 连接的 CA 文件的值。

recordserver-env

更改 EMR RecordServer 环境中的值。

recordserver-conf

更改 EMR RecordServer erver.properties 文件中的值。

recordserver-log4j

更改 EMR RecordServer log4j.properties 文件中的值。

spark

适用于 Apache Spark 的 Amazon EMR 辅助设置。

spark-defaults

更改 Spark 的 spark-defaults.conf 文件中的值。

spark-env

更改 Spark 环境中的值。

spark-hive-site

更改 Spark 的 hive-site.xml 文件中的值

spark-log4j

更改 Spark 的 log4j.properties 文件中的值。

spark-metrics

更改 Spark 的 metrics.properties 文件中的值。

tez-site

更改 Tez 的 tez-site.xml 文件中的值。

yarn-env

更改 YARN 环境中的值。

yarn-site

更改 YARN 的 yarn-site.xml 文件中的值。

zeppelin-env

更改 Zeppelin 环境中的值。

zookeeper-config

更改 ZooKeeper 的 zoo.cfg 文件中的值。

zookeeper-log4j

更改 ZooKeeper 的 log4j.properties 文件中的值。