关闭 Hadoop 的核心原则是:先关闭 YARN(计算框架),再关闭 HDFS(存储系统)。

以下是详细步骤和命令,适用于大多数 Hadoop 发行版(如 Apache Hadoop, Cloudera CDH, Hortonworks HDP 等)。
核心关闭命令
Hadoop 的所有管理脚本都位于 $HADOOP_HOME/sbin/ 目录下。
关闭 YARN (资源管理器)
需要停止运行在 YARN 上的所有计算任务。
命令:

$HADOOP_HOME/sbin/stop-yarn.sh
作用:
- 停止 NodeManager(在每个 DataNode 上运行)。
- 停止 ResourceManager(在主节点上运行)。
- 之后,新的任务将无法提交,正在运行的任务也会被正常终止。
关闭 HDFS (分布式文件系统)
在 YARN 停止后,再关闭 HDFS。
命令:
$HADOOP_HOME/sbin/stop-dfs.sh
作用:

- 停止 NameNode(在主节点上运行)。
- 停止 DataNode(在每个从节点上运行)。
- 停止 SecondaryNameNode(通常在主节点上运行)。
完整的关闭流程(以集群为例)
假设你的 Hadoop 集群有一个主节点(master)和多个从节点(slave1, slave2, ...)。
第一步:在主节点上执行
登录到你的主节点(master)。
-
关闭 YARN
# 进入 Hadoop 安装目录的 sbin 文件夹 cd $HADOOP_HOME/sbin # 执行停止 YARN 的脚本 ./stop-yarn.sh
你会看到 ResourceManager 和所有 NodeManager 陆续停止。
-
关闭 HDFS
# 继续在 sbin 目录下执行 ./stop-dfs.sh
你会看到 NameNode 和所有 DataNode 陆续停止。
执行完以上两步后,你的 Hadoop 集群就已经完全关闭了。 通常情况下,你不需要手动去每个从节点上执行命令,因为 stop-yarn.sh 和 stop-dfs.sh 脚本会通过 SSH 自动连接到所有在配置文件中列出的从节点并执行相应的停止命令。
第二步:验证(可选)
你可以通过 jps 命令来验证进程是否已停止。
-
在主节点上:
jps
正常情况下,此时应该只看到
Jps进程,NameNode,ResourceManager,SecondaryNameNode等进程都应该已经消失。 -
在任意从节点上:
jps
正常情况下,此时应该只看到
Jps进程,DataNode和NodeManager进程都应该已经消失。
重要注意事项
-
关闭顺序至关重要:必须先停止 YARN,再停止 HDFS,如果先停止 HDFS,YARN 的任务将无法访问 HDFS 上的数据,可能导致任务异常或数据不一致。
-
紧急停止(不推荐): 如果你的集群已经卡死,无法通过正常命令关闭,可以考虑使用
kill命令强制终止进程。- 命令:
kill -9 <进程ID> - 警告:这是最后的手段,强制关闭可能导致内存中的数据未写回磁盘,造成 HDFS 文件系统元数据损坏,下次启动时可能需要漫长的
fsck检查甚至数据恢复。
- 命令:
-
单机/伪分布式模式: 如果你在单机或伪分布式模式下运行,关闭流程完全相同,只是在同一台机器上执行所有操作,执行完
stop-yarn.sh和stop-dfs.sh后,使用jps查看应该只剩下Jps进程。 -
配置文件: 这些脚本依赖于
core-site.xml,hdfs-site.xml,yarn-site.xml等配置文件来确定哪些节点是 NameNode, DataNode, ResourceManager, NodeManager 等,请确保你的配置文件是正确的。
记住这两个核心命令,按顺序执行即可安全地关闭 Hadoop 集群:
# 1. 停止计算框架 $HADOOP_HOME/sbin/stop-yarn.sh # 2. 停止存储系统 $HADOOP_HOME/sbin/stop-dfs.sh
