本文作者:王晓平,阿里云智能计算平台事业部高级产品经理
以下内容根据演讲视频以及PPT整理而成。
本次的分享主要围绕以下三个方面:
一、EMR产品概述
二、EMR产品新特性
三、EMR Road Map
一、产品概述
- E-MapReduce(EMR)是什么
E-MapReduce是阿里云上云原生的开源大数据平台,一款利用开源大数据解决用户分析问题的大数据产品。在2016年6月,E-MapReduce开始公测,2016年9月开始商业化,目前为止E-MapReduce已经商业化三年多的时间。在2019年8月,阿里发布了E-MapReduce (EMR)敏捷版。在2019年10月,阿里巴巴将发布EMR新版本。EMR新版本的Hadoop将会升级到3.1.x。
- EMR产品特性:
EMR产品特性主要展现在以下三个方面。
100%开源组件:EMR产品所使用的大数据组件为100%开源组件。对用户来说,学习成本和迁移成本都相对较低。此外,EMR会根据社区的进度和Bug Fix进行升级,保证产品是根据社区持续升级,实现较好的用户体验。还有,EMR对Spark、Hadoop、Kafka等组件均有性能和应用性的增强。以Spark为例,EMR比较早的集成了Spark AE,推测执行的自动化和特性,同时包括基于Spark来进行物化视图的自研的产品功能。
成本优势:EMR产品相对于用户自建Hadoop更具有成本优势。首先,EMR集群支持弹性伸缩。此处的弹性伸缩指两方面。比如可以根据一个时间点,大部分用户在用开源大数据Hadoop时在每天晚上12点定时跑一个较大的日报任务,而日报任务可能并不需要全天都跑,可能在早上就会跑完。此时使用弹性伸缩有利于节省计算资源。同时也可以采用按负载伸缩的方式,设置YARN Root的队列的某一个指标进行伸缩。用户可以根据自己实际的application排队情况及container分配的情况进行伸缩。其次,EMR支持OSS作为数据存储系统。除HDFS之外可以使用OSS,将HDFS的schema改为OSS路径直接读写OSS。相对来说,可以实现用户的数据分层存储,当用户的热数据放在HDFS里,冷数据则可以放在OSS中。同时实现OSS的生命周期的管理。比如说相对温数据放在一个标准型里,但如果用户的数据是一年前或者几年前的数据,则可以放到归档型或者低频型的更便宜的OSS存储中。第三个特性是EMR在弹性伸缩的基础上同时支持竞价实例。ECS提供了一种比较便宜的实例类型,即竞价实例。用户可以自己出一个价格来实现成本节省。考虑到数据可靠性的影响,竞价实例只能用在计算节点上,若上面有HDFS的数据存储,则不允许使用竞价实例或者弹性伸缩。最后,EMR可以通过作业来拉起一个临时集群。当用户只是想要跑一个大数据的任务,可以通过集群模板设置集群的配置。当作业被触发时,EMR会先创建好临时集群,作业执行完毕,临时集群会被释放掉。通过临时集群的方式实现比较灵活的集群创建和管理。
企业级特性:EMR采用了MIT Kerberos和Apache Ranger实现用户鉴权和用户权限管理。同时提供了EMR APM实现集群和作业的监控。
- EMR开源软件栈
下图是EMR目前支持的开源软件栈。最底部是EMR的Docker和ECS。通过ECS是目前在公有云上的主要形态,专有云可以通过Docker的方式,在ECS之上部署一个EMR Agent,主要负责集群管理和集群运行数据的采集,检测集群端前是否出现问题。数据导入时EMR提供了Sqoop,使用开源的DataX组件、Flume组件或SLS将数据导入到EMR上。数据存储这一块EMR支持HDFS和OSS。在OSS之上又开发了jindoFS,jindoFS可以用OSS作为数据湖的概念,通过jindoFS catch的方式做数据加速,提升OSS读取数据的效率。EMR最新版本支持Kudu和Delta Lake,帮助用户有效的构建实时数仓。用户利用Kudu或Delta Lake+流式计算,如Spark或Flink实现实时用户画像、实时推荐等功能。资源调度方面,EMR目前主要使用YARN。计算引擎方面,EMR提供了较多的计算引擎,如Spark、Flink、TensorFlow、Storm、Impala和Presto等。同时在顶部的应用层面提供了NoteBook、Jupyter和Zepplin以及开源的Hue。EMR是一个半托管的形态,用户自建的系统也可以无缝迁移。阿里自研的EMR-Flow可实现工作流的调度。
- EMR集群特性
目前EMR支持五种集群类型。目前五种集群类型的购买是独立的,在购买集群的首页可以选择一个集群类型,如Hadoop,Kafka,或者ZooKeeper集群。
Hadoop大数据平台:一般用户都会购买一个Hadoop平台,然后再实现批计算、流式计算、数据仓库、Ad hoc查询、NoSQL和HBase等。
Kafka:若用户希望实现一个半托管的Kafka,可以购买EMR Kafka系统实现消息系统。
TensorFlow:TensorFlow目前在深度学习、机器学习方面非常受欢迎。EMR可以实现TensorFlow,既On YARN的执行和TensorFlow On Spark的运行。
Druid:EMR对于实时OLAP有一个独立的集群类型druid。
ZooKeeper:在集群功能较大的情况下,用户可以购买独立的ZooKeeper集群实现分布式协调系统。如Kafka、Druid、HDFS、YARN或HBase等都需要ZooKeeper。
- EMR半托管形态
如下图,EMR目前是半托管形态。用户可以通过ssh login的方式登录ECS节点,在ECS节点上部署EMR的服务,如工作流调度、智能诊断、弹性伸缩、资源池等功能。EMR有更低的迁移成本。如果用户是Hadoop基础体系,可拥有更低的迁移成本和学习成本。在用户人力资源不充沛的情况下可以通过EMR有效实现运维成本的节省。
- EMR集群节点类型
EMR集群节点类型主要分以下四种。
Master节点:Master节点部署了HDFS Name Node和YARN Resource Manager。此外,相应的HDFS、YARN、Hive、HBase等组件均已实现了HA机制。
Core节点:Core节点主要部署YARN NodeManager和DataNode。Core节点不支持弹性伸缩。
Task节点:用户可以使用Task进行弹性伸缩或者使用竞价实例的购买方式。如果用户有深度学习需求,可以通过YARN调度GPU资源,同时也可以在Task节点选择购买GPU实例。
Gateway节点:Gateway节点部署Haddop、Spark、Flink等组件的客户端,支持部署不同部门采用不同的参数和配置。因为用户可能会在不同客户端采用不同配置,从而实现用户隔离,用户可以购买Gateway节点实现资源配置上的隔离,同时减轻Master节点上的工作压力。
二、产品新特性
- EMR基础能力升级
计算能力升级:阿里云刚刚发布了第六代企业级实例,既CPU从Skylake升级到Cascade Lake,睿频从2.7GHz加速提升到3.2GHz。由下图可发现,相对于第五代企业级实例,第六代企业级实例CPU性能和内存读写性能都有显著提升。阿里云在2019年九月底上线第六代企业级实例,提供更高的计算性能和更低的产品价格,将技术的红利让给用户。
存储能力升级:EMR已支持ESSD云盘。ESSD云盘全称是企业级SSD云盘。ESSD云盘的单盘IOPS有较大提升,在EMR Kudu,HBase等场景下有较好的表现和性能。ESSD云盘分为PL1、PL2、PL3三种,目前EMR支持PL1级的ESSD云盘,从性能上PL1级已经基本满足用户需求。下图右下对比图分别是ESSD云盘和SSD云盘在块存储方面官网的标称的性能指标。通过对比图可以发现ESSD在单盘IOPS和单盘吞吐性能上都有较大幅度的提升。
- EMR软件栈升级
EMR Hadoop目前支持Hadoop2.7.2和Hadoop2.8.5两个版本,EMR社区版本逐渐成熟之后EMR新版本会将版本升级到Hadoop3.1.2版本。同时,EMR 新版本 新增支持Kudu1.1.0和Delta Lake 0.3。EMR新版本中Apache Flink升级至1.8.1。在Apache社区Flink升级至1.9.0或1.9.1后,EMR会再考虑Apache Flink升级。EMR新版本支持OpenLDAP。如果用户使用的是OpenLDAP,则可以进行平滑迁移。下图右侧是当前EMR已经支持的一些版本,这些版本在EMR 新版本发布后会实时保持和社区更新同步,当前用户已经购买的Hadoop2.7.2和Hadoop2.8.5两个版本也会进行升级更新,保证用户平稳使用。
- EMR生态集成
EMR+DataWorks:EMR作为一个云原生软件,在云上有一系列生态集成,如OSS的集成和ES的集成。一部分用户同时使用了EMR和Elastic Research或云Elastic Research。EMR已经集成了Elastic Research组件,可实现数据的打通。如下图左侧,创建DataWorks项目时选择计算引擎,之前只能选择Maxcompute和实时计算,现在多了两个选择,一个是EMR,另一个是刚开始公测的交互式分析。用户在创建DataWorks作业时,可以将作业运行在一个已经存在的Hadoop集群上。在写的时候只要相应的输入accessKey和accessID,输入EMR的集群id,则可以将这个任务调度到EMR集群上。下图右侧展示了若用户目前以EMR作为计算引擎,只要用户购买了DataWorks相应付费版软件,就可以实现数据血缘跟踪,表和相应列的源数据信息的查看。
EMR+PAI:生态集成的另外一方面是阿里云上非常受欢迎的深度学习平台PAI。目前大数据+AI是一个非常重要的场景。EMR已经能够实现TensorFlow On YARN和 TensorFlow On Spark,可以通过YARN实现对TensorFlow作业的调度,作业可以跑在CPU以及GPU上。同时,TensorFlow也可以跑在Spark RDD上进行计算。EMR+PAI集成主要体现在将PAI这一个企业级分布式的深度学习计算框架部署在EMR上。因为PAI TensorFlow完全兼容于开源的TensorFlow,同时在显存和分布式通信方面有深度优化。另一方面,PAI的计算模型PAI-FastNN集成了11种经典的神经网络模型,能够跑在EMR上,实现开箱即用的效果。
4、EMR数据迁移
EMR正在与阿里云上另一款灾备产品HDR-BD进行集成实现数据灾备和迁移。目前支持社区Hadoop2.7.x/3.1.x,HDP,CDH版本。Source和Target集群双活,实现HDFS和Hive数据的迁移,同时支持迁移到OSS上。
三、Road Map
EMR在未来几个月的主要工作首先是在本地盘实例运维。大部分用户会使用ECS的大数据实例。大数据实例最大的特点是存储成本相对较低,对于数据量比较大的用户是一种比较好的成本优化方式。对于大数据来说,几千或者几万块盘在管理时如果出现单盘的损坏,对作业的稳定性会产生比较大的影响。EMR的主动运维能力主要体现在用户单键点击便可实现对磁盘的隔离,确定对坏盘的较为安全的处理方式。此外,EMR与PAI和DataWorks会有比较深入的融合,构建开源的大数据AI平台以及开源大数据数据仓库。在未来,EMR同时会基于Kudu,Delta以及目前较为流行的Flink,Spark Streaming等计算框架实现实时数仓的构建。在2019年底或2020年初,EMR会推出第二代企业级大数据实例。第二代企业级大数据实例的计算性能会大幅提升,同时成本会持平或小幅节省,将更大的成本优化的空间贡献给客户。