06-Hadoop-YARN环境搭建
星期一, 4月 7, 2025 | 4分钟阅读

关于Linux系统大数据环境搭建——06-Hadoop-YARN环境搭建。
06-Hadoop-YARN环境搭建
Hadoop版本:Hadoop3.3.4
Hadoop-YARN环境搭建
目标环境
YARN 环境的搭建基于前面的 HA 环境。
修改配置文件
修改环境配置文件 hadoop-env.sh
:
[root@node01 ~]# cd /opt/yjx/hadoop-3.3.4/etc/hadoop/
[root@node01 hadoop]# vim hadoop-env.sh
在文件末尾添加以下内容:
export JAVA_HOME=/usr/java/jdk1.8.0_351-amd64
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_ZKFC_USER=root
export HDFS_JOURNALNODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
修改 Map 配置文件 mapred-site.xml
:
[root@node01 hadoop]# vim mapred-site.xml
在 configuration
节点中添加以下内容:
<!-- 设置执行 MapReduce 任务的运行时框架为 YARN -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 设置 MapReduce JobHistory 服务器的地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>node01:10020</value>
</property>
<!-- 设置 MapReduce JobHistory 服务器的 Web 地址 -->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>node01:19888</value>
</property>
<!-- 设置已经运行完的 Hadoop 作业记录的存放路径(HDFS 文件系统中的目录),默认是
${yarn.app.mapreduce.am.staging-dir}/history/done -->
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>/history/done</value>
</property>
<!-- 设置正在运行中的 Hadoop 作业记录的存放路径(HDFS 文件系统中的目录),默认是
${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate -->
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>/history/done_intermediate</value>
</property>
<!-- 设置需要加载的 jar 包和环境配置 -->
<property>
<name>mapreduce.application.classpath</name>
<value>
/opt/yjx/hadoop-3.3.4/etc/hadoop,
/opt/yjx/hadoop-3.3.4/share/hadoop/common/*,
/opt/yjx/hadoop-3.3.4/share/hadoop/common/lib/*,
/opt/yjx/hadoop-3.3.4/share/hadoop/hdfs/*,
/opt/yjx/hadoop-3.3.4/share/hadoop/hdfs/lib/*,
/opt/yjx/hadoop-3.3.4/share/hadoop/mapreduce/*,
/opt/yjx/hadoop-3.3.4/share/hadoop/yarn/*,
/opt/yjx/hadoop-3.3.4/share/hadoop/yarn/lib/*
</value>
</property>
修改 YARN 配置文件 yarn-site.xml
:
[root@node01 hadoop]# vim yarn-site.xml
在 configuration
节点中添加以下内容:
<!-- 提交 MapReduce 作业的 staging 目录(HDFS 文件系统中的目录),默认是 /tmp/hadoop-yarn/staging -->
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>
<!-- 设置开启 ResourceManager 高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 设置 ResourceManager 的集群 ID -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yarn-yjx</value>
</property>
<!-- 设置 ResourceManager 节点的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 设置 ResourceManager 服务器的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>node01</value>
</property>
<!-- 设置 ResourceManager 服务器的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>node03</value>
</property>
<!-- 设置 ResourceManager 服务器的 Web 地址 -->
<property>
<name>yarn.resourcemanager.webapp.address.rm1</name>
<value>node01:8088</value>
</property>
<!-- 设置 ResourceManager 服务器的 Web 地址 -->
<property>
<name>yarn.resourcemanager.webapp.address.rm2</name>
<value>node03:8088</value>
</property>
<!-- 设置 YARN 的 ZK 集群地址,以逗号分隔 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>node01:2181,node02:2181,node03:2181</value>
</property>
<!-- 定义用户自定义服务或者系统服务,以逗号分隔,服务名称只能包含 A-za-z0-9,不能以数字开头,例如:mapreduce_shuffle,spark_shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- MapReduce 是在各个机器上运行的,在运行过程中产生的日志存在于不同的机器上,为了能够统一查看各个机器的运行日志,将日志集中存放在 HDFS 上,这个过程就是日志聚合 -->
<!-- 设置开启日志聚合,日志聚合会收集每个容器的日志,并在应用程序完成后将这些日志移动到文件系统,例如 HDFS -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置聚合日志的保留时间 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>640800</value>
</property>
<!-- 设置是否启用自动恢复,如果为 true 则必须指yarn.resourcemanager.store.class -->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!-- 设置 ResourceManager 的状态信息存储在 ZooKeeper 集群 -->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
<!-- 设置是否对容器强制执行物理内存限制 -->
<!-- 是否启动一个线程检查每个任务正在使用的物理内存量,如果任务超出分配值,则将其直接杀掉,默认为 true -->
<property>
<name>yarn.nodemanager.pmem-check-enabled</name>
<value>false</value>
</property>
<!-- 设置是否对容器强制执行虚拟内存限制 -->
<!-- 是否启动一个线程检查每个任务正在使用的虚拟内存量,如果任务超出分配值,则将其直接杀掉,默认为 true -->
<property>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
<!-- 设置容器的虚拟内存限制,虚拟内存与物理内存之间的比率。作用:在物理内存不够用的情况下,如果占用了大量虚拟内存并且超过了一定阈值,那么就认为当前集群的性能比较差 -->
<property>
<name>yarn.nodemanager.vmem-pmem-ratio</name>
<value>2.1</value>
</property>
<!-- 配置 JobHistory -->
<property>
<name>yarn.log.server.url</name>
<value>http://node01:19888/jobhistory/logs</value>
</property>
提示:如果
yarn.nodemanager.aux-services
选项配置为spark_shuffle
,需要拷贝$SPARK_HOME/yarn/spark-x.y.z-yarn-shuffle.jar
到$HADOOP_HOME/share/hadoop/yarn/lib
目录。
拷贝至其他节点
将 node01 已配置好的 YARN 拷贝至 node02 和 node03。
[root@node01 hadoop]# pwd
/opt/yjx/hadoop-3.3.4/etc/hadoop
[root@node01 hadoop]# scp mapred-site.xml yarn-site.xml root@node02:`pwd`
[root@node01 hadoop]# scp mapred-site.xml yarn-site.xml root@node03:`pwd`
# 或者使用分发脚本
[root@node01 hadoop]# yjxrsync mapred-site.xml yarn-site.xml
启动
首先启动 ZooKeeper(三台机器都需要执行)。
zkServer.sh start
zkServer.sh status
启动HDFS。
[root@node01 hadoop]# start-dfs.sh
启动YARN。
[root@node01 hadoop]# start-yarn.sh
启动JobHistory。
[root@node01 hadoop]# mapred --daemon start historyserver
后期只需要先启动 ZooKeeper 然后启动 Hadoop(start-all.sh)再启动 JobHistory 即可。
访问
访问: http://node01:9870/ 和 http://node02:9870/ 结果如下。
访问:http://node01:8088 或者 http://node03:8088,会被自动转发到ResourceManager 的主节点。
访问:http://node01:19888/jobhistory 结果如下。
也可以使用jps
命令查看各节点服务运行情况。
关闭
先关闭 Hadoop 和 JobHistory。
[root@node01 hadoop]# mapred --daemon stop historyserver
[root@node01 hadoop]# stop-all.sh
再关闭 ZooKeeper(三台机器都需要执行)。
zkServer.sh stop
环境搭建成功后shutdown -h now
关机拍摄快照。