在 Linux 上停止 HDFS,通常取决于你是单独安装的 Hadoop 还是**通过发行版(如 CDH / HDP / Ambari)**部署的。下面按常见情况说明。
如果你是通过 Hadoop 官方发行版 部署的 HDFS:
$HADOOP_HOME/sbin/stop-dfs.sh
说明:
$HADOOP_HOME 已正确配置$HADOOP_HOME/sbin/stop-yarn.sh
或者一次性停止 HDFS + YARN:
$HADOOP_HOME/sbin/stop-all.sh
⚠️ stop-all.sh 已不推荐,但很多老环境仍在使用。
$HADOOP_HOME/sbin/hadoop-daemon.sh stop namenode
$HADOOP_HOME/sbin/hadoop-daemon.sh stop datanode
$HADOOP_HOME/sbin/hadoop-daemon.sh stop secondarynamenode
适合只想停某一个节点的情况
某些 Hadoop 发行版或自定义部署会使用 systemd:
sudo systemctl stop hadoop-namenode
sudo systemctl stop hadoop-datanode
或:
sudo systemctl stop hdfs
具体服务名取决于部署方式。
如果你使用的是 Cloudera CDH:
Cloudera Manager → 集群 → HDFS → 操作 → 停止
sudo systemctl stop cloudera-scm-agent
(不建议直接 kill HDFS 进程)
sudo ambari-server stop
sudo ambari-agent stop
或在 Ambari Web UI 中停止 HDFS 服务。
如果脚本失效,可查找进程并 kill:
jps
然后:
kill -9 <pid>
⚠️ 可能导致 元数据损坏、块丢失
jps
正常停止后应看不到:
JAVA_HOME 未设置export JAVA_HOME=/usr/lib/jvm/java-8-openjdk
sudo -u hdfs $HADOOP_HOME/sbin/stop-dfs.sh
如果你愿意,可以告诉我:
我可以给你更精确的停止命令。