返回 登录
0

华为印研Hadoop工程团队架构师Naganarasimha Garla:YARN架构的演进

【CSDN现场报道】5月13日-15日,由全球最大中文IT社区CSDN主办的“2016中国云计算技术大会”(Cloud Computing Technology Conference 2016,简称CCTC 2016)在北京新云南皇冠假日酒店隆重举行。本次大会以“技术与应用、趋势与实践”为主题,聚焦最纯粹的技术干货分享,和最接地气的深度行业案例实践,汇聚国内外顶尖技术专家,共论最新的云计算技术实践与发展趋势。

今天下午的压轴演讲嘉宾来自华为印研Hadoop工程团队架构师,Hadoop Committer Naganarasimha Garla,他的演讲聚焦《Evolution of YARN Scheduler》,他首先 介绍了华为对Hadoop开源做的工作和贡献,然后什么是YARN和为什么选择它,随后介绍了YARN的架构和演进,对于调度器的支持,在过去主要有FIFO Scheduler、Fair Scheduler、Capacity Scheduler,随后他重点介绍了当前SLA、 Multitenancy、Diverse workload、Heterogenous cluster的特征,最后他对Scheduler未来的特征进行了预测。

照片

华为印研Hadoop工程团队架构师,Naganarasimha Garla

以下为演讲实录:

我是Naganarasimha Garla,来自于华为印研,负责Hadoop工程团队的架构师,一直从2014年致力于开发研究,我们认为YARN 2.0有很多新特点,今天我的话题是关于YARN Scheduler。

我先简单介绍一下华为的情况,在2015和2016年的时候,我们在Hadoop这一方面做了很多的工作,获得了很大的贡献,也做了很多的生产,这些代码我们贡献了大概有25%,差不多87000行代码。关于未来的趋势,40%的编码是我和我印度的同事所完成的,我们也会在EC方面做出贡献,还有其他的一些开源项目。

我们内部的最新统计数据,由TMC的数据提供,现在对于Hadoop的贡献也是越来越多,和一开始相比增长了十几倍,而且我们在其他开源社区里面也非常积极,基本上排在第六位。我们在各个开源社区都很活跃,下面简单来介绍一下我们不同版本的发布,还有我们所提供的一些特点,以及之前调度器的一些特色,未来会有哪些特点等。

一般来说我们会问,为什么我们要用YARN?如果说你用Hadoop的话,基本上都是用于开放的用途,它是开源的。其实YARN更多是用于集群资源的管理,是一种调度器的功能。这样的调度器会用来执行相应的任务,比如说存储数据,或者其他一些功能,YARN就会来进行调度,是通过数据中心来进行,还有另外一个就是为什么说我们要选择YARN,这个领域有很多的竞争者,就会想为什么选这个YARN,其实很多的资源,你可以说他是有扩展性的,待会儿我会再介绍为什么在未来也是被认为有扩展性,它可以给你提供更多的选择,来决定到底你想在什么环境下进行运行。其实更多的是在资源管理方面,它是一个比较适合选择的平台,另外YARN也有很强的社区支撑,也有6个BMC和几百个贡献者,不仅仅说社区他们用Hadoop,还有微软也在和我们合作,未来我们还是会对于使用YARN这方面有更多合作的可能,即使是在中国,腾讯也用了很多YARN。所以从社区来讲有很强的基础,很多大公司都已经用了,还有现在有更加细化颗粒化调度的选择,后面我们可能会更多的介绍一下这些内容。

目标

首先我们来看一下目标,调度YARN的范。对于华为来讲,主要客户都是银行或者说是电信公司的提供商,对于这类客户有很多的用户数据,他们想要去监测这一部分的数据,都希望能够去拥有这些数据,要求有一个专门的集群,因为有时候并不是说很容易,但你必须去优化你的资源的分配,只有这样才能够确保你有独立的一部分资源来专门服务于某一个特殊用途的用户。安全性也非常重要,因为一旦有很多的客户在使用时,就需要确保它的安全性,还有另外一个是多样化的工作载荷。YARN可以有很多的应用,比如说需要更多的内存资源,因为他要处大量数据之类,每一种要求可能都不太一样,有些需要更多的GPU,所以要有各种不同的资源来满足不同客户的需求。以及一些为了长远的服务而需要提供特殊的支持,有时当他提供服务时,或需要运行非常长的时间,而且也应特别注意要关注它的使用场景,在同样一个位置再次发起或者是再次的进入,需要从一个同样的节点进入,这样的话,就可以更快的连续上,而且他可以把所有的这些容器一起来去启动,或者说是一个都不启动。

