温馨提示×

Ubuntu HDFS版本升级流程是怎样的

小樊
44
2025-11-09 06:33:15
栏目: 智能运维

Ubuntu HDFS版本升级流程(以滚动升级为例,适用于Hadoop 2.x→3.x及以上版本)

一、升级前准备

  1. 数据与环境检查

    • 备份关键数据:对HDFS上的重要数据(如/user/data等目录)进行全量备份(可使用hadoop fs -copyToLocal或第三方存储工具);备份NameNode元数据目录(默认$HADOOP_HOME/data/namenode)和DataNode数据目录(默认$HADOOP_HOME/data/datanode)。
    • 检查兼容性:阅读新版本官方升级指南(如Apache Hadoop Release Notes),确认新版本与Ubuntu系统版本(如22.04/20.04)、Java版本(如OpenJDK 11/17)、依赖组件(如YARN、Hive、Spark)的兼容性。
    • 测试环境验证:在非生产环境的测试集群中完整模拟升级流程,确认新版本功能正常且无兼容性问题。
  2. 停止HDFS服务

    • 在所有节点(NameNode、Standby NameNode、DataNode)上停止HDFS服务:
      $HADOOP_HOME/sbin/stop-dfs.sh 
    • 使用jps命令确认NameNode、DataNode进程已完全停止。

二、执行滚动升级(HA集群推荐)

滚动升级通过逐步替换节点版本,实现集群无停机升级,适用于生产环境。

1. 准备滚动升级

  • Standby NameNode上执行以下命令,创建用于回滚的fsimage文件:
    hdfs dfsadmin -rollingUpgrade prepare 
  • 检查升级准备状态,直到返回Proceed with rolling upgrade(表示可继续升级):
    hdfs dfsadmin -rollingUpgrade query 

2. 启动滚动升级

  • Active NameNode上执行以下命令,正式启动滚动升级:
    hdfs dfsadmin -rollingUpgrade start 

3. 逐个升级DataNode

  • 登录每个DataNode节点,依次执行以下命令(每次处理1-2个节点,避免集群负载过高):
    • 关闭DataNode(触发升级模式):
      hdfs dfsadmin -shutdownDatanode <datanode_host>:<ipc_port> upgrade 
    • 等待DataNode进程完全停止(可通过jps$HADOOP_HOME/logs/datanode.log确认)。
    • 启动升级后的DataNode:
      $HADOOP_HOME/sbin/hadoop-daemon.sh start datanode 
    • 检查DataNode状态(应显示为新版本):
      hdfs dfsadmin -report 

4. 升级NameNode(若为HA集群)

  • 若集群为HA模式,需将Standby NameNode切换为Active,升级原Active NameNode:
    • 故障转移(将Standby切换为Active):
      hdfs haadmin -failover <standby_namenode> <active_namenode> 
    • 在原Active NameNode(现为Standby)上执行:
      hdfs dfsadmin -rollingUpgrade started 
    • 启动升级后的NameNode:
      $HADOOP_HOME/sbin/hadoop-daemon.sh start namenode 

5. 完成滚动升级

  • 当所有DataNode和NameNode均升级完成后,执行以下命令清理旧版本元数据(不可逆操作,执行后无法回滚):
    hdfs dfsadmin -rollingUpgrade finalize 

三、验证升级结果

  1. 检查集群状态

    • 使用hdfs dfsadmin -report查看NameNode、DataNode的数量及状态(应均为live)。
    • 访问NameNode Web界面(如http://<namenode_host>:9870),确认集群版本显示为新版本。
  2. 测试功能

    • 执行简单数据操作(如hadoop fs -put /local/file /hdfs/path上传文件,hadoop fs -get /hdfs/path /local/dir下载文件)。
    • 运行MapReduce测试任务(如hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples.jar wordcount /input /output),确认任务执行成功。

四、回滚计划(可选但必须准备)

若升级后出现元数据损坏、服务无法启动等问题,需立即执行回滚:

  1. 停止集群

    • 在所有节点上停止HDFS服务:
      $HADOOP_HOME/sbin/stop-dfs.sh 
  2. 回滚HDFS

    • 执行回滚命令,恢复到升级前的元数据状态:
      hdfs dfsadmin -rollingUpgrade rollback 
  3. 重启旧版本

    • 使用旧版本的start-dfs.sh脚本启动集群:
      $HADOOP_HOME/sbin/start-dfs.sh 
  4. 验证回滚

    • 确认集群状态恢复正常(hdfs dfsadmin -report显示所有节点live),数据完整性未受影响。

注意事项

  • 版本兼容性:新版本可能调整文件系统布局(如Hadoop 3.x默认使用Erasure Coding替代传统副本机制),需提前修改hdfs-site.xml配置(如dfs.replication改为dfs.erasurescoding.policy)。
  • 日志监控:升级过程中密切关注$HADOOP_HOME/logs下的NameNode、DataNode日志,及时处理ERRORWARN级别的异常。
  • 客户端配置:升级完成后,需将客户端节点的core-site.xmlhdfs-site.xml更新为新版本路径,确保客户端能正常访问集群。

0