本次将介绍EMR开源大数据平台产品最新的一些特性,EMR 2.0的新平台基于微服务的架构,能够更加稳定和高效的服务开源大数据的业务。
过去一年对平台做进一步的升级和全面的更新,主要体现在智能化和Serverless 两个方面。在大语言模型出现之后,各行各业都值得被大语言模型重塑一次,对于大数据平台的产品也不例外。
一、智能化功能
对于大数据的应用,降本增效是持续不断的目标。而降本增效本身是包括人力的降本增效和资源的降本增效两个方面。围绕这两个核心的方面,基于大圆模型的基础能力,对EMR平台的智能诊断分析,运维,弹性伸缩两个方面做功能的升级,首先看诊断和运维,传统大数据的运维通常还是摆组件,当组件出现问题时,组件的负责人通过查看日志和监控的指标,对问题进行排查。一些基础性的组件比如HDFS或ZooKeeper基础性的组件出现问题,它会影响多个相关联的组件。
根因的定位非常依赖运维人员的经验,类似复杂问题的定位排查的效率会直接影响到业务的效果,为提升复杂问题根因的定位和分析的效率,把EMR服务公有云客户的专家经验沉淀到产品里,推出一键诊断和根因分析的功能,根据真实的EMR平台的最新诊断分析报告,看到非常详细的关于问题的链条,问题的原因,还有优化建议相关的信息,从技术实现的层面上,基于通义1000问大语言模型的能力,会对组件的日志,监控指标进行一个智能化的分析和理解。
同时整合多个组件的数据,进行全方位的分析和根因的定位,从而得出比较全面的结论,另外模型和专家系统具备动态的更新和优化的能力,通过用户对诊断分析报告的正面和负面的反馈,持续对专家系统进行优化,最终EMR平台能够很大幅度的缩短用户定位复杂问题的时间,从而能够避免问题的升级和故障的产生。接下来通过一段简单的Demo看新的智能诊断分析产品的使用方法和效果。
首先模拟通过billy提交SQL作业,看到当前任务卡顿需要迅速的定位修复。来到EMR控制台,看到在监控诊断模块当前服务状态异常,传统方法需要逐一检查服务的指标和日志,耗时且复杂。当前EMR支持一键发起健康诊断,发起诊断后,诊断报告及时生成,报告概览部分展示问题总数、严重性以及趋势,可以帮助客户快速的把握集群状况,切换到拓扑视图,看到在拓扑视图下可以直观的展示问题关联,优先解决根源问题,以当前示例,问题报告会展示具体问题的现象、原因分析,并给出详细的原因以及优化建议。其中在优化建议板块会给出客户具体的优化建议配置项及配置值,客户根据优化建议可以快速的解决异常问题,极大提升运维效率。
传统的弹性伸缩是依赖用户,需要根据对于资源整体消耗的特点理解和分析,手动的配置弹性伸缩的规则,为达到既不影响业务的效果,又能够节省资源的一个目标,有比较高的使用门槛,非常依赖运维人员相关的经验,EMR平台为简化对于弹性伸缩的使用,推出全托管弹性伸缩的功能,自动根据业务历史的资源用量的情况、实时的资源的消耗、排队的情况,动态的申请和释放资源,不仅更加的智能化,而且能够及时的响应业务动态负载的变化,对于整个资源使用的效率也会有进一步的提升。
相比于自定义的弹性伸缩规则,托管的弹性伸缩会提供智能化的优化算法,另外在指标的收集、指标的检测、冷却时间方面,也会有大幅度的提升,从弹性伸缩的效果上看,托管弹性伸缩具备更好的动态性,面向同样变化的负载会有更好的扩缩容的效率和更低的冷却时间。展示一个真实负载下托管弹性伸缩和自定义弹性伸缩对比的情况。不管是扩容还是缩容,托管弹性伸缩所需要的时间。不管是响应时间还是完成时间,相比于自定义弹性伸缩规则都有非常大的优化,接下来通过Demo看托管弹性伸缩的功能,以及使用的方法、效果。阿里云EMR正式发布托管弹性伸缩功能。只需要为集群指定最小、最大即最大按量task节点数并一键保存应用。阿里云EMR将自动调整集群规模,以实现最优性能与资源利用率。面对业务激增,EMR可以在较短时间内自动补充资源,并将新增任务调度至新的节点上,在业务高峰过后,自动移除多余资源,任务将平滑的回到原有节点上。在整个过程中,业务排队情况一直维持在较低水平。相比于未开启弹性伸缩,托管弹性伸缩将资源利用率从30%提高至75%,提升了集群资源利用效率。
二、Serverless化
对于EMR公有云上的数以千计的集群的资源使用情况的观察和分析。发现还是存在大量的没有资源峰谷情况的资源浪费。Serverless 还是势在必行的。与此同时观察到对于在线业务,它的资源使用量非常大,并且在线资源的业务具备比较明显的昼夜峰谷特点,用户会愿意把离线业务在夜间复用在线资源,基于自己持有的资源池,实现离线的混部,以及资源的分时复用。但客户自己持有的资源池和云服务厂商提供的托管的资源池,两个资源池去合池,客观上是不现实的,在这种背景下,新推出的产品形态EMR on ACS,在这种产品形态下也依赖阿里云的一款新的产品叫ACS,ACS提供托管的k8s服务,实际上提供在离线负载的混合资源调度的能力,利用ACS在离线负载混合调度的能力,可以对用户屏蔽自己在离线负载的资源隔离调度复杂度,从而更轻松的实现在离线的混部。
EMR主要是负责大数据组件的部署,监控的诊断、用量管理。相比于EMR on ECS这种产品形态,ECS有服务器状态,无服务器的形态可以按量按需的使用资源。所以EMR on ACS的资源使用效率更高一些。另外依托ACS提供的全托管k8s的能力,可以非常灵活的实现弹性伸缩的功能,与此同时,用户能更关注自己的业务,不需要自己管理和运维k8s的版本和升级,业界也出现自己进行k8s的升级,出现问题导致大规模的故障,在EMR on ACS这种产品形态下不需要有这种困扰,在k8s资源调度器场景下,相比于传统的调度器,它在队列管理上的功能偏弱,在EMR on ACS产品形态下也提供比较完善的资源管理功能,通过资源队列对资源进行隔离。
用户可以按照不同业务的形态,划分不同的队列,进行资源的分配,以及code的管理,还有统计和记账,在EMR on ACS产品形态下,也支持各种各样不同类型的任务,包括不限于流式处理的Flink的任务,批处理的Spark的任务、Olap分析的Traino类型的任务。用户可以用EMR on ACS的单一产品构建数据湖仓处理的全链路,此外在EMR on ACS产品形态下,也支持智能化的作业诊断分析,EMR on ACS里真实的spark任务的诊断结果,看到智能化的诊断出一些异常信息的描述,以及相关优化的一些建议。另外一个重要的方面是固定和弹性资源的配比,固定弹性资源的配比优化和资源的形态(有无服务器)是没有关系的,可以把它类比到日常生活中手机的套餐,通常手机根据自己的通话、数据流量的使用情况,选择适合的套餐,超过套餐之外的按量付费,如果连续几个月使用情况都超出套餐,运营商会给客户打电话,推荐更高级别的新套餐。
所以在EMR on ACS产品形态下也会提供前面提到的智能化的、托管的,弹性伸缩的能力,帮助客户能够更加方便的、高效的实现最优的固定和弹性资源的配比。依托EMR和ACS的产品能力,用户可以比较轻松的基于自有的资源池实现在线业务和离线业务的混合的部署和资源的复用。接下来通过Demo看即将推出的EMR on ACS的产品形态的使用的方式和效果。已创建好EMR on ACS的工作空间,在基础信息页面看到,工作空间与ACS集群相关联,点击跳转至ACS集群页面,看到当前已有四个在线微服务正在运行中,跳转至grafana监控页面,看到模拟的电商业务,当前业务各接口运行正常。回到EMR控制台,可以在控制台中对工作空间进行资源管理、应用管理以及作业列表的查看。首先到资源管理页面,在提交作业前,需要对运行作业的队列进行限制,避免资源浪费。设置好队列后,来到应用管理页面,通过QB提交作业,打开QB的web ui页面。首先设置本次任务的目标队列及刚才创建的Demo队列,通过Spark对存储在OSS上的电商数据进行预处理,提取用户购买链路上的行为数据,并存入到新表,命名为user Log。
作业提交后回到作业列表,看到Spark作业处于运行中,会持续的写入数据,运行完毕后,来到OSS浏览器,看到当前已有按时间分区的user log数据。接下来通过trainer对刚才生成的userlog表进行查询,生成用户的行为分析数据漏斗模型,看到用户从点击到加购收藏再到购买的转化情况,回到作业列表,看到刚才提交的SQL执行情况以及所花费的时长。再回到ACS监控大盘,查看在线业务的指标情况,看到离线任务对在线业务没有影响。当所有任务执行完毕后,可以通过资源管理查看刚才操作所耗费的资源情况,例如整体工作空间的资源消耗以及各个队列的消耗情况。以上是EMR on ACS功能演示的全部内容。
最新的EMR管控的平台,不仅可以利用智能化的一键诊断、根因分析的功能,还有全托管的弹性伸缩的功能。而且即将推出EMR on ACS新的产品形态,支持使用自有的资源池实现离在线业务的混部。