YARN在企业级的解决方案方面有非常多样化的工作载荷,有很多的客户称我们现在的处理时间反倒是增长了,其实SLA是能够提供一种更加一致性的表现,比如说一些大的集群,当很多的节点在这里面的时候,就需要在管理时去了解节点的特性,怎么能够更好的利用好这些节点。

架构

简单的说一下架构,中间是最核心的资源管理器,他有全球资源的调度器,还有应用生命周期管理,比如说启动主要的流程,然后和处理器来进行通信,还有配置、调度等这些工作都需要在这些环节去完成。

每一个机器都需要有一个节点管理器,去监控容器所消耗掉的这些资源,还有另外一个应用管理器,当客户希望提出一个请求,就是提出命令的话,需要通过这样管理器来去调度相应的请求,这样的Master应用之前需要非常多的资源,现在可以帮助降低一部分资源管理器的工作负荷,可扩展性方面有了一个进步。

容器是最基本的分配单元,它的容量是多大的,到底需要多大的CPU,多大的内存,可以了解到还有哪些具体特殊的资源需要去配置,一旦启动时Application Master还会进行容器内的资源调度和配置,会和节点进行通信,这基本是YARN大体的架构。

其实他也和很多东西联合,主要跟Hadoop的发布连接在一起的。YARN从2013年10月份出现,去年的8月份发布了2.7版本,好像这已经很久之前了,但是后面就在2016年和2017年肯定还有很多新的发布,因为也有很多的客户有这样的新需求,所以未来也会发布2.8版本,这也是被延迟了很长时间,但我们会在第三季度的时候发布,除此之外我们会再发布一个2.9版本或者是3.0版本,这些也会是未来的发布安排。

我们再看一下未来的情况,默认的一些调度器这里面支持的第一个是FIFO,也是非常快速的应用,他是一个非常原始的调度器,现在用的人不是很多。还有一个Fair的调度器,可以让这些应用在一个大的集群里面分享资源,一旦出现一些要求的话,发出请求然后就会进行调度任务的分配,这样的话可以跟第一个相比,更多地减少了时间和更加有效。下一个就是Capacity调度器,以一种非常及时的方式在能力或者容量比较有限的情况下可以进行应用的部署,所有的这些都是可以通过调度器来完成,绝大多数的调度器都可以实现这些需求的功能。

问题就在于你怎么进行配置,以及它使用的简便性,希望能在配置方面应该是比较简便的,而且在Capacity方面也是比较容易的,大家在这可以进行调节,调节一个其他的也就可以进行调度了,对于大多数的调度器都是一样的,我们来看一下怎么能够支持其他的一些功能。

重要的特点就在于这幅图所展示的,在之前的一些版本是怎么得到支持的,一个调度器Capacity非常的高,大家可以把你的工作负载进行相应的分割,根据不同的部门进行分配。

在这儿大家可以看到一些建议,最重要的点在这儿给大家列出来,要满足小限度的Capacity的要求,看一下最大可以拓展的限度,以及如何能够允许有一些潜在的可以拓展的余地,之后我们要看一下使用的模式是什么,就可以计算出最大的Capacity,在这不应该有更多的capacity,你们最好在配置上不要达到它的上限,我们一般是按照它的下限进行配置的,有的时候可能是多个用户来使用,我们最好要限制Capacity,如果是5%的话,若两个人,每个人是50%,大家要注意,一定要满足限度,不能超过上限。

接下来,我们希望在此可以看到有些豁免,有的时候大家要求得到更多的资源或者把以前的资源还给他们,要看一下他们的要求是什么以及工作性质是什么,如果非常关键,这时候我们就可以进行提供,我们的Q一定要有灵活度,也就是弹性,我们就可以根据大家的需求,如果不需要的话再把它收回去,而且在Q当中要进行平衡,比如说这里有6个工作,第三个工作是全职的工作,在Q当中就可以进行资源的分配了。这里是一些特殊的Q才能得到豁免,我们希望在各个Q当中进行资源的平衡,大家可以从中挑出非常特殊的Q,通过这么做你就可以控制各个Q,决定给他们分配多少的资源。

下面看一下节点的标签,这也是一个重要的特点。尤其是多租户的情况,我们可以把一个大的集群分割成为小的子集群进行使用,这就是节点的分区,而且就每个分区他们的容量或者是Capacity也是不一样的,这是基于Q的Labels,我们有的时候需要得到更多的资源,如果有更多的资源,那么是可以得到的。比如说GPU,各个分区当中有的时候没有弹性,有的时候我们看到大家希望花更多的钱买更加先进的设备,以便得到更多的资源,你最好注意到有关节点分期的情况。

