当前位置: 首页 > 面试经验 >

大数据(Yarn)面试题及答案

优质
小牛编辑
82浏览
2023-03-28

大数据(Yarn)面试题及答案

  1. 介绍下YARN

● Yarn 是一个资源调度平台,负责为运算程序提供服务器运算资源,相当于一个分布式的操作系统平台,而 MapReduce 等运算程序则相当于运行于操作系统之上的应用程序。

  1. YARN有几个模块

● Yarn架构

○ ResourceManager(RM):

■ 1、处理客户端的请求

■ 2、监控NodeManager

■ 3、启动或者监控ApplicationMaster

■ 4、资源的调度和分配

○ NodeManager(NM):

■ 1、管理单个节点上的资源

■ 2、处理来自ResourceManager的命令

■ 3、处理来自ApplicationMaster的命令

○ ApplicationMaster(AM):

■ 1、负责数据的切分

■ 2、为应用程序申请资源并分配给内部的任务

■ 3、任务的监控与容错

○ Container:

■ 是Yarn中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。
  1. YARN工作机制

● 4.3 工作机制

○ 1)作业提交
○ 2)作业初始化
○ 3)任务分配
○ 4)任务运行
○ 5)进度和状态更新
○ 6)作业完成


● 第1步:Client调用job.waitForCompletion方法,向整个集群提交MapReduce作业。
● 第2步:Client向RM申请一个作业id。
● 第3步:RM给Client返回该job资源的提交路径和作业id。
● 第4步:Client提交jar包、切片信息和配置文件到指定的资源提交路径。
● 第5步:Client提交完资源后,向RM申请运行ApplicationMaster。
● 第6步:当RM收到Client的请求后,将该job添加到容量调度器中。
● 第7步:某一个空闲的NM领取到该Job。
● 第8步:该NM创建Container,并产生ApplicationMaster。
● 第9步:下载Client提交的资源到本地。
● 第10步:ApplicationMaster向RM申请运行多个MapTask任务资源。
● 第11步:RM将运行MapTask任务分配给另外两个NodeManager,另两个NodeManager分别领取任务并创建容器。
● 第12步:MR向两个接收到任务的NodeManager发送程序启动脚本,这两个NodeManager分别启动MapTask,MapTask对数据分区排序。
● 第13步:ApplicationMaster等待所有MapTask运行完毕后,向RM申请容器,运行ReduceTask。
● 第14步:ReduceTask向MapTask获取相应分区的数据。
● 第15步:程序运行完毕后,MR会向RM申请注销自己。

  1. YARN有什么优势,能解决什么问题?
    1、解决了单点故障问题,由于每一个任务由一个AppMaster进行调度,且可进行AppMaster出错重试,从而使单点故障影响到多个任务进行问题不存在。
    2、解决了单点压力过大问题,每一个任务由一个AppMaster进行调度,而每一个AppMaster都是由集群中资源较为充足的结点进行启动,调度任务,起到一个负载均衡的作用。
    3、完成了资源管理和任务调度的解耦,Yarn只负责对集群资源的管理,各个计算框架只要继承了AppMaster,就可以共同使用Yarn资源管理,更加充分地利用集群资源。
    ————————————————
    版权声明:本文为CSDN博主「eddieVim」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/weixin_44129784/article/details/109506958

  2. YARN容错机制
    作为分布式系统,YARN具备高容错性,各个服务组件的容错机制如下:
    1、ApplicationMaster容错:RM监控AM的运行状态,一旦发现它运行失败或者超时,就会重新分配资源并启动它,启动之后AM内部的状态如何恢复由自己保证,比如MRAppMaster在作业运行过程中将状态信息动态记录到HDFS上,一旦出现故障重启后,它能够从HDFS读取并恢复之前的运行状态,减少重复计算带来的开销。
    2、NodeManager容错:NM超时没有心跳,则RM认为它死掉,会将上面的Container状态置为失败,并告诉对应的ApplicationMaster,以决定如何处理这些Container中运行的任务
    3、Container容错:如果AM在一定时间内未启动分配到的Container,则RM会将该Container状态置为失败并回收它;如果一个Container在运行过充中,因为外界原因导致运行失败,则RM会转告对应的AM,由AM决定如何处理
    4、RM容错:至关重要,接下来介绍:

