欢迎来到天天文库
浏览记录
ID:57673412
大小:388.72 KB
页数:13页
时间:2020-08-31
《解析阿里云分布式调度系统伏羲.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、解析阿里云分布式调度系统伏羲本文章来自于阿里云云栖社区摘要: 本文涉及的内容是阿里云分布式调度团队在分布式调度系统的设计、实现、优化等方面的实践以及由此而总结的分布式系统设计的一般性原则,具体包括分布式调度的任务调度、资源调度、容错机制、规模挑战、安全与性能隔离以及未来发展方向六部分。云计算并不是无中生有的概念,它是将普通的单台PC的计算能力通过分布式调度的软件连接起来。其最核心的问题是如何把100台、1千台、1万台机器高效的组织起来,灵活的进行任务调度和管理,从而使得可以像使用台式机一样使用云计算。在云计算中,最核
2、心的模块是分布式调度,它好比于云计算的中央处理器。目前,业界已存在多种分布式调度实现方案,如伏羲、HadoopMR、YARN、Mesos等系统。阿里云伏羲伏羲系统是在前人的基础上进行了一系列的改造,首先与YARN和Mesos系统类似,将资源的调度和任务调度分离,形成两层架构,使其具备以下优势:(1)规模:两层架构易于横向扩展,资源管理和调度模块仅负责资源的整体分配,不负责具体任务调度,可以轻松扩展集群节点规模;(2)容错:当某个任务运行失败不会影响其他任务的执行;同时资源调度失败也不影响任务调度;(3)扩展性:不同的
3、计算任务可以采用不同的参数配置和调度策略,同时支持资源抢占;(4)调度效率:计算framework决定资源的生命周期,可以复用资源,提高资源交互效率。那现在这套系统已经在阿里集团进行了大范围的应用,能支持单集群5000节点、并发运行10000作业、30分钟完成100T数据terasort,性能是Yahoo在SortBenchmark的世界纪录的两倍。伏羲的系统架构伏羲的系统架构如下图所示,整个集群包括一台FuxiMaster以及多台Tubo。其中FuxiMaster是集群的中控角色,它负责资源的管理和调度;Tubo是
4、每台机器上都有的一个Agent,它负责管理本台机器上的用户进程;同时集群中还有一个叫PackageManager的角色,因为用户的可执行程序以及一些配置需要事先打成一个压缩包并上传到PackageManager上,PackageManager专门负责集群中包的分发。 图片一伏羲的系统架构集群部署完后,用户通过Client端的工具向FuxiMaster提交计算任务;FuxiMaster接收到任务后首先通知某一个Tubo启动这个计算任务所对应的APPMaster;APPMaster启动之后,它获知了自己的计算任务,包括数
5、据分布在哪里、有多少的任务需要计算等等信息;接着APPMaster会向FuxiMaster提交资源申请,表明它需要多少计算资源;FuxiMaster经过资源调度以后,将资源的分配结果下发给APPMaster;APPMaster在这个资源的基础之上进行它的任务调度,来决定哪些机器上运行哪些计算任务,并且将这个计算任务发送给对应机器上的Tubo进程;Tubo接受到命令之后就会从PackageManager中下载对应的可执行程序并解压;然后启动用户的可执行程序,加载用户的配置(图中的APPWorker);APPWorker
6、根据配置中的信息读取文件存储系统中的数据,然后进行计算并且将计算结果发往下一个APPWorker。其中,数据的切片称之为Instance或者叫计算实例。FuxiMaster与Tubo这套结构解决了分布式调度中的资源调度,每个计算任务的APPMaster以及一组APPWorker组合起来解决任务调度的问题。 任务调度伏羲在进行任务调度时,主要涉及两个角色:计算框架所需的APPMaster以及若干个APPWorker。 图片二伏羲在任务调度时涉及的主要角色APPMaster首先向FuxiMaster申请/释放资源;拿到F
7、uxiMaster分配的资源以后会调度相应的APPWorker到集群中的节点上,并分配Instance(数据切片)到APPWorker;APPMaster同时还要负责APPWorker之间的数据传递以及最终汇总生成JobStatus;同时为了达到容错效果,APPMaster还要负责管理APPWorker的生命周期,例如当发生故障之后它要负责重启APPWorker。而APPWorker的职责相对比较简单,首先它需要接收App Master发来的Instance,并执行用户计算逻辑;其次它需要不断的向APPMaster报
8、告它的执行进度等运行状态;其最为主要的任务是负责读取输入数据,将计算结果写到输出文件;此处的Instance是指输入数据的切片。伏羲任务调度系统的技术要点主要包括数据的Locality、数据的Shuffle以及Instance重试和BackupInstance三点。数据Locality数据locality是指调度时要考虑数据的亲近性,也就是说A
此文档下载收益归作者所有