升级Ubuntu下的Hadoop版本全流程指南
运行hadoop version命令,记录当前Hadoop的主版本号(如2.7.3、3.3.1)和次版本号,确认是否需要升级(如修复bug、新增功能)。
前往Apache Hadoop官网(hadoop.apache.org)下载目标版本的二进制压缩包(如hadoop-3.3.6.tar.gz),优先选择稳定版(GA版本)。
$HADOOP_HOME/etc/hadoop目录下的所有配置文件(如core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml)复制到安全目录(如/backup/hadoop_config)。hadoop fsck / -files -blocks -locations > dfs-backup.log命令备份HDFS元数据;若有重要数据,可通过hadoop distcp命令复制到其他存储系统(如HDFS副本或S3)。java -version验证;ssh localhost测试。根据集群模式执行对应命令:
$HADOOP_HOME/sbin/stop-all.sh停止所有服务(NameNode、DataNode、ResourceManager、NodeManager等);$HADOOP_HOME/sbin/stop-dfs.sh(停止HDFS服务)和$HADOOP_HOME/sbin/stop-yarn.sh(停止YARN服务)。若旧版本是通过解压方式安装的,直接删除旧版本目录(如rm -rf /usr/local/hadoop-2.7.3);若通过包管理器(如apt)安装,运行sudo apt remove hadoop卸载。
tar -xzvf hadoop-3.3.6.tar.gz -C /usr/local/将新版本解压到指定目录(如/usr/local);hadoop(mv /usr/local/hadoop-3.3.6 /usr/local/hadoop)。编辑~/.bashrc(或/etc/profile)文件,添加/修改以下变量:
export HADOOP_HOME=/usr/local/hadoop
export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64 # 根据实际JDK路径调整
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
运行source ~/.bashrc使配置生效,验证hadoop version是否显示新版本。
根据新版本的要求,修改$HADOOP_HOME/etc/hadoop目录下的配置文件:
hadoop-env.sh:调整JAVA_HOME路径(若与旧版本不同);core-site.xml:更新HDFS的默认文件系统地址(如fs.defaultFS从hdfs://old-namenode:9000改为hdfs://new-namenode:9000);hdfs-site.xml:若新版本修改了NameNode/DataNode的存储路径(如dfs.namenode.name.dir、dfs.datanode.data.dir),需同步更新;yarn-site.xml:调整ResourceManager/NodeManager的端口或资源分配参数(如yarn.nodemanager.resource.memory-mb)。运行$HADOOP_HOME/sbin/start-dfs.sh -upgrade命令,启动HDFS并自动执行文件系统升级(新版本会转换NameNode/DataNode的元数据格式)。
hadoop dfsadmin -upgradeProgress status查看升级状态(显示“Upgrading”表示进行中,“Rollback”表示可回滚,“Finalized”表示已完成);hadoop dfsadmin -upgradeProgress details查看详细进度(如元数据转换的文件数量)。jps命令,确认NameNode、DataNode、ResourceManager、NodeManager等守护进程正常运行;hadoop fs -ls /查看HDFS根目录,运行hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar wordcount /input /output执行示例任务,验证MapReduce功能是否正常。若升级后运行稳定(建议观察3-7天),运行hadoop dfsadmin -finalizeUpgrade命令删除旧版本的元数据备份(释放存储空间),此后无法回滚到旧版本。
若升级后出现数据损坏、服务异常等问题,可立即执行以下命令回滚到旧版本:
$HADOOP_HOME/sbin/stop-dfs.sh;$HADOOP_HOME/sbin/start-dfs.sh -rollback(恢复旧版本的元数据和数据);hadoop version确认回到旧版本,检查数据完整性。注意事项: