YARN资源调度框架搭建和应用

一、产生的背景

1、MapReduce1.0存在的问题 ,架构如图所示:

img

1)单点故障:JobTracker只有一个,JobTracker挂了整个集群就没办法使用了;

2)一个人干的活太多:JobTracker负责接收来自各个JobTracker节点的RPC请求,压力会很大,限制了集群的扩展;随着节点规模增大之后,JobTracker就成为一个瓶颈;

2、资源利用率和运维成本

1)在没有YARN之前,是一个集群一个计算框架。比如:Hadoop一个集群、Spark一个集群、HBase一个集群…造成各个集群管理复杂,资源的利用率很低;比如:在某个时间段内Hadoop集群忙而Spark集群闲着,反之亦然,各个集群之间不能共享资源造成集群间资源并不能充分利用;

​ 解决思路:将所有的计算框架运行在一个集群中,共享一个集群的资源,按需分配;Hadoop需要资源就将资源分配给Hadoop,Spark需要资源就将资源分配给Spark,进而整个集群中的资源利用率就高于多个小集群的资源利用率;

2)采用“一个框架一个集群”的模式,则需要多个管理员管理这些集群,进而增加运维成本;而共享集群模式通常需要少数管理员即可完成多个框架的统一管理;

img

二、YARN架构

RM(ResourceManager) + N NM(NodeManager)

img

ResourceManager的职责: 一个集群active状态的RM只有一个,负责整个集群的资源管理和调度
    1)处理客户端的请求(启动/杀死)
    2)启动/监控ApplicationMaster(一个作业对应一个AM)
    3)监控NM
    4)系统的资源分配和调度

NodeManager:整个集群中有N个,负责单个节点的资源管理和使用以及task的运行情况

1)定期向RM汇报本节点的资源使用请求和各个Container的运行状态
    2)接收并处理RM的container启停的各种命令
    3)单个节点的资源管理和任务管理

ApplicationMaster:每个应用/作业对应一个,负责应用程序的管理

1)数据切分
    2)为应用程序向RM申请资源(container),并分配给内部任务
    3)与NM通信以启停task, task是运行在container中的
    4)task的监控和容错

Container:

对任务运行情况的描述:cpu、memory、环境变量

三、YARN执行流程

YARN执行流程如图所示:

img

1)用户向YARN提交作业
2)RM为该作业分配第一个container(AM)
3)RM会与对应的NM通信,要求NM在这个container上启动应用程序的AM
4) AM首先向RM注册,然后AM将为各个任务申请资源,并监控运行情况
5)AM采用轮训的方式通过RPC协议向RM申请和领取资源
6)AM申请到资源以后,便和相应的NM通信,要求NM启动任务
7)NM启动我们作业对应的task

四、YARN环境搭建

1.配置mapred-site.xml
      
        mapreduce.framework.name
        yarn
      

2.配置yarn-site.xml
      
        yarn.nodemanager.aux-services
        mapreduce_shuffle
      

3.启动yarn:sbin/start-yarn.sh

4.验证是否启动成功
      jps
        ResourceManager
        NodeManager

web: http://hadoop001:8088

截图如下:

img

5.停止yarn: sbin/stop-yarn.sh

6.提交mr作业到yarn上运行: wc

/home/zengyouxuan/hadoop/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar

hadoop jar /home/zengyouxuan/hadoop/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar wordcount /input/wc/hello.txt /output/wc/

当我们再次执行该作业时,会报错:
        FileAlreadyExistsException:
Output directory hdfs://hadoop001:8020/output/wc already exists

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值