开发者学堂课程【企业运维训练营之大数据 EMR 原理与实践:视频-《 E-MapReduce 组件介绍》】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1242/detail/18443
视频-《E-MapReduce 组件介绍》
6.JindoFS
第一讲的时候,有的同学就是提到了这个FX跟这个XS杠S加斯特的区别希望做一个简单的了解那这里其实我们也是针对这个问题专门加了一个小结,我们这个可以先看一下这张架构图。这个是前两天最新发布的M2.0它的一个整体的一个架构图可以看到上面的一些new都是在2.0集群上一些新功能,那其实我们可以看到存储资源,这一块。就是我们刚才所说的这个os杠HDFS它其实就出现了他的这个名称。首先先是非常欢迎大家在云上使用我们这个新版的M2.0的机器人,它相对于之前的版本在性能和稳定性的各个方面,相对于之前都有很高的提升,那这张架构图上涉及了我们同学之前的一个问题。
可以明显的看到这个词o sh d f4我们后面会看到他一个括号,这个括号里面写着powered by single data。其实这里边的话就涉及了两个名词,一个就是我们同学比较关注的这个SHDFS。第二块的话就是 single data,它让我们简单的来做一个拆分。对应的就是jindofs的之前的一个Block模式。
第二块的话就是jindoFS这个差的一个存储加速系统,那这块的话就是之前那个CAD就是缓存的那块就是缓存模式。第三部分的话其实就是金豆的SDK他也提供了比较就比如说像HDFS的刚才所以就是我在Java里面演示的那样,他其实也有一套SDK去支持一些读写操作以及一些管理的操。第四部分会有一些衍生的生态工具,比如说这个负责做数据迁移的,同时也有一个像HDFS的这种shell client客户端,同时也是因为现在流计算比较热的话,它也是开发了这个Flink的Connector。再来看一下第二部分就是我们拆分来看,第二部分,这she s呢,是荆州的卡在阿里云上的一个浮华部署的一个形态。他其实和阿里云的OSS就是对象存储它有一个深度的融合,可以做到开箱即用就是不需要自己在就是自建一个集群去维护部署jindodata的进程,可以做到免运维,那这块也是他们的一个就是。相同点就是整体来说的话就是一个相同点和不同点,那这块的话就是os h dfs,它其实是开箱即用的。
接下来要讲的就是这部分,就是所说的jindoFS的存储系统,其实它对标的话大家都可以非常明显的看到block拉模式,其实对标的开源的HDFS,其实在HDFS的基础上做了很大的优化,它的自然的一个背景,解决了什么痛点,我们一起来看一下。
这块大家可以先简单的浏览一下,先从jindo FS的自然背景开始说起,大家都知道,就是现在随着这种互联网发展越来越快,比如说我一个app或者是某个业务,他的数据体量其实是非常庞大的,以至于现在比较兴起的船兴起的这种统一数据湖的概念都会在这个开源组件中有一定的瓶颈,这里作为就是存储底座的这个HDFS就可以说是首当其冲,其实在海量的数据下,这个HDFS的瓶颈主要体现在哪儿呢,我们其实可以看到这个痛点的这一部分,然后简单的进行了归成两个点,但他其实可以拆分成几个点我们挨个的来说一下。
首先就是我们都知道这个HDFS他需要在ned里边去维护这个元数据,要去维护这个元数据,当数据的存储规模很大,或者说我的必不可少的,会有一些小文件,很多的情况下,那我那个Note的负载是非常高的。他的一个负载的高,主要体现在就是他对于元数据的存储元数据是存在name node的内存中的那其实这个负载的高或者是我某一天使用不当导致小文件很多的话,那其实他会涉及一些比较麻烦的,像这个类目的GM的调优以及如果我在这个大的数据存储的体谅下,我可能会有比如说几十台或者几百台的datanode,datanode其实要每几秒去做一个Lynette汇报的这么一个工作,我们管它叫心跳,去汇报我自己的存储的情况是怎么样的,有哪些数据,在datanode很多数据量很大的情况下,他其实是有一个Dell的一个就是有一个心跳风暴的这么一个问题。
第二块就是集群一般就是使用如果比较久的话,那可能必不可少的,比如说我业务越来越多,那我需要进行节点的扩容,有的时候比如说我的一些存储可能会存在这种坏圈或者说我可能会要做一些数据迁移或者是下线某个节点这种问题,他可能需要去做一些人力的投入,这些问题都是非常繁琐和易同时也消耗了大量的运维工作。JindoFS在开源的这个基础的这个痛点上做了大量的重构优化和扩展,其实深度他去深度集成和连接了就是在云上的一些基础服务,那他本着对云原生的一个贴合,就是我们所说的弹性、高效、稳定和低成本这四个关键的设计理念,jindoFS可以说是应运而生。首先就是jindoFS对上述问题去做了一些优化,一方面它整体上使用了C加加去重构架构,我们知道这个HDFS是Java写的,她用C加加去重构的这个架那这里的我们可以看到这个客户端就跟我们刚才的那个Shell或者是Java的客户端是一样的,我们去对这个整个的服务去做一些请求,就是通过这个链路去做一些请求。看到这个namespace server,它其实就是类似于name no就是HDFS中name node的这么一个角色。那这块儿为什么会有三个呢,其实我们刚才展示的EMR集群它其实是一个普通集群,他不是一个高可用的集群,如果是高可用集群的话,它的header节点也会有三个,就是它会有一个就是三代的一个name node来去防止一个namenode停止。
这个问题就是对大众的一个心跳风暴的一个问题。那这个他就是去除了这个Download,他用了什么做替换呢,那其实他就是用了这个云上的对象存储OSS去做了一个替换它结合了云存储的一个弹性和半托管的一个特性,保持了一个多副本就是比如说我们普遍设置的就是三副本的一个荣誉存储策略,同时帮我们解决了这种副本的节点之间的复制,然后弹性线性扩展和运维的问题,同时它突破了HDFS数据存储量PB级别的限制,它是可以很轻松的达到一个eb级别。
第三点就是在众多的好处有一个非常实质,就是存储的费用这块就是成本优化这。存储的费用OSS存储它会优化到什么,他为什么会有一个优化的作用,他其实是会有一个适配冷热存储的功能,就是我的数据,比如说我的一些很远的历史数据,他那边儿只是一个存档的作用,其实我们就可以把它和我们平时用的比较多的做一个冷热数据的存储,这样的话可以节省我们的存储成本。总结出来的话,那这个特性,我们就是刚才所说的这四点首先框架相比于HDFS,它更稳定了他的运维比如说这种节点的迁移之类的,更便捷了它的性能相对于之前的这种对不管是name node的元数据存储还是DNF的数据量的存储都会更高效一些,同时冷热存储冷热的数据存储也让他的成本更加优化。
7.EMR on DataWorks
EMR被绑定到datawork上时他的操作页面就跟上面的这个是一致的,可以用这个页面去做一个我们数据的开发。可以看到左边就包括这种数据开发,数仓模型的设计和临时查询、历史查、表自建函数等等。这里都有一个入口,左二的这个部分可以看到这有一个业务流程,这块儿就是一个业务的一个最小的单元,我们可以基于这个业务流程来区分不同的一个业务,然后去做一些不同的开发。中间部分可以看到可以创建EMR中的各种引擎,比如我们刚才讲到的这种my produce、hive 、spark 、circle,甚至我们刚才说到的这个crystal r NG等等都可以在这里去创建。这种我们可以在这个中间的这个编辑窗口上去做一些写代码,上面也会有一些像格式化然后审批,然后去执行等等的一系列数据开发所需要的功能。右侧其实就是一些配置参数类的,主要用的比较多的就是调度配置,调度配置可以看到这个截图,首先可以代餐。比如说我们需要设置一些参数最普遍的应该就是日期吧,比如说我们设置分区我每天跑每天每天T减一的一个分区,我们就可以在这儿设置一个参数名,还有一些系统自带的参数可以非常方便的实现我们这个需求。
第二就是它会有一些就是时间调度这块的话会根据。咱们点点的配置,最后生成一个类似框Type的一个表达式,然后去按照这个表达式去生成实例并且执行。然后呢,下边这个血缘关系这块其实也可以讲一下这块儿平时大家使用的也比较多,顾名思义就是反应出当前脚本它表产出的依赖的一个血缘关系,他本质就是去解析我们比如说这种sql。如果这个sql写了个N瑟林to,比如说这个或者insert over write这个test table的话,那他其实可以看到,比如说这个test table的产出他的血缘是依赖于我这个的他为Provence的这个表的。最后一块这个是非常重要的一块儿,这个是版本的这一栏,这个是我们关心的一个版本管理的一个功能,这个功能可以说是非常必要的,那在这里的话我们可以方便的查看和回滚历史版本以及一些更改记录。在这个查看历史版本可以就如果是本着学习的态度的话,那我们可以看到一些脚本的性能,比如说他如何优化的他在那个Circle上做了什么改动,让这个Circle从20分钟跑到15分钟以及一些业务逻辑做了什么更改,比如说我这个业务逻辑哪个业务是加了某一项怎么怎么着的这种都是非常方便实用的功能。
这块大家肯定都有了解,开发还得运维,运维这块就是我这个调拨任务跑的怎么样,今天产出的及不及时,就是这块就会映射到运维的部分,根据业务需求以及相应的逻辑开发完我们的sql脚本或者是一些其他的脚本化,这个调度的任务是我们最大的一个需求,定时产出用于我们下游的一些主要的可能就是一些报表或者算法去做一个数据的应用。从数据中发现我们潜在的业务增长点增长点反哺我们的业务,这是我们数据智能的一个基本的要求。那dell x还支持运营中心,我们可以看到这块儿就是运营中心的一个页面,我们可以看到Demo的运营中心进来的是应用大屏这块的话我们可以做一个整体的总览。
先先看这个重点关注的部分,他其实放在了最显眼的一个位置,这个重点关注的部分的话,其实它囊括了我们某个周期下它的一个失败实例运行慢的实力以及它的一种孤立节点、暂停节点等等,他的一个数量这块儿的话,这几个这六个部分都是需要我们去关注的,比如说我这个截图的时候有两个失败的实例,我们就去看一下,为什么失败了这个是不是会影响我们业务的等于说报表或者是一些其他应用的一个使用。下半部分的话就是某个周期下所有整体任务的一个运行情况,会涉及运行成功的运行中的等待时间的,或者是等待资源的这块我们可以一下就看出来,现在有多少个跑完了,有多少个没跑,有多少个跑失败了。关于这个EMR机器人,它一般使用较多的还是这种离线跑批的任务。周期任务运维这块,因为我们不管是T加一调度还是小数据调度它都是属于周期,这种调度的一种。
可以看到它这个周期认为,下面它有个周期任务跟周期实力。任务其实只有一个,可以在这个任务上,比如说我现在选中的这个哈思怡我们可以看到它的一个节点ID等等,比如说他的一个执行的他的一个时间,他定时任务是怎么样可以看到秒、分钟、小时,相当于就是每天的00:28去执行任务,他是属于哪一个工作空间、什么类型,他的引擎是什么样的,从什么时候调度开始生效等等。调度资源组是哪一个,所在的地区是哪个,都是在这个地方可以得到一个详细的说明。根据这个周期任务会周期性地生成实例,比如现在这个任务按天调度每天00:28去执行。在这个周期实例里面它就会有每一天,如果我们设置的这个时间范围是每天的话,它就会有每天的一个实例。如果我们是小时的话,那他一天可能就会产生24个实例。
智能机线其实我们可以理解他是有一个接下大家都可以了解到就是我们这个任务。我会给他设置一个限制就比如说他最后完成时间,比如说像我现在这个配置的这个测试的极限,他其实承诺的话会在九点半的时候完成,如果我这个任务是在九点开始跑的九点半是他的承诺时间它会有一定的这个就相当于给了一些Tolerance,它会有一个15分钟的容忍度,他其实会在九点十五的时候进行预警,如果09:15还没完,那就要先进行预警,他可能是一种推送方式推送到你的比如手机上的短信等等,如果到承诺时间还没有完成,它就会是一个破线的状态,那他会可能会有一个更高的告警的方式,这样来保证我们的任务,比如说如果失败,及时过来去处理一下,看看是不是要跑批等等。
其实我们整体的话就是讲了这七个组件,现在就是对本次的课程进行内容进行一个回顾,在EMS集群的基础上再离线数据分析的背景下分为开源和自研两个部分对EMR的组件进行了一个简单的介绍。
这块们简单的过一下,看一下这部分从底到上层以及针对一个上层的痛点发展出来的另外两个引擎。我们可以看到HDFS这块的话它其实它的特点就是低成本高可用高可扩展性。用的比较多的API比较丰富,也同时提供了可视化的管理,有一些权限的管理,同时也比较方便容易的去运维。
Hive这块主要两个功能,一个就是Circle转化成Mapreduce解放大家的时间,第二块儿的话就是元数据管理可以服务自己以及一些上层的计算引擎,把这种HDFS的数据映射成二维表。可视化查询这块儿就跟我们的这种客户端是一样的,把搜狗在上面编辑执行,然后去得到一些,比如说数据分析的结果那Spark跟Crystal的话,其实是一样的,它其实都是在我们这个就是汉语查询慢的这么一个痛点上引出来的,但是他们也互相有不同。
比如Spark也是有计算速度快的这么一个特点的,它的易用性,它的ap f高度封装,它的通用性,他的一些就是生态是非常的大的,Place这块的话就是存储计算分离,它的这个整个的Priest计算机群是可以独立部署的,他的ad hoc的机器查询我们刚才也看到了他这种秒级返回的这种感受是非常好的,联邦查询的这种跨库查询的能力,这块儿就是开源部分。回到自研的部分就是我们所说的这个精度FS在HDFS的两个核心痛点上,一个是name node,然后另外一个就是运维这方面他其实做了很大的优化,第一个就是它的框架相对于HDFS稳定,干掉了的Note。用os去做存储就会导致了它的一个成本的优化是大家可能比较关注的。
data works这块其实是一个深度集成的关系,我们可以用 data works一站式数据开发治理平台去做一些数据开发的工作。那这是本次课程的一个全部内容。
同理复习完本节的这个所有内容之后,我们要对下一期的内容做一个整体的展望。包括我们EMS集群的运维操作和排障,做一个整体的介绍,一共分成六个部分。首先是管控平台,就是我们刚才所看到的那一部分,就是我们集群所看到的那一部分。
第二部分就是今天讲到的开源组件的一个管理平台,那比如说我们刚才看到的HDFS的UI就是刚才的那个可视化白屏的部分,它其实也是有很多其他的管理功能在的。比如说没有讲到的spark UI或者是如果同学们对于这个资源教育管理提案比较感兴趣第三节课肯定是不能错过的,这里边会涉及一些阴暗的他的一些很多的一个内容。
第三部分的话就是集群的监控告警。这块可能会涉及水位推送规则啥的。第四部分的话就是这个组件服务异常的排查。第五部分就是运行。其实这次第四部分和第五部分可以就是一起来看就是他的分成两部分,一个是组件服务异常,一个是任务异常,会有组件服务异常怎么排查,任务异常怎么排查怎么去看日志,还会有一个异常诊断的工具的介绍。
最后一部分就是弹性伸缩这块主要就是因为云到它的一个刚才我们所提到的,它的弹性是一个非常重要的一个特点,EMR级群在弹性伸缩的部分会涉及弹性伸缩的一个原理的讲解,这是整个的六个部分。