文章目录
前言
对于HDFS的扩展性问题来说,很多人或许都了解过HDFS federation的方案,一种通过横向扩展命名空间的做法来延展其扩展性。其实,随着集群规模的扩张,不仅仅存储系统会有性能瓶颈问题,计算系统也会存在这样的问题,比如说YARN的ResourceManager(下面简写为RM)服务。当RM下面管理这上千甚至上万个NodeManager节点时,同样会面临着许多性能问题,大量同时在跑的应用所触发的待处理的event数等等问题。一般这种情况,我们的一个简单直接的方案是再搭建一个新的YARN集群。因为Hadoop中存储和计算是可以分离的,所以独立搭建YARN完全没有任何问题。之后引流一部分在线任务到新的YARN集群即可分担单集群的压力了。但是这套简单直接的方法会造成日后多独立集群管理的不便,而且更为重要的一点是它无法保证资源的更高使用率。本文笔者来聊聊YARN对此更有的解决方案:YARN Federation设计。
YARN Federation缘由
正如前文所阐述的,YARN的Federation的缘由是为了解决RM的扩展性问题的。如果单纯通过搭建新的YARN独立集群的方式,会造成管理的不便,还有一点就是资源无法被充分利用到。我们无法保证每个集群在资源空闲的时候能够及时地安排上任务执行,除非我们有一种全局控制各个RM的调度器。至少在独立集群部署模式下,做到这种智能调控并不容易。而在这点上,YARN Federation已经为我们实现了这点。
下面我们来具体了解YARN Federation的架构设计,通过了解它的架构设计,我们就能更清楚地知道它是如何做全局资源调度的了。