通俗理解YARN运行原理

导语:工作中常常和Spark on YARN, Hadoop on YARN打交道,经常在各种日志中摸爬滚打,为提升效率,总结一下YARN的知识点,希望能形成一个比较系统的方法论。本文由三问三答一例组成。

1、为什么要使用YARN?

为了提升集群的利用率、资源统一管理, 使用YARN为上层应用提供统一的资源管理和调度的平台。

2、YARN的优势?

    资源的统一管理和调度: 

    集群中所有节点的资源(内存、CPU、磁盘、网络等)抽象为Container。计算框架需要资源进行运算任务时需要向YARN申请Container, YARN按照特定的策略对资源进行调度进行Container的分配。

    资源隔离: 

    YARN使用了轻量级资源隔离机制Cgroups进行资源隔离以避免相互干扰,一旦Container使用的资源量超过事先定义的上限值,就将其杀死。

3、YARN是如何工作的?

介绍YARN调度过程之前,解释几个专用名词:

Resource Manager:全局资源管理器,一个集群只有一个RM。负责和AM(Application Master)交互,资源调度、资源分配等工作。

Application Master:应用程序的管理器,类似项目经理,一个应用程序只有一个AM。负责任务开始时找RM要资源,任务完成时向RM注销自己,释放资源;与NM通信以启动/停止任务;接收NM同步的任务进度信息。

Node Manager:一台机器上的管理者,类似于部门经理。管理着本机上若干小弟Containers的生命周期、监视资源和跟踪节点健康并定时上报给RM;接收并处理来自AM的Container启动/停止等各种请求。

Container:一台机器上具体提供运算资源,将设备上的内存、CPU、磁盘、网络等资源封装在一起的抽象概念——“资源容器”,Container是一个动态资源分配单位,为了限定每个任务使用的资源量。


NM和Container是一台设备上的不同进程

Attempt:提交到Yarn中的应用程序被称为Application,它可能会尝试运行多次,每次的尝试运行称为“Application Attempt”,如果一次尝试运行失败,则由RMApp创建另一个继续运行,直至达到失败次数的上限。

图片来自参考[1]

以下通俗地解释一下向YARN提交一个应用程序时的执行过程:

1、用户向YARN提交程序,以Map Reduce程序为例,Resource Manager(资源管理器)接收到客户端程序的运行请求

2、Resource Manager分配一个Container(资源)用来启动Application Master(程序管理员),并告知Node Manager(节点管理员),要求它在这个Container下启动Application Master

3、Application Master启动后,向Resource Manager发起注册请求

4、Application Master向Resource Manager申请资源

5、取得资源后,根据资源,向相关的Node Manager通信,要求其启动程序

6、Node Manager(多个)启动MR(每个MR任务都是一个job,可以在job日志中查看程序运行日志)

7、Node Manager不断汇报MR状态和进展给Application Master

8、当MR全部完成时,Application Master向Resource Manager汇报任务完成,并注销自己


下面结合一个排错的例子来介绍日常使用:

在一次提交一个MR任务之后,application失败退出。通常会第一时间看到application页面排查问题,这里第一个红框是应用程序最终状态,FAILED。错误发生立马看诊断信息有没有逻辑错误信息(程序代码自身问题),现在看诊断信息显示是task失败,排除逻辑错误。

除去代码问题,应该是环境变量和job设置的问题,接下来看任务运行日志,进入 Tracking URL: History。

application运行情况页面

第二个页面,MR的job日志界面,发现是Map任务失败

MR的job日志界面

第三个界面,查看具体失败的attempts情况

从Note显示的信息判断是逻辑还是系统失败,很明显是系统失败,再点开log查看详细信息。

查看具体失败的attempts情况

发现是我job设置的JAVA_HOME出现问题。定位并解决~

环境变量问题

-------------------------

参考文章:

[1] Yarn(MapReduce2.0)架构的资源请求流程(通俗)

[2]yarn-百度百科

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值