Hadoop HA基本框架
为了解决单点故障问题,Hadoop2.0中的HDFS和YARN均采用了基于共享存储的HA解决方案,即Active Master不断将信息写入到一个共享存储系统,而Standby Master则不断读取这些信息,以与Active Master的内存信息保持同步,当需要主备切换时,选中的Standby Master需先保证信息完全同步后,再将自己的角色切换至Active Master。
YARN HA采用的是基于Zookeeper的方案,MRv1采用的是基于HDFS的方案。
————————————————
解决HA问题需要考虑以下几个问题
(1)脑裂问题
脑裂指主备切换时,由于切换不彻底或者其他原因,导致客户端和slave误以为出现两个Active Master,最终使得整个集群处于混论状态,通常采用隔离(fencing)机制解决。解决脑裂问题从三个方面考虑:
■ 共享存储隔离:确保只有一个Master往共享存储里写数据
■ 客户端隔离:确保只有一个Master可以相应客户端的请求
■ slave隔离:确保只有一个Master可以向slave下命令。
(2)切换对外透明
保证整个切换对外透明,保证所有客户端和slave自动重定向到新的Active Master,通常是通过若干次尝试连接旧Master不成功后,重新尝试连接新Master完成的,有一定延迟。

版权声明:本文为CSDN博主「阿松0311」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44773984/article/details/121718592

  1. YARN高可用
    YARN将共享存储系统抽象为RMStateStore(一个Java接口),以保存恢复RM所必须的信息:
    Application状态信息ApplicationState。包含应用程序提交描述信息,提交时间,拥有者三个字段
    Application对应的每个ApplicationAttempt信息ApplicationAttemptState。包含attemptId、所在Container的信息masterContainer、安全Token三个字段
    安全令牌相关信息。
    RM不会保存已经分配给AM的资源信息和每个NM的资源使用信息,这些都通过 相应的心跳机制重构出来,所以RM HA是轻量级的。

RM提供了四种RMStateStore实现:
NullRMStateStore(不存储任何状态信息,在不启用恢复机制时,它是默认实现的)
MemoryRMStateStore(将状态信息保存到内存中,启用恢复机制时,它是默认实现的)
FileSystemRMStateStore(状态信息保存到HDFS中)
ZKRMStateStore(状态信息保存到ZK上)
YARN HA采用基于ZKRMStateStore的共享存储方案。
————————————————
版权声明:本文为CSDN博主「阿松0311」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/weixin_44773984/article/details/121718592

  1. YARN调度器
    ● 4.4 资源调度器

    ○ 1)先进先出调度器(FIFO)

    ■ 即先来先服务,在该调度机制下,所有的作业统一提交到一个队列中,Hadoop按照作业的提交顺序一次执行这些作业。

    ○ 2)容量调度器(Capacity Scheduler)

    ■ 1、支持多个队列,每个队列可以配置一定的资源,每个队列采用FIFO的调度策略。

    ■ 2、为了防止同一个任务的作业独占队列中的资源,该调度器会限定同一用户提交的作业的所占资源。首先,将作业分配给多个队列中最闲的队列。其次:按照作业优先级和作业提交的先后顺序,同时考虑用户资源量限制和内存限制对队列内的任务进行排序。

    ■ 3、多个队列并行执行队列中的任务。

    ○ 3)公平调度器(Fair Scheduler)(了解)

    ■ 使用公平调度器时,不需要预留一定量的资源,因为调度器会在所有运行的作业之间动态平衡。

    ■ 第一个大作业启动时,它是唯一运行的作业,因此获得集群中所有资源。

    ■ 当第二个小作业启动时,它被分配到集群的一半资源,这样每个作业都能公平共享资源。

  2. YARN中Container是如何启动的?
    https://blog.csdn.net/gaopenghigh/article/details/45507765/

  3. YARN监控
    Yarn模式概述
    Spark客户端可以直接连接Yarn,不需要额外构建Spark集群。
    有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点不同。
    yarn-client:Driver程序运行在客户端,适用于交互、调试,希望立即看到APP的输出。
    yarn-cluster:Driver程序运行在RM(ResourceManager)启动的AM(AplicationMaster)上,适用于生产环境。
    Yarn是一个资源调度平台,负责为运算程序提供服务器计算资源,方便我们编写的Spark、flink、MapReduce这些应用在它上面运行。
    资源的具体分配和调度不需要人们手动去操作,这种情况下,我们怎么能看到Yarn机器有多少资源呢?内存、CPU等。还有我们提交到Yarn的这些应用,他们的运行状态是什么,占用率多少资源,哪个节点在计算,执行时间等等,都是我们需要关注的问题。
    修改Hadoop配置文件,进行访问,下面就是Yarn的界面。

about the cluster界面可以看到Yarn的ResourceManager的状态、是否是HA、以及版本的信息。
上面编号为1区域的是整个集群的监控信息:
Apps Submitted:已提交的应用。
Apps Completed:已经完成的应用。
Apps Running:正在运行的应用。
Containers Running:正在运行的应用。
Memory Total:集群的总内存。
Memory Used:集群已使用的内存。
VCores Used:已经使用CPU的核数。
VCores Total:集群的CPU总的核数。
Memory Reserved:预留的内存。
VCores Reserved:预留的CPU的核数。
yarn为了防止分配一个容器到NodeManager的时候,NodeManager当前不能满足。
。。。。。。
https://cloud.tencent.com/developer/article/1643495

#大数据求职##实习##笔试题目##面经#
 类似资料: