1.1 YARN系统架构
YARN的基本思想是将资源管理和作业调度/监视功能划分为单独的守护进程。其思想是拥有一个全局ResourceManager (RM),以及每个应用程序拥有一个ApplicationMaster (AM)。应用程序可以是单个作业,也可以是一组作业。
一个ResourceManager和多个NodeManager构成了YARN资源管理框架。他们是YARN启动后长期运行的守护进程,来提供核心服务。
ResourceManager
NodeManager
container
ApplicationMaster(简称AM)
YARN的角色 | MapReduce 1.x的角色 |
---|---|
ResourceManager、Application Master、Timeline Server | JobTracker |
NodeManager | TaskTracker |
Container | Slot |
是在系统中的所有应用程序之间仲裁资源的最终权威,即管理整个集群上的所有资源分配,内部含有一个Scheduler(资源调度器)
是每台机器的资源管理器,也就是单个节点的管理者,负责启动和监视容器(container)资源使用情况,并向ResourceManager及其 Scheduler报告使用情况
即集群上的可使用资源,包含cpu、内存、磁盘、网络等
实际上是框架的特定的库,每启动一个应用程序,都会启动一个AM,它的任务是与ResourceManager协商资源,并与NodeManager一起执行和监视任务
1.2. YARN的配置
YARN属于Hadoop的核心组件,不需要单独安装,只需要修改一些配置文件即可。
1.2.1. mapred-site.xml
[root@qianfeng01 hadoop-3.3.1]# vi /usr/local/hadoop-3.3.1/etc/hadoop/mapred-site.xml
<configuration>
<!-- 指定MapReduce作业执行时,使用YARN进行资源调度 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
1.2.2. yarn-site.xml
[root@qianfeng01 hadoop-3.3.1]# vim /usr/local/hadoop-3.3.1/etc/hadoop/yarn-site.xml
java
<configuration>
<!-- 设置ResourceManager -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>qianfeng01</value>
</property>
<!--配置yarn的shuffle服务-->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
1.2.3. hadoop-env.sh
[root@qianfeng01 hadoop-3.3.1]# vim /usr/local/hadoop-3.3.1/etc/hadoop/hadoop-env.sh
python
# 添加如下:
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
1.2.4. 分发到其他节点
[root@qianfeng01 hadoop-3.3.1]# scp -r /usr/local/hadoop-3.3.1/etc/hadoop/* qianfeng02:/usr/local/hadoop-3.3.1/etc/hadoop/
[root@qianfeng01 hadoop-3.3.1]# scp -r /usr/local/hadoop-3.3.1/etc/hadoop/* qianfeng03:/usr/local/hadoop-3.3.1/etc/hadoop/
1.2.5. YARN的服务启停
描述 | 命令 |
---|---|
开启YARN全部服务,在RM所在服务器上操作 | start-yarn.sh |
停止YARN全部服务,在RM所在服务器上操作 | stop-yarn.sh |
| 单点开启YARN相关进程,在对应所在服务器上操作 | yarn --daemon start resourcemanager yarn --daemon start nodemanager | | 单点停止YARN相关进程,在对应所在服务器上操作 | yarn --daemon stop resourcemanager yarn --daemon stop nodemanager |
当YARN的进程开启之后,我们可以在WebUI上查看到集群的资源信息、任务的运行状态等
服务名称 | web UI端口 | url | 备注 |
---|---|---|---|
NameNode | 9870 | http://qianfeng01:9870/ | 所有注意服务启动的主机名或者ip |
SecondaryNameNode | 50090 | http://qianfeng02:9868 | |
historyServer | 19888 | http://qianfeng01:19888 | 默认历史服务 |
DataNode | 50075 | http://qianfeng01:9864/ | |
ResouceManager | 8088 | http://qianfeng01:8088 | 默认8088 |
NodeManager | 8042 | http://qianfeng01:8042 | 默认8042 |