06-Hadoop-YARN环境搭建

星期一, 4月 7, 2025 | 4分钟阅读

MyraZ
06-Hadoop-YARN环境搭建

关于Linux系统大数据环境搭建——06-Hadoop-YARN环境搭建。

06-Hadoop-YARN环境搭建

Hadoop版本:Hadoop3.3.4

Hadoop-YARN环境搭建

目标环境

image-20250306111915842

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/ 结果如下。

image-20250306112819659

image-20250306112837868

​ 访问:http://node01:8088 或者 http://node03:8088,会被自动转发到ResourceManager 的主节点。

image-20250306112917559

​ 访问:http://node01:19888/jobhistory 结果如下。

image-20250306112944196

​ 也可以使用jps命令查看各节点服务运行情况。

image-20250306113003827

关闭

​ 先关闭 Hadoop 和 JobHistory。

[root@node01 hadoop]# mapred --daemon stop historyserver
[root@node01 hadoop]# stop-all.sh

​ 再关闭 ZooKeeper(三台机器都需要执行)。

zkServer.sh stop  

​ 环境搭建成功后shutdown -h now关机拍摄快照。

© 2024 - 2025 雪中烛

 

在线工具资源网站

在线工具官网

ProcessOn:👉ProcessOn在线作图

腾讯文档:👉腾讯文档

FlowUs 息流:👉FlowUs 息流

Mermaid Live Editor:👉在线流程图和图表编辑器 - 美人鱼实时编辑器

ME2在线工具(加密工具):👉ME2在线工具-在线开发学习生活工具箱

Textln:👉Textln文本智能云平台-通用文本解析

MinerU:👉MinerU数据提取工具

Crontab:👉Cron Expression Examples - Crontab.guru

正则表达式测试网站:👉regex101: build, test, and debug regex

技术资源网站

技术资源官网

Spring:👉Spring官网

MyBatis中文网 :👉MyBatis 中文网

Redis中文网:👉Redis中文网

Zookeeper:👉Apache ZooKeeper官网

Raft算法:👉Raft Consensus Algorithm官网

Hadoop:👉Apache Hadoop官网

Hive:👉Apache Hive官网

Phoenix:👉Apache Phoenix官网

Bootstrap中文网:👉Bootstrap中文网

Element:👉组件 | Element

Layui :👉Layui - 极简模块化前端 UI 组件库(官方文档)

FreeMarker :👉FreeMarker 中文官方参考手册

ztree树插件: 👉zTree – jQuery 树插件官网

x File Storage:👉x File Storage官网