本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
Amazon EMR 发行版 5.22.0
5.22.0 应用程序版本
此版本支持以下应用程序:Flink
下表列出了此版本的 Amazon EMR 中提供的应用程序版本以及前三个 Amazon EMR 发行版中的应用程序版本(若适用)。
有关每个发行版的 Amazon EMR 的应用程序版本的全面历史记录,请参见以下主题:
emr-5.22.0 | emr-5.21.2 | emr-5.21.1 | emr-5.21.0 | |
---|---|---|---|---|
AWS 适用于 Java 的 SDK | 1.11.510 | 1.11.479 | 1.11.479 | 1.11.479 |
Python | 2.7、3.6 | 2.7、3.6 | 2.7、3.6 | 2.7、3.6 |
Scala | 2.11.12 | 2.11.12 | 2.11.12 | 2.11.12 |
AmazonCloudWatchAgent | - | - | - | - |
Delta | - | - | - | - |
Flink | 1.7.1 | 1.7.0 | 1.7.0 | 1.7.0 |
Ganglia | 3.7.2 | 3.7.2 | 3.7.2 | 3.7.2 |
HBase | 1.4.9 | 1.4.8 | 1.4.8 | 1.4.8 |
HCatalog | 2.3.4 | 2.3.4 | 2.3.4 | 2.3.4 |
Hadoop | 2.8.5 | 2.8.5 | 2.8.5 | 2.8.5 |
Hive | 2.3.4 | 2.3.4 | 2.3.4 | 2.3.4 |
Hudi | - | - | - | - |
Hue | 4.3.0 | 4.3.0 | 4.3.0 | 4.3.0 |
Iceberg | - | - | - | - |
JupyterEnterpriseGateway | - | - | - | - |
JupyterHub | 0.9.4 | 0.9.4 | 0.9.4 | 0.9.4 |
Livy | 0.5.0 | 0.5.0 | 0.5.0 | 0.5.0 |
MXNet | 1.3.1 | 1.3.1 | 1.3.1 | 1.3.1 |
Mahout | 0.13.0 | 0.13.0 | 0.13.0 | 0.13.0 |
Oozie | 5.1.0 | 5.0.0 | 5.0.0 | 5.0.0 |
Phoenix | 4.14.1 | 4.14.0 | 4.14.0 | 4.14.0 |
Pig | 0.17.0 | 0.17.0 | 0.17.0 | 0.17.0 |
Presto | 0.215 | 0.215 | 0.215 | 0.215 |
Spark | 2.4.0 | 2.4.0 | 2.4.0 | 2.4.0 |
Sqoop | 1.4.7 | 1.4.7 | 1.4.7 | 1.4.7 |
TensorFlow | 1.12.0 | 1.12.0 | 1.12.0 | 1.12.0 |
Tez | 0.9.1 | 0.9.1 | 0.9.1 | 0.9.1 |
Trino (prestoSQL) | - | - | - | - |
Zeppelin | 0.8.1 | 0.8.0 | 0.8.0 | 0.8.0 |
ZooKeeper | 3.4.13 | 3.4.13 | 3.4.13 | 3.4.13 |
5.22.0 发布说明
以下发布说明包括有关 Amazon EMR 发行版 5.22.0 的信息。更改与 5.21.0 有关。
重要
从亚马逊 EMR 版本 5.22.0 开始,亚马逊 EMR 仅 AWS 使用签名版本 4 来验证向亚马逊 S3 发出的请求。早期的 Amazon EMR 版本在某些情况下使用 AWS 签名版本 2,除非发行说明中注明仅使用签名版本 4。有关更多信息,请参阅《亚马逊简单存储服务开发者AWS 指南》中的对请求进行身份验证(AWS 签名版本 4)和对请求进行身份验证(签名版本 2)。
首次发布日期:2019 年 3 月 20 日
升级
Flink 1.7.1
HBase 1.4.9
Oozie 5.1.0
Phoenix 4.14.1
Zeppelin 0.8.1
-
连接器和驱动程序:
DynamoDB 连接器 4.8.0
MariaDB 连接器 2.2.6
Amazon Redshift JDBC 驱动程序 1.2.20.1043
新特征
修改了仅使用 EBS 存储的 EC2 实例类型的默认 EBS 配置。在使用 Amazon EMR 发行版 5.22.0 及更高版本创建集群时,默认 EBS 存储量根据实例大小而增加。此外,我们将增加的存储拆分到多个卷,从而提高了 IOPS 性能。如果要使用不同的 EBS 实例存储配置,您可以在创建 EMR 集群或将节点添加到现有集群时指定该配置。有关每个实例类型默认分配的存储容量和卷数的更多信息,请参阅《Amazon EMR 管理指南》中的实例的默认 EBS 存储。
更改、增强功能和解决的问题
Spark
在 YARN 上引入了一个新的配置属性
spark.yarn.executor.memoryOverheadFactor
。此属性的值是一个缩放系数,它将内存开销值设置为执行程序内存的百分比,最小为 384 MB。如果内存开销设置为使用spark.yarn.executor.memoryOverhead
,则此属性不发挥任何作用。默认值为0.1875
,表示 18.75%。与 Spark 内部设置的 10% 的默认值相比,Amazon EMR 的此默认值在 YARN 容器中为执行器内存开销预留了更多空间。根据经验,Amazon EMR 默认值 18.75% 表明 TPC-DS 基准测试中与内存相关的故障较少。为了改进性能,已逆向移植 SPARK-26316
。
在 Amazon EMR 版本 5.19.0、5.20.0 和 5.21.0 中,YARN 节点标注存储在 HDFS 目录中。在某些情况下,这会导致核心节点启动延迟,然后导致集群超时和启动失败。从 Amazon EMR 5.22.0 开始,此问题已得到解决。YARN 节点标注存储在每个集群节点的本地磁盘上,避免了对 HDFS 的依赖。
已知问题
-
Hue(已在 Amazon EMR 发行版 5.24.0 中修复)
-
在 Amazon EMR 上运行的 Hue 不支持 Solr。从 Amazon EMR 发行版 5.20.0 开始,配置错误问题会导致 Solr 启用,并显示类似于以下内容的无害错误消息:
Solr server could not be contacted properly: HTTPConnectionPool('host=ip-xx-xx-xx-xx.ec2.internal', port=1978): Max retries exceeded with url: /solr/admin/info/system?user.name=hue&doAs=administrator&wt=json (Caused by NewConnectionError(': Failed to establish a new connection: [Errno 111] Connection refused',))
要防止显示 Solr 错误消息:
使用 SSH 连接到主节点命令行。
使用文本编辑器打开
hue.ini
文件。例如:sudo vim /etc/hue/conf/hue.ini
搜索术语
appblacklist
,并将该行修改为以下内容:appblacklist = search
保存更改并重新启动 Hue,如以下示例所示:
sudo stop hue; sudo start hue
-
-
具有多个主节点的集群和 Kerberos 身份验证中的已知问题
如果在 Amazon 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 票证过期后,您必须重新运行上述命令。
-
5.22.0 组件版本
下面列出了 Amazon EMR 随此发行版一起安装的组件。一些组件作为大数据应用程序包的一部分安装。其它组件是 Amazon EMR 独有的,并且已为系统流程和功能安装这些组件。它们通常以 emr
或 aws
开头。最新的 Amazon EMR 发行版中的大数据应用程序包通常是在社区中找到的最新版本。我们会尽快在 Amazon EMR 中提供社区发行版。
Amazon EMR 中的某些组件与社区版本不同。这些组件具有以下形式的
的发行版标注。CommunityVersion
-amzn-EmrVersion
从 0 开始。例如,假设已对名为 EmrVersion
myapp-component
的版本 2.2 的开源社区组件进行三次修改,以包含在不同的 Amazon EMR 发行版中,则其发行版将为 2.2-amzn-2
。
组件 | 版本 | 描述 |
---|---|---|
aws-sagemaker-spark-sdk | 1.2.1 | 亚马逊 SageMaker Spark SDK |
emr-ddb | 4.8.0 | 适用于 Hadoop 生态系统应用程序的 Amazon DynamoDB 连接器。 |
emr-goodies | 2.6.0 | 适用于 Hadoop 生态系统的方便易用的库。 |
emr-kinesis | 3.4.0 | 适用于 Hadoop 生态系统应用程序的 Amazon Kinesis 连接器。 |
emr-s3-dist-cp | 2.11.0 | 针对 Amazon S3 优化的分布式复制应用程序。 |
emr-s3-select | 1.2.0 | EMR S3 Select 连接器 |
emrfs | 2.31.0 | 适用于 Hadoop 生态系统应用程序的 Amazon S3 连接器。 |
flink-client | 1.7.1 | 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 | 2.8.5-amzn-2 | Hadoop 命令行客户端,如“hdfs”、“hadoop”或“yarn”。 |
hadoop-hdfs-datanode | 2.8.5-amzn-2 | 用于存储数据块的 HDFS 节点级服务。 |
hadoop-hdfs-library | 2.8.5-amzn-2 | HDFS 命令行客户端和库 |
hadoop-hdfs-namenode | 2.8.5-amzn-2 | 用于跟踪文件名和数据块位置的 HDFS 服务。 |
hadoop-httpfs-server | 2.8.5-amzn-2 | 用于 HDFS 操作的 HTTP 终端节点。 |
hadoop-kms-server | 2.8.5-amzn-2 | 基于 Hadoop 的 API 的加密密钥管理服务器。 KeyProvider |
hadoop-mapred | 2.8.5-amzn-2 | MapReduce 用于运行 MapReduce 应用程序的执行引擎库。 |
hadoop-yarn-nodemanager | 2.8.5-amzn-2 | 用于管理单个节点上的容器的 YARN 服务。 |
hadoop-yarn-resourcemanager | 2.8.5-amzn-2 | 用于分配和管理集群资源与分布式应用程序的 YARN 服务。 |
hadoop-yarn-timeline-server | 2.8.5-amzn-2 | 用于检索 YARN 应用程序的当前信息和历史信息的服务。 |
hbase-hmaster | 1.4.9 | 为负责协调区域和执行管理命令的 HBase 集群提供服务。 |
hbase-region-server | 1.4.9 | 为一个或多个 HBase 地区提供服务的服务。 |
hbase-client | 1.4.9 | HBase 命令行客户端。 |
hbase-rest-server | 1.4.9 | 为其提供 RESTful HTTP 端点的服务 HBase。 |
hbase-thrift-server | 1.4.9 | 为其提供 Thrift 端点的 HBase服务。 |
hcatalog-client | 2.3.4-amzn-1 | 用于操作 hcatalog-server 的“hcat”命令行客户端。 |
hcatalog-server | 2.3.4-amzn-1 | 提供服务 HCatalog,为分布式应用程序提供表和存储管理层。 |
hcatalog-webhcat-server | 2.3.4-amzn-1 | 为其提供 REST 接口的 HTTP 端点 HCatalog。 |
hive-client | 2.3.4-amzn-1 | Hive 命令行客户端。 |
hive-hbase | 2.3.4-amzn-1 | Hive-hbase 客户端。 |
hive-metastore-server | 2.3.4-amzn-1 | 用于访问 Hive 元存储 (一个用于存储 Hadoop 操作中的 SQL 的元数据的语义存储库) 的服务。 |
hive-server2 | 2.3.4-amzn-1 | 用于将 Hive 查询作为 Web 请求接受的服务。 |
hue-server | 4.3.0 | 用于使用 Hadoop 生态系统应用程序分析数据的 Web 应用程序 |
jupyterhub | 0.9.4 | Jupyter notebook 的多用户服务器 |
livy-server | 0.5.0-incubating | 用于与 Apache Spark 交互的 REST 接口 |
nginx | 1.12.1 | nginx [引擎 x] 是 HTTP 和反向代理服务器 |
mahout-client | 0.13.0 | 用于机器学习的库。 |
mxnet | 1.3.1 | 用于深度学习的灵活的、可扩展且高效的库。 |
mysql-server | 5.5.54+ | MySQL 数据库服务器。 |
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 | 4.14.1--1.4 HBase | 服务器和客户端的 phoenix 库 |
phoenix-query-server | 4.14.1--1.4 HBase | 向 Avatica API 提供 JDBC 访问权限以及协议缓冲区和 JSON 格式访问权限的轻量级服务器 |
presto-coordinator | 0.215 | 用于在 presto-worker 之中接受查询并管理查询的服务。 |
presto-worker | 0.215 | 用于执行查询的各个部分的服务。 |
pig-client | 0.17.0 | Pig 命令行客户端。 |
r | 3.4.1 | 用于统计计算的 R 项目 |
spark-client | 2.4.0 | Spark 命令行客户端。 |
spark-history-server | 2.4.0 | 用于查看完整的 Spark 应用程序的生命周期的已记录事件的 Web UI。 |
spark-on-yarn | 2.4.0 | 适用于 YARN 的内存中执行引擎。 |
spark-yarn-slave | 2.4.0 | YARN 从属项所需的 Apache Spark 库。 |
sqoop-client | 1.4.7 | Apache Sqoop 命令行客户端。 |
tensorflow | 1.12.0 | TensorFlow 用于高性能数值计算的开源软件库。 |
tez-on-yarn | 0.9.1 | tez YARN 应用程序和库。 |
webserver | 2.4.25+ | Apache HTTP 服务器。 |
zeppelin-server | 0.8.1 | 支持交互式数据分析的基于 Web 的 Notebook。 |
zookeeper-server | 3.4.13 | 用于维护配置信息、命名、提供分布式同步以及提供组服务的集中式服务。 |
zookeeper-client | 3.4.13 | ZooKeeper 命令行客户端。 |
5.22.0 配置分类
配置分类允许您自定义应用程序。这些通常与应用程序的配置 XML 文件(例如 hive-site.xml
)相对应。有关更多信息,请参阅配置应用程序。
分类 | 描述 |
---|---|
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 log4 j-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 | 亚马逊 EMR 精心策划的 Apache 设置。 HBase |
hbase-env | 更改环境 HBase中的值。 |
hbase-log4j | 更改 hbase- HBase log4j.properties 文件中的值。 |
hbase-metrics | 更改 hadoop-metrics2-h HBase base.properties 文件中的值。 |
hbase-policy | 更改 HBase的 hbase-policy.xml 文件中的值。 |
hbase-site | 更改 hbase-site.xml 文件 HBase中的值。 |
hdfs-encryption-zones | 配置 HDFS 加密区域。 |
hdfs-site | 更改 HDFS 的 hdfs-site.xml 中的值。 |
hcatalog-env | 更改环境 HCatalog中的值。 |
hcatalog-server-jndi | 更改 HCatalog的 jndi.properties 中的值。 |
hcatalog-server-proto-hive-site | 更改 proto-hive-site .x HCatalog ml 中的值。 |
hcatalog-webhcat-env | 更改 HCatalog Web 环境HCat中的值。 |
hcatalog-webhcat-log4j2 | 更改 HCatalog Web HCat 的 log4j2.properties 中的值。 |
hcatalog-webhcat-site | 更改 HCatalog Web HCat 的 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-log 4j2.properties 文件中的值。 |
hive-llap-daemon-log4j2 | 更改 Hive 的 llap-daemon-log 4j2.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 文件中的值。 |
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 文件中的值。 |
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 | 更改 zoo.cfg 文件 ZooKeeper中的值。 |
zookeeper-log4j | 更改 ZooKeeper的 log4j.properties 文件中的值。 |