最核心和常用的命令是 stop-dfs.sh 和 stop-yarn.sh。

核心命令(推荐)
在 Hadoop 2.x 及更高版本中,推荐使用以下两个独立的脚本来分别停止 HDFS 和 YARN 服务。
停止 HDFS (Hadoop Distributed File System)
这个命令会停止 HDFS 相关的所有守护进程,包括:
NameNodeDataNodeSecondaryNameNodeZKFC(如果启用了 HA)JournalNode(如果启用了 HA)
命令:
stop-dfs.sh
位置:
通常位于 $HADOOP_HOME/sbin/ 目录下。

停止 YARN (Yet Another Resource Negotiator)
这个命令会停止 YARN 相关的所有守护进程,包括:
ResourceManagerNodeManager
命令:
stop-yarn.sh
位置:
通常位于 $HADOOP_HOME/sbin/ 目录下。
组合命令
为了方便,你也可以使用一个组合命令来同时停止 HDFS 和 YARN。

命令:
# 停止所有 Hadoop 服务 stop-all.sh
位置:
通常也位于 $HADOOP_HOME/sbin/ 目录下。
注意:
stop-all.sh是一个历史遗留脚本,它内部会依次调用stop-dfs.sh和stop-yarn.sh。- 强烈推荐使用
stop-dfs.sh和stop-yarn.sh分别控制,因为这样更清晰,可以避免误操作,你只想停止 YARN 任务,而保留 HDFS 文件系统,这时单独使用stop-yarn.sh就非常方便。 stop-all.sh在一些新版本的 Hadoop 发行版中可能已被移除或标记为废弃。
在不同模式下的使用
伪分布式模式
在伪分布式模式下,所有守护进程都在你的单台机器上以不同的 Java 进程运行,上述命令同样适用,它们会停止这台机器上的所有相关进程。
操作示例:
# 进入 Hadoop 的 sbin 目录 cd $HADOOP_HOME/sbin # 停止 HDFS ./stop-dfs.sh # 停止 YARN ./stop-yarn.sh
执行后,你可以使用 jps 命令来检查,会发现所有 Hadoop 相关的进程(NameNode, DataNode, ResourceManager, NodeManager 等)都已经消失了。
完全分布式模式
在完全分布式模式下,Hadoop 集群部署在多台机器上,你会有一台主节点(Master,也叫 NameNode/ResourceManager 所在的节点)和若干台从节点(Slave/Worker)。
操作步骤:
- 在主节点上执行停止命令,这些脚本会通过 SSH 连接到集群中的所有从节点,并远程执行停止命令。
- 无需在从节点上手动执行任何命令。
操作示例 (在主节点上):
# 假设 HADOOP_HOME 已设置环境变量 # 停止 HDFS stop-dfs.sh # 停止 YARN stop-yarn.sh
脚本会自动处理集群的关闭。
总结与最佳实践
| 命令 | 功能 | 推荐场景 |
|---|---|---|
stop-dfs.sh |
停止 HDFS 相关服务 (NameNode, DataNode 等) | 推荐,当需要单独管理 HDFS 时使用。 |
stop-yarn.sh |
停止 YARN 相关服务 (ResourceManager, NodeManager 等) | 推荐,当需要单独管理 YARN 计算资源时使用。 |
stop-all.sh |
同时停止 HDFS 和 YARN 所有服务 | 旧脚本,不推荐,仅在需要快速关闭整个集群且不关心细节时使用。 |
最佳实践:
- 分别停止:养成使用
stop-dfs.sh和stop-yarn.sh的习惯,使服务管理更精确。 - 检查进程:执行停止命令后,使用
jps命令验证所有相关进程是否已成功终止。 - 查看日志:如果停止失败,可以查看各守护进程的日志文件(位于
$HADOOP_HOME/logs/目录)来排查问题。 - 使用集群管理工具:在生产环境中,强烈建议使用 Ambari、Cloudera Manager (CM) 等集群管理工具来启停服务,它们能提供更强大的监控、告警和自动化管理能力。
