关于YARN(Hadoop入门三)

关于YARN

YARN是(Yet Another Resource Negotaitor)Hadoop的集群资源管理系统。

YARN的产生背景

  • 因为YARN是从MapReduce1.x(hadoop-0.23)中拆分出来的,叫做MapReduce 2.0 (MRv2)或者YARN。
  • mapreduce1.x的结构是master/slave : 分别对应的是JobTracker和TaskTracker。其中JobTracker是单点的、压力大,扩展难,也仅仅只能够支持mapreduce作业。YARN是具有通用性的,其它分布式计算框架也可以跑在YARN上,如Spark,Tez,Strom等等。

MapReduce1.x的架构

在这里插入图片描述

在YARN上跑的分布式计算框架:
在这里插入图片描述

  • 资源利用率与运营成本:YARN把所有的计算框架运行在一个集群中,共享一个集群的资源,按需分配,资源利用率高。

YARN的工作机制

YARN有两个主要有全局的ResourceManager(RM) 和每个应用都有的 ApplicationManager(AM)。同样是master/salve结构,分别对应:ResourceManager(RM)NodeManager(NM)。RM和每个节点的从属节点NM构成数据计算框架。RM是在系统中的所有应用程序之间仲裁资源的最终权威。每个应用程序AM实际上是一个特定于框架的库,它的任务是与RM协商资源,并与NM一起执行和监视任务。

YARN的架构

在这里插入图片描述

MapReduce1.x和YARN在组成上的比较

MapReduce1.x中,Jobtrack同时负责作业调度(与之等价的是ResourceManager)和任务监控,重启失败或迟缓的任务,记录任务流水(与之等价的是Application Master),记录已完成作业的作业历史(与之等价的是时间轴服务器Timeline Server)。Tasktracker负责任务执行(与之等价的是节点管理器NM)。每个Tasktracker有配置有固定长度的slot,是静态分配的,而YARN中NodeManager管理一个资源池,是按需分配的。

MapReduce1.x YARN
Jobtracker ResourceManager(RM),Application Master(AM),Timeline Server
Tasktracker NodeManager(NM)
Slot Container

在这里插入图片描述

YARN架构中的各个组件即负责的功能

  • Client: 向RM提交任务、杀死任务等
  • ApplicationMaster:
    每个应用程序对应一个AM
    AM向RM申请资源用于在NM上启动对应的Task
    数据切分
    为每个task向RM申请资源(container)
    与NM通信
    任务的监控
  • NodeManager: 多个
    向RM发送心跳信息、任务的执行情况
    接收来自RM的请求来启动任务
    处理来自AM的命令
  • ResourceManager:集群中同一时刻对外提供服务的只有1个,负责资源相关
    处理来自客户端的请求:提交、杀死
    启动/监控AM
    监控NM
    资源相关
  • Container:任务的运行抽象
    memory,cpu,disk,network…
    task是运行在container里面的
    可以运行AM、也可以运行map/reduce task

YARN执行流程:

在这里插入图片描述
1)客户端联系RM,提交应用程序。
2)RM向NM申请资源,启动容器运行AM。
4)AM启动后,向RM注册,这样就可以让客户端向RM通信并通过AM直接获取任务执行情况。AM运行后具体执行什么依赖于应用本身,有可能是简单的运行计算,也有可能向RM申请更多的资源(对应是第5步)。
5)AM向NM申请资源即容器Container。
6)NM启动容器后执行Task任务,后面NM向AM返回Task的运行情况。

使用YARN运行程序

YARN环境配置

1)在hadoop文件中找到配置文件 etc/hadoop/mapred-site.xml配置如下属性:

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>

2)etc/hadoop/yarn-site.xml配置属性:

<configuration>
	<property>
		<name>yarn.nodemanager.local-dirs</name>
		#这里是自己配置的存放临时文件的文件夹,可以在hdfs-site.xml中找到hadoop.tmp.dir属性
		<value>/home/hadoop/app/tmp/nm-local-dir</value>
	</property>
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>

3)启动YARN:运行启动文件

 $ sbin/start-yarn.sh

关闭时运行停止文件:

  $ sbin/stop-yarn.sh

4)启动后输入jps查看进程:
在这里插入图片描述
5)查看Web UI:
输入http://192.168.132.128:8088,IP地址对应的是自己部署的Hadoop,这里可以查看提交到YARN的应用程序的执行情况等信息。

猜你喜欢

转载自blog.csdn.net/qq_40311709/article/details/89786923