核心原则:先停后启
重启 Hadoop 的标准流程是:

- 停止 Hadoop 集群。
- 启动 Hadoop 集群。
集群整体重启(推荐)
这是最常用、最规范的方法,适用于管理整个 Hadoop 集群,你需要登录到主节点,也就是运行 NameNode 和 ResourceManager 的节点。
第 1 步:停止整个集群
在主节点上,执行 stop-all.sh 脚本,这个脚本会按照正确的顺序(先停止 YARN,再停止 HDFS)关闭集群中所有相关的 Hadoop 进程。
# 登录到 Hadoop 主节点 ssh hadoop-master # 进入 Hadoop 安装目录的 sbin 目录 cd /usr/local/hadoop/sbin # 执行停止脚本 ./stop-all.sh
执行后,你应该会看到类似以下的输出,表明各个组件正在停止:
This script is Deprecated. Instead use stop-dfs.sh and stop-yarn.sh
Stopping namenodes on [hadoop-master]
hadoop-master: stopping namenode
hadoop-master: stopping datanode
Stopping secondarynamenodes on [hadoop-master]
hadoop-master: stopping secondarynamenode
Stopping resourcemanager on [hadoop-master]
hadoop-master: stopping nodemanager
Stopping historyserver on [hadoop-master]
hadoop-master: stopping historyserver
第 2 步:启动整个集群
在主节点上,执行 start-all.sh 脚本,这个脚本会按照正确的顺序(先启动 HDFS,再启动 YARN)启动集群。

# 仍在 Hadoop 主节点的 sbin 目录下 ./start-all.sh
执行后,你会看到各个组件正在启动:
This script is Deprecated. Instead use start-dfs.sh and start-yarn.sh
Starting namenodes on [hadoop-master]
hadoop-master: starting namenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-namenode-hadoop-master.out
hadoop-master: starting datanode, logging to /usr/local/hadoop/logs/hadoop-hadoop-datanode-hadoop-master.out
Starting secondarynamenodes on [hadoop-master]
hadoop-master: starting secondarynamenode, logging to /usr/local/hadoop/logs/hadoop-hadoop-secondarynamenode-hadoop-master.out
Starting resourcemanager
hadoop-master: starting resourcemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-resourcemanager-hadoop-master.out
Starting nodemanagers on [hadoop-slave1, hadoop-slave2]
hadoop-slave1: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-nodemanager-hadoop-slave1.out
hadoop-slave2: starting nodemanager, logging to /usr/local/hadoop/logs/yarn-hadoop-nodemanager-hadoop-slave2.out
Starting historyserver
hadoop-master: starting historyserver, logging to /usr/local/hadoop/logs/mapred-hadoop-historyserver-hadoop-master.out
分别启动和停止(现代 Hadoop 推荐)
在新版本的 Hadoop 中,start-all.sh 和 stop-all.sh 被标记为已弃用,推荐的做法是分别管理 HDFS 和 YARN 组件,这样更清晰、更可控。
第 1 步:分别停止
# 1. 停止 HDFS 相关服务 ./stop-dfs.sh # 2. 停止 YARN 相关服务 ./stop-yarn.sh
第 2 步:分别启动
# 1. 启动 HDFS 相关服务 ./start-dfs.sh # 2. 启动 YARN 相关服务 ./start-yarn.sh
逐个节点重启(不推荐用于整体重启)
这种方法适用于重启单个故障节点,而不是整个集群,如果你想重启整个集群,这种方法效率极低且容易出错。
流程:

- 登录到从节点。
- 停止该节点上的 DataNode 和 NodeManager。
- 启动该节点上的 DataNode 和 NodeManager。
- 对集群中的每一个从节点重复以上步骤。
# 登录到从节点 ssh hadoop-slave1 # 停止 DataNode 和 NodeManager /usr/local/hadoop/sbin/hadoop-daemon.sh stop datanode /usr/local/hadoop/sbin/yarn-daemon.sh stop nodemanager # 启动 DataNode 和 NodeManager /usr/local/hadoop/sbin/hadoop-daemon.sh start datanode /usr/local/hadoop/sbin/yarn-daemon.sh start nodemanager
然后登录到 hadoop-slave2 重复操作。
验证重启是否成功
无论使用哪种方法,重启后都应该验证集群状态是否正常。
检查 Web UI
- HDFS 状态:
http://<hadoop-master-ip>:9870- 查看概览页面,确认 "Live Nodes" 和 "Total Nodes" 数量正确。
- 检查 "NameNode" 和 "DataNode" 状态是否为 "Live"。
- YARN 状态:
http://<hadoop-master-ip>:8088- 查看集群概览,确认 "Active Nodes" 数量正确。
- 检查 "NodeManager" 状态是否正常。
使用命令行检查
# 检查 HDFS 状态 hdfs dfsadmin -report # 检查 NameNode 是否处于安全模式 hdfs dfsadmin -safemode get # 如果输出 "Safe mode is OFF",说明已正常退出安全模式,可以开始读写数据。 # 检查 YARN 节点状态 yarn node -list
⚠️ 重要提醒
- 数据安全:
stop-all.sh会关闭所有服务,但不会删除 HDFS 上的数据,HDFS 的数据是持久化的,如果是在一个全新的、没有数据配置的集群上重启,它会进入安全模式并等待数据块报告。 - 生产环境:在生产环境中,重启集群通常是一个计划内的维护操作,请提前通知所有用户,并确保没有正在运行的重要作业。
- 配置文件:确保所有节点的
core-site.xml,hdfs-site.xml,yarn-site.xml等配置文件是一致的,否则可能导致集群启动失败或行为异常。 - 日志排查:如果启动失败,请查看各节点的日志文件,通常位于
/usr/local/hadoop/logs/目录下,根据错误信息进行排查。
