Amazon EMR 发行版 5.30.1 - Amazon EMR
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

Amazon EMR 发行版 5.30.1

应用程序版本

此发行版本支持以下应用程序:FlinkGangliaHBaseHCatalogHadoopHiveHudiHueJupyterHubLivyMXNetMahoutOoziePhoenixPigPrestoSparkSqoopTensorFlowTezZeppelinZooKeeper

下表列出了此版本的 Amazon EMR 中提供的应用程序版本以及前三个 Amazon EMR 发行版中的应用程序版本(若适用)。

有关每个发行版的 Amazon EMR 的应用程序版本的全面历史记录,请参见以下主题:

应用程序版本信息
emr-5.30.1 emr-5.30.0 emr-5.29.0 emr-5.28.1
Amazon SDK for Java 1.11.7591.11.7591.11.6821.11.659
Flink1.10.01.10.01.9.11.9.0
Ganglia3.7.23.7.23.7.23.7.2
HBase1.4.131.4.131.4.101.4.10
HCatalog2.3.62.3.62.3.62.3.6
Hadoop2.8.52.8.52.8.52.8.5
Hive2.3.62.3.62.3.62.3.6
Hudi0.5.2-incubating0.5.2-incubating0.5.0-incubating0.5.0-incubating
Hue4.6.04.6.04.4.04.4.0
JupyterEnterpriseGateway - - - -
JupyterHub1.1.01.1.01.0.01.0.0
Livy0.7.00.7.00.6.00.6.0
MXNet1.5.11.5.11.5.11.5.1
Mahout0.13.00.13.00.13.00.13.0
Oozie5.2.05.2.05.1.05.1.0
Phoenix4.14.34.14.34.14.34.14.3
Pig0.17.00.17.00.17.00.17.0
Presto0.2320.2320.2270.227
Spark2.4.52.4.52.4.42.4.4
Sqoop1.4.71.4.71.4.71.4.7
TensorFlow1.14.01.14.01.14.01.14.0
Tez0.9.20.9.20.9.20.9.2
Trino (PrestoSQL) - - - -
Zeppelin0.8.20.8.20.8.20.8.2
ZooKeeper3.4.143.4.143.4.143.4.14

发布说明

以下发布说明包括有关 Amazon EMR 发行版 5.30.1 的信息。更改与 5.30.0 有关。

首次发布日期:2020 年 6 月 30 日

上次更新时间:2020 年 8 月 24 日

更改、增强功能和解决的问题

  • 修复了实例控制器进程生成无限量进程的问题。

  • 修复了以下问题:Hue 无法运行 Hive 查询并显示“database is locked(数据库已锁定)”消息、阻止执行查询的问题。

  • 修复了一个 Spark 问题,现在可以在 EMR 集群上同时运行更多任务。

  • 修复了一个 Jupyter 笔记本问题,该问题会导致 Jupyter 服务器中出现“too many files open error(打开过多文件错误)”。

  • 修复了集群启动时间的问题。

新功能

  • Amazon EMR 版本 6.x 和 EMR 版本 5.30.1 及更高版本提供了 Tez UI 和 YARN 时间线服务器持久性应用程序界面。无需通过 SSH 连接设置 Web 代理,访问永久性应用程序历史记录的一键式链接即可让您快速访问任务历史记录。活动和已终止集群的日志将在应用程序结束后保留 30 天。有关更多信息,请参阅《Amazon EMR 管理指南》中的查看持久性应用程序用户界面

  • 可以使用 EMR Notebooks 执行 API 通过脚本或命令行来执行 EMR Notebooks。无需使用Amazon控制台以编程方式控制 EMR Notebooks,即可启动、停止、列出和描述 EMR Notebooks 执行。借助参数化笔记本单元,您可以将不同的参数值传递给笔记本,而无需为每组新参数值创建笔记本副本。请参阅 EMR API 操作。有关示例代码,请参阅以编程方式执行 EMR Notebooks 的示例命令。

