大数据之Yarn集群运行机制
Yarn作为Hadoop集群中作为资源调度的角色可谓是意义重大。当然其实Yarn本身在搭建完成之后呢不太需要你去关注它什么,就像一个幕后工作者默默的工作不抛头露面。但是我们还是需要知道它的一些运行机制。我们就拿提交一个MapReduce来举例子。
我们知道yarn集群分为两大角色,ResourceManager和NodeManager,其中呢ResourceManager包含Applications Manager 和 Schedule两个模块。而Node Manager呢包含Container和 APPmaster。所以当我们提交一个MapReduce运算任务时,我们的yarn是怎么运作的呢。
我们可以把这个过程理解成一家大型公司的运转。
首先客户像公司提交了一个项目工程需求,我要做一个这个东西,这是不是就相当于我们的Client向ResourceManager提交了一个计算任务。
然后呢公司就开了一个会议拉上公司高层商讨这个需求的可行性,就相当于我们的ApplicationManager自检一番服务器磁盘内存等资源的状态,如果呢公司高层觉得我们公司可以没问题完全吃得下这个项目呢,那么就会创立一个项目组并指定一个项目经理,就相当于当我们的yarn集群自检合格之后呢,就会启动一个Container,然后启动一个APPmaster。
这个APPmaster呢就相当于我们的项目组中的项目经理。然后我们的项目经理呢第一步做什么呢,是的首先在我们的项目办公室注册项目,并且向我们的人事资源部申请人力资源。这就相当于APPmaster向ResourceManager注册APPmaster,并向Schedule申请资源。
然后呢我们的人事资源部呢就以项目组的形式呢回复资源列表,A项目组要多少个人,要多少台设备什么的。这一步就相当于Schedule以Container的形式回复我们的资源列表。
这时候项目经理拿到人和设备了没啊?并没有,人事部只是批准了,那么具体还得怎么样?还得我们的项目经理自己去跑腿。这时候我们的APPmaster就跟其他的NodeManager通信聊啊,我要多少多少资源你得分配给我,是用来做什么的,上级批准了的。就好比我们的项目经理跟其他的外包商,服务商沟通的一个过程,我要做什么,你帮我做需要多少资源什么的。
这时候我们的目标主机收到需求之后呢,就开始分配资源,然后开始干活。
干完活怎么样?对想APPmaster汇报,诶我干完了。这就等于我们的外包商和服务商交付结果的这么一个过程。
我们项目经理拿到了外包商服务商的交付结果,肯定接下来就是跟我们的公司高层汇报吧。告诉公司高层我们做完了。公司高层收到这个消息,那么接下来肯定就是把这个交付结果,给回到我们的客户,也就是Node Manager向APPmaster交付完之后,APPmaster向ResourceManager交付的这样一个过程,然后我们的ResourceManager把结果返回给我们的Client。
这就是yarn集群收到运算请求的一个完整的运行过程,是不是跟一家公司的运行机制很像呢?