温馨提示×

Ubuntu HDFS配置更新后如何重启

小樊
37
2025-11-23 04:47:47
栏目: 智能运维

Ubuntu 下 HDFS 配置更新后的重启指南

一、前置检查与准备

  • 确认修改的配置文件已同步到所有节点:通常为 $HADOOP_HOME/etc/hadoop/core-site.xml$HADOOP_HOME/etc/hadoop/hdfs-site.xml。如修改了 dfs.namenode.name.dirdfs.datanode.data.dir 等目录,请确保新目录已存在且 HDFS 运行用户具备读写权限。
  • 同步配置后,建议先在单个节点验证,再滚动重启,降低风险。
  • 准备好回滚方案(保留旧配置与数据目录的备份),并安排维护窗口。

二、标准重启流程

  • 单节点或伪分布式(推荐顺序)
    1. 进入 Hadoop 目录:cd $HADOOP_HOME
    2. 可选进入安全模式(避免重启期间产生大量 editlog):hdfs dfsadmin -safemode enter
    3. 停止 HDFS:./sbin/stop-dfs.sh
    4. 启动 HDFS:./sbin/start-dfs.sh
    5. 退出安全模式:hdfs dfsadmin -safemode leave
    6. 验证:hdfs dfsadmin -report 与 jps 查看 NameNode/DataNode 状态
  • 多节点滚动重启(减少对业务影响)
    • 逐台重启 DataNode:在每个 DataNode 执行
      ./sbin/hadoop-daemon.sh stop datanode
      ./sbin/hadoop-daemon.sh start datanode
      完成后用 hdfs dfsadmin -report 确认 Live datanodes 数量与容量恢复正常。
    • 重启 NameNode(变更涉及 NameNode 关键参数时)
      在 NameNode 执行:
      ./sbin/hadoop-daemon.sh stop namenode
      ./sbin/hadoop-daemon.sh start namenode
      启动后观察日志与 hdfs dfsadmin -report,必要时再离开安全模式。

三、涉及元数据目录或存储路径变更

  • 若修改了 dfs.namenode.name.dir(NameNode 元数据目录)或 dfs.datanode.data.dir(DataNode 数据目录),请按以下要点操作:
    • 确保新目录已创建并对 HDFS 用户可写。
    • 首次切换到新目录通常需要对 NameNode 执行格式化:hdfs namenode -format(仅在全新目录或明确需要重建元数据时使用,操作前务必确认备份与影响)。
    • 若是新增目录而非替换,保持原有目录可用,待新目录数据同步稳定后再逐步切换与清理旧数据。
    • 重启后通过 hdfs dfsadmin -report 与日志检查各目录是否正常加载。

四、HA 与常见问题处理

  • 高可用集群(HA)
    • 使用 ZKFC 管理的 NameNode 不建议直接 kill/start,推荐通过 hdfs haadmin 进行状态切换与重启:
      • 查看状态:hdfs haadmin -getServiceState nn1
      • 切换主备:hdfs haadmin -failover --forcefence --forceactive nn1 nn2
      • 单独重启某台 NameNode 后,确认 ZKFC 正常、状态恢复再切换流量。
  • 安全模式无法自动退出
    • 检查条件:副本满足率阈值 dfs.namenode.safemode.threshold-pct(默认 0.999f)、存活 DataNode 数量 dfs.namenode.safemode.min.datanodes、稳定时长 dfs.namenode.safemode.extension(默认 30000 ms)。
    • 排障后手动退出:hdfs dfsadmin -safemode leave。
  • 快速健康检查
    • 集群概览:hdfs dfsadmin -report
    • 文件系统健康:hdfs fsck / -files -blocks -locations
    • 进程存活:jps | grep -E “NameNode|DataNode|JournalNode|DFSZKFailoverController”

0