接下来再看一下多租户的情况,Q ACLS也很重要,他确保谁能够得到一个Queue当中的资源,同时也能够确保你能够来对Queue进行管理,另外是关于有关Capacity的配置,也就是说可以为每一个人进行Queue的配置。在租户的各个Queue当中也可以进行资源的分配,在此我们先看一下对于资源的分离。在CPU当中,我们看到了这些资源,可以进行隔离,有一些租户他们希望使用更多内存,而有的租户可能希望使用更多的CPU,我们支持他们提出的多样化的需求,在此大家可以看到我们如何对资源进行计算,而且也可以根据不同的资源进行分配。

SLA的特点

下面来看一下关于SLA的特点,这是一个非常有用的特点。我们先看一下在YARN方面的调度,这个理念是由微软所提出的,在2.6和2.7当中都提到了这一方面的性能。通过这样的性能,我们可以看到就这样的一段时间我们需要得到多少的Capacity,而且对于我们的客户他们可以来确定在哪段时间需要什么样的资源,而且这时候我们就可以看见是不是我们有可能来做出这样的预定,基于动态的Queue,就看一下这段时间是否有资源可以得到使用,之后我们的计划实施人员他们也可以来看一下这方面的安排是否是可行的。通常对于这样的Queue,我们就可以进行预定了,然后把信息都输入进去,之后这样的信息填写在我们的要求当中,要求被提交,可以用来进行进一步的调度所需要的信息,这个特性非常的重要。

下面再看一下容器方面的大小调整,他也是我们的资源,如果容器需要更多的内存,我们希望能够满足大家对于容器大小的需求进行调整,对于调度器它也会试着去增加这方面的灵活度,下面我们再看一下对于非专有性的分区,也就是说我们可以来分享资源。

下面涉及到盘和网络的分离,换句话说我们对于带宽要进行分离。关于NM资源配置方面自动的贪色,对于NM能够采集到有关硬件的配置,关于所提供的Capacity是多少,我们这里有资源的配置,还有分布式节点的标签,对于不同的流程他们和YARN是兼容的,是同时存在的,这个时候就可以被加以发挥,我们都可以根据脚本来进行相应的设置,我们可以看一下这个GPU属于哪个Windows,这个特征也非常的重要。

在未来我们会拥有什么更多的调度器的特点,我们的调度是基于实际的资源的使用,这是YARN1011,这也是大家所提出来的要求,关于分区方面的共享,这个特点非常的重要,我们希望能够根据现在的东西进行资源的分区,同时对于资源的要求如果涉及每一个特点分区要求,可以提供分层节点的分区。

为了支持非常丰富的各种各样的Workload,我们也提出不同的类型,我们有单个的集群,他可以选择他要监测的是什么样的资源,对于GPU和内存,他们可以被执行,对于未来其他的GPU的支持,可以进行整合,有的时候同时要求GPU、CPU进行各种各样的支持,这个时候集群就必须要得到调度。这一些是将来出现的特点,在YARN的4715,我们希望能够使得配置的要求尽量的减少,有些新的API得到了支持,这个特点非常的重要,大家可以看到这是YARN4902当中所包含的,我们希望能够进行很好的整合,另外我们还有NM服务的发现,这些场景就是我们通过这个可以来实现的,另外还有一些分配的标签,配置的标签,这样的话可以帮助我们能够更好的针对客户的要求介绍这个配置的标签,如果说我们可以有某些要求的话,它可以来帮助AM的服务来进行配合。

还有未来的趋势,就是希望能够让这些扩展性进一步的延展,因为YARN也是可以达到一个非常多的数量的扩展,其实对于调度器来讲,也可以把当地的资源进行配置,它在整个的配置过程当中可以避免很多的延时,它的这种分布式的调度可以由本地的调度器在节点的管理器上面进行调度,而且在节点标签的限制方面也是和应用的标签比较类似的。

其实我们看到过去很多的都使用SLA,那未来也是有很多不同的趋势和执行,还有多样化的工作负荷,其实也有很多在做这样的一些应用,另外还有一些大的集群,其实分布式的这种调度器也是很重要,针对大的集群来讲,这些就是我的演讲。谢谢!

更多精彩内容,请关注直播专题2016中国云计算技术大会(CCTC),新浪微博@CSDN云计算,订阅CSDN云计算官方微信公众号。

评论