YARN的概述
MapReduce 1.x的简介
了解一下 因为已经过时了~
第一代Hadoop,由分布式存储系统HDFS和分布式计算框架MapReduce组成,其中,HDFS由一个NameNode和多个DataNode组成,MapReduce由一个JobTracker和多个TaskTracker组成,对应Hadoop版本为Hadoop 1.x和0.21.X,0.22.x。
MapReduce1的角色
-1.Client:作业提交发起者。
-2.JobTracker:初始化作业。分配作业,与TaskTracker通信。协调整个作业。
-3.TaskTracker:保持JobTracker通信,在分配的数据片段上执行MapReduce任务。
yarn的设计思想
yarn的基本思想是将资源管理和作业调度/监视功能划分为单独的守护进程。其思想是拥有一个全局ResourceManager(RM),以及每个应用程序拥有一个ApplicationMaster (AM)。应用程序可以是单个作业,也可以是一组作业
YARN的架构及组件
一个ResourceManager和多个NodeManager构成了yarn资源管理框架。他们是yarn启动后长期运行的守护进程,来提供核心服务。
ResourceManager,是在系统中的所有应用程序之间仲裁资源的最终权威,即管理整个集群上的所有资源分配,内部含有一个Scheduler(资源调度器)
NodeManager,是每台机器的资源管理器,也就是单个节点的管理者,负责启动和监视容器(container)资源使用情况,并向Resourcevanoger及其 Scheduler鸨然使用情况
container:即集群上的可使用资源,包含cpu、内存、磁盘、网络等
ApplicatiorMaster(简称AM)实际上是框架的特定的库,每启动一个应用程序,都会启动一个AM,它的任务是与ResourceManoger协商资源,并与NodeManoger一起执行和监视任务
YARN的配置
yarn属于hadoop的一个组件,不需要再单独安装程序,hadoop中已经存在配置文件的设置,本身就是一个集群,有主节点和从节点。
注意<value></value>之间的值不能有空格
在mapred-site.xml中的配置如下
<configuration>
<!--指定mopreduce使用yarn资源管理器-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!--配置作业历史服务器的地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>tianqinglong01:10020</value>
</property>
<!--配置作业历史服务器的http地址-->
<property>
<name>mopreduce-jobhistory.webapp.address</name>
<value>tianqinglong01:19888</value>
</property>
</configurations>
在yarn-site.xml中的配置如下
<configuration>
<!--指定resourcemanager的主机名-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>tianqinglong01</value>
</property>
<!--指定yarn的shuffle技术-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!--指定shuffle对应的类-->
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<!--配置resourcemanager的scheduler的内部通讯地址-->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>tianqinglong01:8030</value>
</property>
<!--配置resoucemanager的资源调度的内部通讯地址-->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>tianqinglong:8031</value>
</property>
<!--配置resourcemanager的内部通讯地址-->
<property>
<name>yarn.resourcemanager.address</name>
<value>tianqinglong:8032</value>
</property>
<!--配置resourcemanager的管理员的内部通讯地址-->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>tianqinglong:8033</value>
</property>
<!--配置resourcemanager的web ui的监控页面-->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>tianqinglong:8088</value>
</property>
</configuration>
历史服务
如果需要查看yarn的作业历史,需要打开历史服务:
1.停止当前的yarn进程
stop-yarn.sh
2.在yarn-site.xml中添加配置
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>640800</value>
</property>
:wq
3.分发到其他节点
scp yarn-site.xml tianqinglong02:$PWD
scp yarn-site.xml tianqinglong03:$PWD
4.启动yarn进程
[root@tianqinglong01 hadoop]# start-yarn.sh
5.开启历史服务
mr-jobhistory-server.sh start historyserver
6.查看
jps
YARN的job提交流程
在MR程序运行时,有五个独立的进程:
- YarnRunner:用于提交作业的客户端程序
- ResourceManager : yarn资源管理器,负责协调集群上计算机资源的分配
- NodeManager : yarn节点管理器,负责启动和监视集群中机器上的计算容器(container)
- Application Master:负责协调运行MapReduce作业的任务,他和任务都在容器中运行,这些容器由资源管理器分配并由节点管理器进行管理。
- HDFS:用于共享作业所需文件。
YARN的案例提交
MapReduce
[root@tianqinglong01 mapreduce]# hadoop jar hadoop-mapreduce-examples-2.7.6.jar wordcount /input /output
[root@tianqinglong01 mapreduce]# hdfs dfs -cat /output