本文介绍EMR-3.22.x发行版本的发布日期、组件升级、新功能和更新内容等信息。

发布日期

EMR-3.22.0 2019年7月28日

新功能

服务变更点
Kudu
  • 新增组件,Kudu填补Hadoop生态圈的功能空白,可提供类似HBase快速数据插入以及随机存取的功能,允许用户进行数据修改,同时还提供类似HDFS或Parquet超大规模的数据分析以及查询的功能。
    • 提供C++和Java API,以便用户进行二次开发。
    • 提供Impala、Spark以及Hive Metastore的集成。
  • Kudu版本基于开源社区Apache Kudu1.10.0版本。
OpenLDAP
  • 新增组件,取代ApacheDS,ApacheDS下线。
  • 高可用。

更新内容

组件详细信息
JindoFileSystem
  • 多种存储模式
    • Block模式:数据以Block形式存储在后端存储OSS上,本地Namespace服务维护元数据信息。在元数据性能和数据性能上,Block模式较优。Block模式支持不同的存储策略,包括WARM存储策略(本地-副本,OSS-副本)、COLD(仅OSS-副本)、 HOT(本地多副本、OSS-副本)、TEMP(仅本地-副本)和ALL_HDD(本地多副本),默认为WARM,用户可以根据不同的应用场景对目录设置不同的存储策略。
    • Cache模式: 该模式主要兼容现有OSS存储方式。在Cache模式下,文件以对象的形式存储在OSS上,每个文件根据实际访问情况会在本地进行数据和元数据的缓存,从而提高访问数据以及元数据的性能。Cache模式提供不同元数据同步策略以满足用户在不同场景下的需求。
  • 外部客户端支持
    • 客户端SDK提供了E-MapReduce集群外访问E-MapReduce JindoFS 的文件系统的能力,通过客户端可以访问Block模式的Namespace,但外部客户端不能利用到E-MapReduce JindoFS在E-MapReduce集群内部构建的数据缓存,性能上相对于E-MapReduce集群内部使用也有一定的差距。
    • Cache模式则保留了原有OSS存储的语义,通过JindoFS在E-MapReduce集群内部实现了数据缓存加速,因此,E-MapReduce 集群外部可以直接通过OSS客户端访问数据,例如,OSS SDK或者E-MapReduce的OssFileSystem等。
  • 生态组件支持
    • JindoFS目前已经支持E-MapReduce上的众多计算引擎,例如,Spark、Flink、Hive、MapReduce、Impala和Presto等。
    • 针对计算和存储分离的场景,也可以把作业日志存储在JindoFS上,例如,YARN Container log和Spark Event log。
    • JindoFS可以作为HBase的HFile后端存储,扩展HBase的存储能力。
OssFileSystem
  • OssFileSystem增加自动检测坏盘逻辑,修复OSS写入时,由于坏盘导致缓存写入失败的问题。
  • 补全OssFileSystem相关配置。
Bigboot
  • 升级到2.0.0版本。
  • 包括多Namespace支持、本地数据块以大文件形式存储、多模存储支持和外部客户端支持等多项重大更新。
  • 解决机器重启过程中Bigboot monitor状态不正确问题。
  • 增加Kudu组件的服务spec。
  • 增加各个服务spec的正确性检验。
Hadoop
  • HDFS
    • HDFS Federation适配,支持通过自定义配置和API创建HDFS Federation集群,避免创建Federation集群时的二次Format。
    • 优化坏盘检测逻辑,针对本地盘场景,可以通过dfsadmin触发DataNode blockreport时进行坏盘检测。
  • YARN

    修复MR作业Container日志存在JindoFS或OSS时, MapReduce JobHistory作业列表不更新的问题。

Spark
  • Relational Cache

    支持Relational Cache,Relational Cache通过预计算加速用户查询。用户可以创建Relational Cache对数据进行预计算,在执行用户查询时,Spark Optimizer自动发现合适的Cache,并改写SQL执行计划,基于Cache的数据继续计算,从而提升查询速度,适用于报表、Dashboard、数据同步和多维分析等场景。

    • 通过DDL,进行CACHE、UNCACHE、ALTER、SHOW等操作,Cache的数据支持Spark的所有数据源和数据格式。
    • 支持自动的Cache数据更新以及通过REFRESH命令更新Cache数据,支持基于分区的增量更新。
    • 支持基于Relational Cache的执行计划优化。
  • Streaming SQL
    • 规范Stream Query Writer的参数配置。
    • 优化Kafka数据表Schema兼容性检查。
    • Kafka数据表Schema不存在时自动创建到SchemaRegistry。
    • 优化Kafka Schema不兼容时的日志信息。
    • 修复查询结果写Kafka表时必须显式指定列名的问题。
    • 去掉流式SQL查询只支持Kafka和Loghub数据输入源的限制。
  • Delta

    新增Delta,用户可使用Spark创建Delta datasource,以支持流式数据写入、事务性读写、数据校验和数据回溯等应用场景。详情请参见Delta详细信息

    • 支持使用DataFrame API从Delta读取数据或者写入数据到Delta。
    • 支持使用Stuctured Streaming API以Delta作为source或者sink进行数据的读或写。
    • 支持使用Delta API对数据进行update、delete、merge、vaccum、optimize等操作。
    • 支持使用SQL创建基于Delta的表、导入数据到Delta和读取Delta表等操作。
  • Others
    • constraint feature,支持主键和外键。
    • 解决servlet等jar冲突问题。
Flinklog4j日志回滚。
Kafka
  • log4j日志回滚。
  • 升级fastjson。
Zeppelin升级依赖的commons-lang3包到3.7版本,修复pyspark无法写OSS的问题,详情请参见Spark 2.4 incompatibility with commons-lang3 in Zeppelin
Ranger增加Show grants支持。
Analytics-Zoo修复Numpy安装错误问题。
Impala兼容Apache Kudu 1.10.0版本。
Presto升级到0.221版本。
ZooKeeper升级到3.5.5版本。