目录
- 1.YARN 产生背景
- 2.YARN概述
- 3.YARN架构(面试考点,务必要了解整个架构)
- 4.YARN执行流程(面试考点,务必要了解整个执行流程)
- 5.YARN环境搭建
- 6.提交作业到YARN上执行
1、YARN 产生背景
在Hadoop1.X时,MapReduce是Master/Slave的架构,1个JobTracker带多个TaskTracker
JobTracker:负责资源管理和作业调度
TaskTracker:定期向JT汇报本节点的健康状况、资源使用情况、作业执行情况;接受来自JT的命令:启动任务/杀死任务
-
MapReduce1.x 存在的问题:单点故障&节点压力大不易扩展&不支持除了MapReduce之外的其他计算框架
-
资源利用率低&集群之间不能共享资源&运维成本高、管理困难
-
因此,催生了YARN的诞生
有了YARN(集群资源管理)之后,可以运行多个不同类型的作业和多种不同的计算框架。可以把YARN理解为是 操作系统级别的资源调度框架 ,它让更多的计算框架(Spark、MapReduce、Storm、Flink等)运行在同一个集群中,不同的计算框架之间可以共享同一个HDFS集群上的数据、享受整体的资源调度。
xxx on YARN的好处:与其他计算框架共享集群资源、按资源需要分配,进而提高集群资源的利用率
xxx :Spark、MapReduce、Storm、Flink
2、YARN概述
- Yet Another Resource Negotiator
- 通用的资源管理系统
- 为上层应用提供统一的资源管理和调度
3、YARN架构(面试考点,务必要了解整个架构的执行流程)
1)ResourceManager:RM
整个集群同一时间提供服务的RM只有一个,负责集群资源的统一管理和调度;处理客户端的请求:提交一个作业、杀死一个作业;监控NM,一旦某个NM挂了,则该NM上运行的任务需要告诉我们的AM该如何处理;
2)NodeManager:NM
整个集群中有多个,负责自己本身节点资源管理和使用,定时向RM汇报本节点的资源使用情况;接受并处理来自RM的各种命令:启动Container;
处理来自AM的命令;单个节点的资源管理;
3)ApplicationMaster:AM
每个应用程序对应一个AM:MR、Spark,负责应用程序的管理;为应用程序向RM申请资源(core、memory),分配给内部task,需要与NM通信:启动/停止task,task是运行在Container里面,AM也是运行在Container里面的。
4)Container
封装了CPU、Memory等资源的一个容器;是一个任务运行环境的抽象
5)Client
提交作业;查看作业运行进度;杀死作业
4、YARN执行流程
5、YARN环境搭建(单节点)
1)使用版本
- hadoop-2.6.0-cdh5.7.0.tar.gz
2)修改配置文件
- etc/hadoop/mapred-site.xml
(第一次使用的时候,会发现在etc/hadoop/目录下并没有mapred-site.xml文件,只有mapred-site.xml.template,此时只需要复制一份mapred-site.xml.template重命名为mapred-site即可)在终端输入如下命令:
#复制mapred-site.xml.template重命名为mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
#打开mapred-site.xml
vim mapred-site.xml
把下面代码添加到mapred-site.xml 文件中即可
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
效果如图 - etc/hadoop/yarn-site.xml
同上,打开yarn-site.xml,把下面代码添加进去即可
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
3)启动
sbin/start-yarn.sh
4)验证
jps:多次两个进程NodeManager、 ResourceManager
打开浏览器:http://localhost:8088/
5)停止
sbin/stop-yarn.sh
6、提交MapReduce作业到YARN上执行
在/home/hadoop/app/hadoop-2.6.0-cdh5.7.0/share/hadoop/mapreduce
路径下,有官方提供的MapReduce的案例jar包:hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar
在终端输入以下命令:
#这条命令是运行官方提供的计算pi的案例
hadoop jar hadoop-mapreduce-examples-2.6.0-cdh5.7.0.jar pi 2 3
在浏览器中输入 http://localhost:8088/ 可以看到刚刚提交的作业,刷新页面查看作业的运行状态。
在终端可以查看到运行的结果