yarn相关常见知识点

1. YARN架构

        YARN总体上仍然是Master/Slave结构。在整个资源管理框架中,ResourceManager为Master,NodeManager为Slave,ResourceManager负责对各个NodeManager上的资源进行统一管理和调度。当用户提交一个应用程序时,需要提供一个用以跟踪和管理这个程序的ApplicationMaster,它负责向ResourceManager申请资源,并要求NodeManger启动可以占用一定资源的任务。由于不同的ApplicationMaster被分布到不同的节点上,因此它们之间不会相互影响。

1.1 ResourceManager

        整个集群资源的主要协调者和管理者,负责给用户提交的所有应用程序分配资源。主要包括两个组件:

  • 调度器Scheduler:收来自ApplicationMaster的应用程序资源请求,把集群中的资源以“容器”的形式分配给提出申请的应用程序,容器的选择通常会考虑应用程序所要处理的数据的位置,进行就近选择,从而实现“计算向数据靠拢”。

  • 应用程序管理器(Applications Manager):负责系统中所有应用程序的管理工作,主要包括应用程序提交、与调度器协商资源以启动ApplicationMaster、监控ApplicationMaster运行状态并在失败时重新启动等。

1.2 NodeManager

        每个节点的管理者,主要负责该节点内所有容器的生命周期管理,监视资源和跟踪节点健康。

1.3 ApplicationMaster

        在用户提交一个应用程序时,yarn会启动一个轻量级的进程ApplicationMaster负责协调来自RM的资源,通过NM监视容器内资源的使用情况。

1.4 Container

        yarn中的资源抽象,封装了某个节点上的多维度的资源。当AM向RM申请资源,RM为AM返回的资源用Container表示。yarn会为每个任务分配一个Container,该任务只能使用该Container中的资源,AM可在Container内运行任何类型的任务。

2 yarn任务提交启动流程

  1. 客户端程序向 RM 提交应用并请求一个 AM 实例
  2. RM 找到一个可以运行一个 Container 的 NM,并在这个 Container 中启动 AM 实例
  3. AM 向 RM 进行注册,并向RM申请启动任务containr所需的资源
  4. RM根据NM的资源汇报情况,向AM回复资源(container)的分配情况,即给请求的任务container分配具体的NM
  5. AM根据任务container分配的NM,向对应的NM发送请求,要求启动任务container
  6. NM收到启动任务container的请求后,同样根据请求参数,先完成依赖资源的本地化,然后启动任务container进程
  7. NM 不断汇报任务状态和进展给 ApplicationMaster
  8. 一旦应用程序执行完成并且所有相关工作也已经完成,AM 向 RM 取消注册然后关闭,用到所有的 Container 也归还给系统。

 3 RM HA与NN HA的区别

  1. RM(Resource Manager) HA 中,NM(Node Manager) 只会向 Active RM 发送心跳;NN(NameNode) HA 中,DN(DataNode)会同时向 Active NN 和 Standby NN发送心跳。
  2. RM HA 的选举机制内建在 RM 里(EmbeddedElectorService类),而 NN HA 是用单独的 zkfc 进程进行选举的。

4 RM脑裂问题

4.1 问题描述

        脑裂是指Resource Manager由于网络闪退或者自身故障未及时对外做出响应,出现“假死”现象,导致出发了Zookeeper新一轮的主备切换,但是,对于“假死”的RM自身来说,它仍认为自己是Active,所以导致整个系统中出现多个Active的RM。

4.2 解决方案

        隔离机制:在主备切换时,在RM竞争创建锁节点时,会携带zookeeper的ACL权限进行限制,目的是独占该节点。在主备切换后,原来“假死”的RM恢复后,会去更新zookeeper的节点状态,如果发现ACL不对,节点不是自己创建的,会将自己自动更新为standby状态,这样,保证了系统中只有一个Active的RM。

5 YARN资源隔离方式

  • 对于内存,采用进程监控或者 Cgroups 的方案
  • 对于 CPU,采用 Cgroups 方案

6. 多用户的资源调度方案

  • 一个物理集群上虚拟多个 Hadoop 集群
  • 扩展 Hadoop 调度器,支持多个队列多个用户

        目前yarn采用的是多队列的资源调度方式。

7 资源高度器的分类

7.1 FIFO Scheduler

        hadoop 1.x 默认调度器。FIFO Scheduler采用队列方式将一个一个job任务按照时间先后顺序进行服务。

7.2 Capacity Scheduler

        hadoop 2.x 默认调度器。 Capacity Scheduler,主要特点是可以为每个队列设置资源最低保证和资源使用上限,而所有提交到该队列的应用程序共享这些资源。

7.3 Fair Scheduler

        Facebook 开发的,主要特点是可以为每个队列单独设置调度策略(当前支持 FIFO、Fair、DRF 三个策略)

8 NameNode元数据及同步

        hdfs的元数据文件分为两类:fsimage和edits,用于持久化存储。

8.1 fsimage

        fsimage(镜像文件)是元数据的一个持久化的检查点,包含Hadoop文件系统中的所有目录和文件元数据信息,但不包含文件块位置的信息。文件块位置信息只存储在内存中,是在 datanode加入集群的时候,namenode询问datanode得到的,并且间断的更新。

8.2 edits

        edits(编辑日志)存放的是Hadoop文件系统的所有更改操作(文件创建,删除或修改)的日志,文件系统客户端执行的更改操作首先会被记录到edits文件中。

8.3 同步

        ActiveNameNode实时将fsimage和edit接入JournalNode(高效的存储系统)。StandByNameNode实时获取JournalNode内部的数据,实现两个节点的实时元数据同步。

参考

Yarn 常见问题 - 知乎

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值