副队长大数据教程(7)--Hadoop 集群角色配置逻辑详解

文章目录

  • [1. 背景](#1. 背景)
  • [2. HDFS 相关角色配置(HDFS 主从)](#2. HDFS 相关角色配置(HDFS 主从))
    • [2.1 core-site.xml,决定 NameNode 在哪台机器](#2.1 core-site.xml,决定 NameNode 在哪台机器)
    • [2.2 hdfs-site.xml,决定 SecondaryNameNode 在哪台机器](#2.2 hdfs-site.xml,决定 SecondaryNameNode 在哪台机器)
    • [2.3 workers 文件,控制 DataNode](#2.3 workers 文件,控制 DataNode)
  • [3. YARN 相关角色配置(YARN 主从)](#3. YARN 相关角色配置(YARN 主从))
    • [3.1 yarn-site.xml,决定 ResourceManager 在哪台机器](#3.1 yarn-site.xml,决定 ResourceManager 在哪台机器)
    • [3.2 workers 文件,同时控制 NodeManager](#3.2 workers 文件,同时控制 NodeManager)
  • [4. mapred-site.xml](#4. mapred-site.xml)
  • [5. hadoop-env.sh](#5. hadoop-env.sh)
  • [6. 角色与配置汇总表](#6. 角色与配置汇总表)
  • [7. 启动脚本执行逻辑](#7. 启动脚本执行逻辑)
  • [8. 常见误区](#8. 常见误区)
  • [9. 角色验证标准](#9. 角色验证标准)
  • [10. 本篇小结](#10. 本篇小结)

1. 背景

看了上一篇的实操,大家想必有一个疑问,集群某个节点作为什么角色运行,到底是怎么设定的。

我们用一个实例,来解释下,如下规划:

shell 复制代码
node1:NameNode
node2:SecondaryNameNode(2NN)
node3:ResourceManager(RM)
node4:DataNode + NodeManager(DN+NM)

首先我们要知道,Hadoop 分为两大组件:HDFS(存储) + YARN(资源调度)

  • HDFS 角色:NameNode、SecondaryNameNode、DataNode
  • YARN 角色:ResourceManager、NodeManager

核心一句话:

NameNode、ResourceManager 是「主角色」,在 xml 配置里指定运行主机;DataNode、NodeManager 是「从角色」,由 workers 文件决定在哪些机器自动启动。

2. HDFS 相关角色配置(HDFS 主从)

2.1 core-site.xml,决定 NameNode 在哪台机器

配置属性:fs.defaultFS

复制代码
<property>
    <name>fs.defaultFS</name>
    <value>hdfs://node1:9000</value>
</property>

重点说明:

该配置声明整个 HDFS 集群 NameNode 地址为 node1:9000,所有节点读取这个配置,就能找到 NameNode,因此 node1 作为 NameNode 节点。

2.2 hdfs-site.xml,决定 SecondaryNameNode 在哪台机器

配置属性:dfs.namenode.secondary.http-address

复制代码
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>node2:50090</value>
</property>

重点说明:

代表 SecondaryNameNode 运行在 node2 主机,node2 承担 2NN 角色。

同文件中的 dfs.replication 用来设置文件副本数量,仅控制存储策略,不控制节点角色。

2.3 workers 文件,控制 DataNode

文件路径:$HADOOP_HOME/etc/hadoop/workers

文件内容:

复制代码
node4

重点说明:

写入 workers 中的主机,执行集群启动脚本时,会自动启动 DataNode。本例只填写 node4,仅 node4 会自动启动 DataNode;node1、node2、node3 不会自动拉起 DataNode。

HDFS 角色分配总结:

NameNode:core-site.xml 的 fs.defaultFS

SecondaryNameNode:hdfs-site.xml 的 dfs.namenode.secondary.http-address

DataNode:workers 文件内填写的主机列表

3. YARN 相关角色配置(YARN 主从)

3.1 yarn-site.xml,决定 ResourceManager 在哪台机器

配置属性:yarn.resourcemanager.hostname

复制代码
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node3</value>
</property>

重点说明:

声明 YARN 主节点 ResourceManager 部署在 node3,node3 作为 RM 节点。

3.2 workers 文件,同时控制 NodeManager

重点说明:

workers 文件里填写的主机,执行 start-yarn.sh 时,会自动在这些主机启动 NodeManager。这里 workers 写入 node4,node4 会自动启动 NodeManager。

YARN 角色分配总结:

ResourceManager:yarn-site.xml 的 yarn.resourcemanager.hostname

NodeManager:workers 文件内填写的主机列表

4. mapred-site.xml

复制代码
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>

重点说明:

该文件不控制节点角色,只告诉 MapReduce 任务,调度运行依托 YARN,和在哪台机器启动进程无关。

5. hadoop-env.sh

重点说明:

该文件不分配节点角色,仅用于环境配置。

用来配置 JAVA_HOME,root 用户启动集群时,可以声明各个守护进程的启动用户,不会决定节点运行什么角色。

💡 补充建议:这里可以加一句「JAVA_HOME 必须指向所有节点上实际安装的 JDK 路径,否则对应节点上的守护进程会启动失败」,帮助读者理解该配置的实际影响。

6. 角色与配置汇总表

表格

角色 部署节点 由哪个配置文件 + 属性控制
NameNode node1 core-site.xml → fs.defaultFS
SecondaryNameNode node2 hdfs-site.xml → dfs.namenode.secondary.http-address
DataNode node4 workers 文件(填写 node4)
ResourceManager node3 yarn-site.xml → yarn.resourcemanager.hostname
NodeManager node4 workers 文件(填写 node4)

7. 启动脚本执行逻辑

7.1 start-dfs.sh

  1. 读取 core-site.xml,ssh 远程到 node1,启动 NameNode
  2. 读取 hdfs-site.xml,ssh 远程到 node2,启动 SecondaryNameNode
  3. 读取 workers 文件,ssh 远程到 node4,启动 DataNode

7.2 start-yarn.sh

  1. 读取 yarn-site.xml,ssh 远程到 node3,启动 ResourceManager
  2. 读取 workers 文件,ssh 远程到 node4,启动 NodeManager

重点说明:

脚本执行前提:node1 可以免密 ssh 登录 node1/node2/node3/node4,脚本才能够远程登录其他节点拉起进程。

8. 常见误区

  1. ❌ 不是在 node2 本地单独修改配置,让 node2 变成 2NN;集群所有节点配置文件保持完全一致,全局统一指定角色主机。
  2. ❌ workers 文件同时控制 DataNode 和 NodeManager,文件中登记的机器,脚本启动时会同时启动 DN+NM。
  3. ❌ 没有写在 workers 中的机器,脚本不会自动启动 DN、NM。node1 不在 workers 列表,则不会自动生成 DataNode 进程。

9. 角色验证标准

集群启动完成后,登录各个节点执行 jps 命令查看进程:

node1:NameNode

node2:SecondaryNameNode

node3:ResourceManager

node4:DataNode、NodeManager

10. 本篇小结

本篇通过 4 节点集群案例,理清 Hadoop 一键启动脚本如何读取配置,自动分配各个节点角色。主角色 NameNode、RM 的部署主机写在 XML 配置中;从角色 DN、NM 由 workers 主机清单控制。理解这套逻辑,就可以自主规划多节点 Hadoop 集群的角色部署。

相关推荐
RD_daoyi1 小时前
外贸独立站从0到1:平台选择 + 建站流程 + 新手避坑
大数据·服务器·网络·人工智能·搜索引擎·职场和发展
2603_954708311 小时前
微能网协调控制箱突破传统微电网架构瓶颈
大数据·数据库·人工智能·架构·能源
蓝胖的四次元口袋1 小时前
RabbitMQ知识梳理(2)
分布式·rabbitmq
智圣新创011 小时前
教育数字化合规背景下 智圣新创高校一表通建设全国低内耗落地指引
大数据·人工智能
猴子15516812 小时前
长期追踪调研的样本留存是怎么实现的:跨波次对齐、催答调度与质控机制,附五家样本服务实测记录
大数据·经验分享
samLi06202 小时前
贵州贵安新区行政区划面数据(含经纬度)
大数据
YH_Analytics2 小时前
2026 洁净室环境在线监测系统行业排名与份额对比销量与份额解析
大数据·网络·人工智能
ha_lydms2 小时前
String Functions(字符串函数)
大数据·hadoop·阿里云·spark·数据处理·dataworks·maxcompute
对空六课3 小时前
两个统计平台数据不同:用同一时间窗和事件样本做差异定位
大数据·前端·网络·数据库