已知问题

  • 较低版本的 AL2 上的“打开的最大文件数”限制较低。Amazon 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 基于较低版本的 Amazon Linux 2(AL2)。使用默认 AMI 创建 EMR 集群时,这些版本的“打开的最大文件数”具有较低的 ulimit 设置。提交 Spark 作业时,打开的文件数限制较低会导致“Too many open files”错误。在受影响的 EMR 发行版中,Amazon EMR 默认 AMI 的“打开的最大文件数”默认限制设置为 4096,低于最新 Amazon Linux 2 AMI 中的文件限制数 65536。Spark 驱动程序和执行程序尝试打开超过 4096 个文件时,“打开的最大文件数”的较低 ulimit 设置会导致 Spark 任务失败。要修复此问题,Amazon EMR 使用一个引导操作(BA)脚本,用于在创建集群时调整 ulimit 设置。Amazon EMR 发行版 6.3.0 和 5.33.0 将提供一个永久修复,可提高“打开的最大文件数”设置。

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

    从命令行显式设置 ulimit

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

      LimitNOFILE=65536

      LimitNPROC=65536

    2. 重新启动 InstanceController

      $ sudo systemctl daemon-reload

      $ sudo systemctl restart instance-controller

    使用引导操作(BA)设置 ulimit

    您还可以在创建集群时使用引导操作(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 Notebooks

    在 EMR 版本 5.30.1 上,默认情况下,在集群主节点上安装内核和其它 Python 库的功能处于禁用状态。有关此功能的更多信息,请参阅在集群主节点上安装内核和 Python 库

    要启动此功能,请执行以下操作:

    1. 确保附加到 EMR Notebooks 服务角色的权限策略允许执行以下操作:

      elasticmapreduce:ListSteps

      有关更多信息,请参阅 EMR Notebooks 的服务角色

    2. 使用 Amazon CLI 在集群上运行一个设置 EMR Notebooks 的步骤,如以下示例所示。将 us-east-1 替换为您的集群所在的区域。有关更多信息,请参阅使用 Amazon CLI 向集群中添加步骤

      aws emr add-steps --cluster-id MyClusterID --steps Type=CUSTOM_JAR,Name=EMRNotebooksSetup,ActionOnFailure=CONTINUE,Jar=s3://us-east-1.elasticmapreduce/libs/script-runner/script-runner.jar,Args=["s3://awssupportdatasvcs.com/bootstrap-actions/EMRNotebooksSetup/emr-notebooks-setup.sh"]
  • 托管扩展

    在未安装 Presto 的 5.30.0 和 5.30.1 的集群上进行托管扩展操作可能会导致应用程序故障或导致统一的实例组或实例集处于 ARRESTED 状态,尤其是在缩减操作之后快速执行扩展操作时。

    作为解决方法,即使您的任务不需要 Presto,也请在创建集群时将 Presto 选择为要安装的应用程序。

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

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

    解决办法:

    • hadoop 用户身份通过 SSH 连接到具有多个主节点的 EMR 集群的 lead 主节点。

    • 运行以下命令,为 hadoop 用户续订 Kerberos 票证。

      kinit -kt <keytab_file> <principal>

      通常情况下,keytab 文件位于 /etc/hadoop.keytab,而 principal 为 hadoop/<hostname>@<REALM> 格式。

    注意

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

组件版本

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

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

组件 版本 描述
aws-sagemaker-spark-sdk1.3.0Amazon SageMaker Spark 开发工具包
emr-ddb4.14.0适用于 Hadoop 生态系统应用程序的 Amazon DynamoDB 连接器。
emr-goodies2.13.0适用于 Hadoop 生态系统的方便易用的库。
emr-kinesis3.5.0适用于 Hadoop 生态系统应用程序的 Amazon Kinesis 连接器。
emr-s3-dist-cpemrfs针对 Amazon S3 优化的分布式复制应用程序。
emr-s3-select1.5.0EMR S3 Select 连接器
emrfs2.40.0适用于 Hadoop 生态系统应用程序的 Amazon S3 连接器。
flink-client1.10.0Apache Flink 命令行客户端脚本和应用程序。
ganglia-monitor3.7.2适用于 Hadoop 生态系统应用程序的嵌入式 Ganglia 代理以及 Ganglia 监控代理。
ganglia-metadata-collector3.7.2用于从 Ganglia 监控代理中聚合指标的 Ganglia 元数据收集器。
ganglia-web3.7.1用于查看由 Ganglia 元数据收集器收集的指标的 Web 应用程序。
hadoop-client2.8.5-amzn-6Hadoop 命令行客户端,如“hdfs”、“hadoop”或“yarn”。
hadoop-hdfs-datanode2.8.5-amzn-6用于存储数据块的 HDFS 节点级服务。
hadoop-hdfs-library2.8.5-amzn-6HDFS 命令行客户端和库
hadoop-hdfs-namenode2.8.5-amzn-6用于跟踪文件名和数据块位置的 HDFS 服务。
hadoop-hdfs-journalnode2.8.5-amzn-6用于管理 HA 集群上的 Hadoop 文件系统日志的 HDFS 服务。
hadoop-httpfs-server2.8.5-amzn-6用于 HDFS 操作的 HTTP 终端节点。
hadoop-kms-server2.8.5-amzn-6基于 Hadoop 的 KeyProvider API 的加密密钥管理服务器。
hadoop-mapred2.8.5-amzn-6用于运行 MapReduce 应用程序的 MapReduce 执行引擎库。
hadoop-yarn-nodemanager2.8.5-amzn-6用于管理单个节点上的容器的 YARN 服务。
hadoop-yarn-resourcemanager2.8.5-amzn-6用于分配和管理集群资源与分布式应用程序的 YARN 服务。
hadoop-yarn-timeline-server2.8.5-amzn-6用于检索 YARN 应用程序的当前信息和历史信息的服务。
hbase-hmaster1.4.13适用于负责协调区域和执行管理命令的 HBase 集群的服务。
hbase-region-server1.4.13用于服务于一个或多个 HBase 区域的服务。
hbase-client1.4.13HBase 命令行客户端。
hbase-rest-server1.4.13用于向 HBase 提供 RESTful HTTP 终端节点的服务。
hbase-thrift-server1.4.13用于向 HBase 提供 Thrift 终端节点的服务。
hcatalog-client2.3.6-amzn-2用于操作 hcatalog-server 的“hcat”命令行客户端。
hcatalog-server2.3.6-amzn-2用于为分布式应用程序提供 HCatalog、表和存储管理层的服务。
hcatalog-webhcat-server2.3.6-amzn-2用于向 HCatalog 提供 REST 接口的 HTTP 终端节点。
hive-client2.3.6-amzn-2Hive 命令行客户端。
hive-hbase2.3.6-amzn-2Hive-hbase 客户端。
hive-metastore-server2.3.6-amzn-2用于访问 Hive 元存储 (一个用于存储 Hadoop 操作中的 SQL 的元数据的语义存储库) 的服务。
hive-server22.3.6-amzn-2用于将 Hive 查询作为 Web 请求接受的服务。
hudi0.5.2-incubating增量处理框架,以支持低延迟和高效率的数据管道。
hudi-presto0.5.2-incubating用于运行 Presto 以及 Hudl 的捆绑库。
hue-server4.6.0用于使用 Hadoop 生态系统应用程序分析数据的 Web 应用程序
jupyterhub1.1.0Jupyter 笔记本的多用户服务器
livy-server0.7.0-incubating用于与 Apache Spark 交互的 REST 接口
nginx1.12.1nginx [引擎 x] 是 HTTP 和反向代理服务器
mahout-client0.13.0用于机器学习的库。
mxnet1.5.1用于深度学习的灵活的、可扩展且高效的库。
mariadb-server5.5.64MySQL 数据库服务器。
nvidia-cuda9.2.88Nvidia 驱动程序和 Cuda 工具包
oozie-client5.2.0Oozie 命令行客户端。
oozie-server5.2.0用于接受 Oozie 工作流请求的服务。
opencv3.4.0开源计算机视觉库。
phoenix-library4.14.3-HBase-1.4服务器和客户端的 phoenix 库
phoenix-query-server4.14.3-HBase-1.4向 Avatica API 提供 JDBC 访问权限以及协议缓冲区和 JSON 格式访问权限的轻量级服务器
presto-coordinator0.232用于在 presto-worker 之中接受查询并管理查询的服务。
presto-worker0.232用于执行查询的各个部分的服务。
presto-client0.232Presto 命令行客户端,安装在 HA 集群的备用主节点(未启动 Presto 服务器)上。
pig-client0.17.0Pig 命令行客户端。
r3.4.3用于统计计算的 R 项目
ranger-kms-server1.2.0Apache Ranger 密钥管理系统
spark-client2.4.5-amzn-0Spark 命令行客户端。
spark-history-server2.4.5-amzn-0用于查看完整的 Spark 应用程序的生命周期的已记录事件的 Web UI。
spark-on-yarn2.4.5-amzn-0适用于 YARN 的内存中执行引擎。
spark-yarn-slave2.4.5-amzn-0YARN 从属项所需的 Apache Spark 库。
sqoop-client1.4.7Apache Sqoop 命令行客户端。
tensorflow1.14.0适用于高性能数值计算的 TensorFlow 开源软件库。
tez-on-yarn0.9.2tez YARN 应用程序和库。
webserver2.4.25+Apache HTTP 服务器。
zeppelin-server0.8.2支持交互式数据分析的基于 Web 的笔记本电脑。
zookeeper-server3.4.14用于维护配置信息、命名、提供分布式同步以及提供组服务的集中式服务。
zookeeper-client3.4.14ZooKeeper 命令行客户端。

配置分类

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

emr-5.30.1 分类
分类 描述

capacity-scheduler

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

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-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-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

更改 Hudi 环境中的值。

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 文件中的值。

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 文件中的值。

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 文件中的值。