重启操作需要分集群角色和节点进行,并且必须遵循严格的顺序,否则可能会导致数据丢失或服务不可用。

核心原则:重启顺序
重启 Hadoop 集群,最安全、最标准的顺序是:
- 停止 YARN:先停止资源管理相关的服务。
- 停止 HDFS:再停止存储相关的服务。
- 重新启动 HDFS:先启动存储服务。
- 重新启动 YARN:最后启动资源管理服务。
为什么是这个顺序? 因为 HDFS 是 YARN 运行的基础,YARN 的 NodeManager 会在 DataNode 上运行,而 MapReduce 等计算任务会读写 HDFS 上的数据,如果先停止 HDFS,YARN 的任务会失败;如果先启动 YARN,它可能会试图与尚未启动的 HDFS 交互,导致问题。
HDFS 重启命令
HDFS 的核心进程是 NameNode 和 DataNode,重启 HDFS 实际上是重启这些进程。
在 Hadoop 集群的所有节点上执行
我们使用 Hadoop 提供的脚本,这些脚本会通过 SSH 自动在所有配置好的节点上执行相应命令。

(1) 停止 HDFS
使用 stop-dfs.sh 脚本,它会停止 NameNode、DataNode 和 SecondaryNameNode。
# 进入 Hadoop 安装目录的 sbin 目录下 cd /path/to/hadoop-3.x.x/sbin/ # 执行停止命令 ./stop-dfs.sh
效果:
- 在 NameNode 节点上停止
NameNode进程。 - 在所有 DataNode 节点上停止
DataNode进程。 - 在 SecondaryNameNode 节点上停止
SecondaryNameNode进程。
(2) 启动 HDFS
使用 start-dfs.sh 脚本。
# 进入 Hadoop 安装目录的 sbin 目录下 cd /path/to/hadoop-3.x.x/sbin/ # 执行启动命令 ./start-dfs.sh
效果:

- 在 NameNode 节点上启动
NameNode进程。 - 在所有 DataNode 节点上启动
DataNode进程。 - 在 SecondaryNameNode 节点上启动
SecondaryNameNode进程。
YARN 重启命令
YARN 的核心进程是 ResourceManager 和 NodeManager。
在 Hadoop 集群的所有节点上执行
(1) 停止 YARN
使用 stop-yarn.sh 脚本。
# 进入 Hadoop 安装目录的 sbin 目录下 cd /path/to/hadoop-3.x.x/sbin/ # 执行停止命令 ./stop-yarn.sh
效果:
- 在 ResourceManager 节点上停止
ResourceManager进程。 - 在所有 NodeManager 节点上停止
NodeManager进程。
(2) 启动 YARN
使用 start-yarn.sh 脚本。
# 进入 Hadoop 安装目录的 sbin 目录下 cd /path/to/hadoop-3.x.x/sbin/ # 执行启动命令 ./start-yarn.sh
效果:
- 在 ResourceManager 节点上启动
ResourceManager进程。 - 在所有 NodeManager 节点上启动
NodeManager进程。
完整的集群重启流程
这是在生产环境中进行完整重启的标准操作流程。
# ===== 第一步:停止所有服务 ===== # 1. 停止 YARN 服务 ./stop-yarn.sh # 2. 停止 HDFS 服务 ./stop-dfs.sh # ===== 第二步:重新启动所有服务 ===== # 3. 启动 HDFS 服务 ./start-dfs.sh # 4. 启动 YARN 服务 ./start-yarn.sh # ===== (可选) 第五步:验证服务状态 ===== # 5. 检查 HDFS 状态 ./hdfs dfsadmin -report # 6. 检查 YARN 状态 ./yarn node -list
重启单个节点或单个服务
有时候我们只需要重启某个节点上的某个服务,而不是整个集群。
重启单个节点上的所有 Hadoop 服务
假设你要重启 node01 这台机器。
# 在 node01 上执行 # 1. 停止该节点上的 Hadoop 进程 # 停止 DataNode 和 NodeManager ./hadoop-daemon.sh stop datanode ./yarn-daemon.sh stop nodemanager # 2. (可选) 如果该节点是 NameNode 或 ResourceManager # ./hadoop-daemon.sh stop namenode # ./yarn-daemon.sh stop resourcemanager # 3. 重启该节点上的 Hadoop 进程 # 启动 DataNode 和 NodeManager ./hadoop-daemon.sh start datanode ./yarn-daemon.sh start nodemanager # 4. (可选) 如果该节点是 NameNode 或 ResourceManager # ./hadoop-daemon.sh start namenode # ./yarn-daemon.sh start resourcemanager
重启单个服务(只重启 HDFS)
如果只是 HDFS 出现问题,可以只重启 HDFS。
# 停止 HDFS ./stop-dfs.sh # 启动 HDFS ./start-dfs.sh
在 YARN (MR2) 上重启失败的 Application
这和重启集群服务不同,指的是重启一个已经提交但运行失败或被杀死的特定任务。
# 查看所有应用 ./yarn application -list -appStates ALL # 假设你要重启的应用 ID是 application_1234567890012_0001 # 先杀死这个应用 ./yarn application -kill application_1234567890012_0001 # 然后重新提交你的应用程序jar包 # hadoop jar my-job.jar com.example.MyDriver input output
| 操作目标 | 命令 | 说明 |
|---|---|---|
| 完整集群重启 | ./stop-yarn.sh -> ./stop-dfs.sh -> ./start-dfs.sh -> ./start-yarn.sh |
标准且安全的顺序。 |
| 仅重启 HDFS | ./stop-dfs.sh -> ./start-dfs.sh |
当 HDFS 服务异常时使用。 |
| 仅重启 YARN | ./stop-yarn.sh -> ./start-yarn.sh |
当 YARN 服务异常时使用。 |
| 重启单个节点 | hadoop-daemon.sh / yarn-daemon.sh |
用于修复单个节点上的服务问题。 |
| 重启单个应用 | yarn application -kill <app_id> -> 重新提交 |
用于处理运行失败的任务。 |
重要提示:
- 执行这些命令前,确保你有足够的权限。
- 在生产环境执行前,最好在测试环境验证。
- 始终遵循 停止 YARN -> 停止 HDFS -> 启动 HDFS -> 启动 YARN 的顺序。
