Linux下Hadoop版本升級詳細步驟及注意事項
hadoop version命令,明確當前Hadoop的主版本號(如3.3.0)和次版本號(如3.3.6),判斷是否需要跨主版本升級(如2.x→3.x)。cp -r $HADOOP_HOME/etc/hadoop /backup/hadoop_config_backup(保留core-site.xml、hdfs-site.xml、yarn-site.xml等自定義配置);hadoop fs -copyToLocal / $BACKUP_DIR/hdfs_data(可選,若數據量大可選擇增量備份);cp -r $HADOOP_HOME/logs /backup/yarn_logs(用于問題排查)。java -version(如Hadoop 3.3.6需Java 8或11);ssh localhost(需免密登錄);sbin目錄,依次執行:./stop-yarn.sh # 停止YARN服務
./stop-dfs.sh # 停止HDFS服務
使用jps命令確認所有守護進程(NameNode、DataNode、ResourceManager、NodeManager等)已停止。wget命令下載官方壓縮包(以Hadoop 3.3.6為例):wget https://dlcdn.apache.org/hadoop/common/hadoop-3.3.6/hadoop-3.3.6.tar.gz
校驗壓縮包完整性(如通過MD5或SHA256值)。/usr/local):tar -zxvf hadoop-3.3.6.tar.gz -C /usr/local/
備份舊版本(可選但推薦):mv /usr/local/hadoop /usr/local/hadoop_old
重命名新版本目錄:mv /usr/local/hadoop-3.3.6 /usr/local/hadoop
```。
~/.bashrc(或~/.bash_profile),更新HADOOP_HOME和PATH:export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
source ~/.bashrc,驗證環境變量:echo $HADOOP_HOME # 應輸出新版本路徑
hadoop version # 應顯示新版本號
```。
etc/hadoop目錄:cp -r /backup/hadoop_config_backup/* $HADOOP_HOME/etc/hadoop/
core-site.xml中的fs.defaultFS路徑是否與新版本兼容(如Hadoop 3.x默認端口從8020改為9000);hdfs-site.xml中的dfs.namenode.name.dir、dfs.datanode.data.dir路徑是否存在且權限正確(需為hadoop:hadoop);yarn-site.xml中的yarn.resourcemanager.hostname、yarn.nodemanager.aux-services等配置是否符合新版本要求。start-dfs.sh啟動HDFS服務,若為新版本首次啟動,需添加-upgrade參數觸發文件系統升級:$HADOOP_HOME/sbin/start-dfs.sh -upgrade
此命令會將HDFS的元數據(如NameNode的fsimage、edits文件)升級到新版本格式。hadoop dfsadmin -upgradeProgress status # 查看簡要狀態
hadoop dfsadmin -upgradeProgress details # 查看詳細步驟(如元數據轉換進度)
若升級卡住,可使用force參數強制繼續(需謹慎,可能導致數據不一致)。$HADOOP_HOME/sbin/start-yarn.sh
使用yarn application -list驗證YARN是否正常運行。hdfs dfs -ls /(查看根目錄是否存在);yarn node -list(查看節點是否注冊);jps(應存在NameNode、DataNode、ResourceManager、NodeManager等進程)。hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 10 100),驗證任務是否能正常執行并輸出結果。hadoop dfsadmin -finalizeUpgrade
執行后,rollback命令將失效,無法回退到舊版本。$HADOOP_HOME/sbin/stop-dfs.sh
$HADOOP_HOME/sbin/stop-yarn.sh
hadoop,恢復環境變量,重啟服務即可。注意事項:
dfs.replication的默認值,需顯式配置);