菜鸟科技网

如何正确关闭Hadoop集群?

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

如何正确关闭Hadoop集群?-图1
(图片来源网络,侵删)

以下是详细步骤和命令,适用于大多数 Hadoop 发行版(如 Apache Hadoop, Cloudera CDH, Hortonworks HDP 等)。


核心关闭命令

Hadoop 的所有管理脚本都位于 $HADOOP_HOME/sbin/ 目录下。

关闭 YARN (资源管理器)

需要停止运行在 YARN 上的所有计算任务。

命令:

如何正确关闭Hadoop集群?-图2
(图片来源网络,侵删)
$HADOOP_HOME/sbin/stop-yarn.sh

作用:

  • 停止 NodeManager(在每个 DataNode 上运行)。
  • 停止 ResourceManager(在主节点上运行)。
  • 之后,新的任务将无法提交,正在运行的任务也会被正常终止。

关闭 HDFS (分布式文件系统)

在 YARN 停止后,再关闭 HDFS。

命令:

$HADOOP_HOME/sbin/stop-dfs.sh

作用:

如何正确关闭Hadoop集群?-图3
(图片来源网络,侵删)
  • 停止 NameNode(在主节点上运行)。
  • 停止 DataNode(在每个从节点上运行)。
  • 停止 SecondaryNameNode(通常在主节点上运行)。

完整的关闭流程(以集群为例)

假设你的 Hadoop 集群有一个主节点(master)和多个从节点(slave1, slave2, ...)。

第一步:在主节点上执行

登录到你的主节点(master)。

  1. 关闭 YARN

    # 进入 Hadoop 安装目录的 sbin 文件夹
    cd $HADOOP_HOME/sbin
    # 执行停止 YARN 的脚本
    ./stop-yarn.sh

    你会看到 ResourceManager 和所有 NodeManager 陆续停止。

  2. 关闭 HDFS

    # 继续在 sbin 目录下执行
    ./stop-dfs.sh

    你会看到 NameNode 和所有 DataNode 陆续停止。

执行完以上两步后,你的 Hadoop 集群就已经完全关闭了。 通常情况下,你不需要手动去每个从节点上执行命令,因为 stop-yarn.shstop-dfs.sh 脚本会通过 SSH 自动连接到所有在配置文件中列出的从节点并执行相应的停止命令。

第二步:验证(可选)

你可以通过 jps 命令来验证进程是否已停止。

  • 在主节点上

    jps

    正常情况下,此时应该只看到 Jps 进程,NameNode, ResourceManager, SecondaryNameNode 等进程都应该已经消失。

  • 在任意从节点上

    jps

    正常情况下,此时应该只看到 Jps 进程,DataNodeNodeManager 进程都应该已经消失。


重要注意事项

  1. 关闭顺序至关重要:必须先停止 YARN,再停止 HDFS,如果先停止 HDFS,YARN 的任务将无法访问 HDFS 上的数据,可能导致任务异常或数据不一致。

  2. 紧急停止(不推荐): 如果你的集群已经卡死,无法通过正常命令关闭,可以考虑使用 kill 命令强制终止进程。

    • 命令kill -9 <进程ID>
    • 警告:这是最后的手段,强制关闭可能导致内存中的数据未写回磁盘,造成 HDFS 文件系统元数据损坏,下次启动时可能需要漫长的 fsck 检查甚至数据恢复。
  3. 单机/伪分布式模式: 如果你在单机或伪分布式模式下运行,关闭流程完全相同,只是在同一台机器上执行所有操作,执行完 stop-yarn.shstop-dfs.sh 后,使用 jps 查看应该只剩下 Jps 进程。

  4. 配置文件: 这些脚本依赖于 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
分享:
扫描分享到社交APP
上一篇
下一篇