Apache Hadoop進行版本公升級的操作

2021-08-19 13:51:16 字數 3616 閱讀 6762

3月份,公司最大的集群要從hadoop2.4公升級到hadoop2.8 ,是乙個大版本跨度的公升級操作,所以前期對hadoop2.8版本進行了很多功能和效能方面的驗證和測試。同時也擬定了幾個公升級和回滾方案。由於集群的離線任務一般在夜間,所以夜間的hdfs壓力很大,rpc延遲很高,導致集群效能下降,最終公升級是在這種集群快要支撐不住的情況下進行的。當然,公升級過程還算比較平穩,沒有出現什麼驚心動魄的事情。

我們預定的方案是將集群先公升級到過渡版本,再公升級到最終版本。最終版本不可回滾到原先的2.4版本,但過渡版本可以很容易的回滾。

hadoop-2.8.2.1是過渡版本,此版本支援降級,但是2.8.2的新功能不能使用。使用此版本公升級的時候,不需要執行hdfs rollingupgrade相關的命令;但是需要設定引數

dfs.namenode.duringrollingupgrade.enable=true
hadoop-2.8.2.2是最終版本,該版本不支援降級,但是要使用2.8.2的新功能,需要使用hdfs rollingupgrade相關的命令進行公升級。(我們這次只公升級hdfs元件,不公升級yarn元件,我們兩個基礎元件是分開使用者起的服務,所以對yarn沒有影響)

這個主要分三步

公升級standby namenode到 2.8.2.1版本

驗證standby節點的功能是否正常,正常的話就手動做failover,公升級後的standby變成active,以2.8.2.1對外提供服務

將現在的standby節點(原來的active)公升級到2.8.2.1版本,並且全面驗證集群的功能和效能。

下面就大概說一下操作步驟

首先將軟體包準備好,放到相應目錄下

再將原來2.4版本的配置檔案全部拷貝到新版本的目錄下

rm -r ~/software/hadoop-2.8.2.1/etc/hadoop && scp -r ~/software/hadoop/etc/hadoop ~/software/hadoop-2.8.2.1/etc/
修改hadoop2.8.2.1 的配置檔案

在hdfs-site.xml增加配置

dfs.namenode.duringrollingupgrade.enable

true

檢查namenode ha的狀態

hdfs haadmin -getservicestate nn1

hdfs haadmin -getservicestate nn2

hadoop-daemon.sh stop zkfc

hadoop-daemon.sh stop namenode

cd ~/software && rm hadoop && ln -s hadoop-2.8.2.1 hadoop

檢查是否軟鏈正常

ls -trl

hadoop-daemon.sh start namenode

hadoop-daemon.sh start zkfc

正常啟動之後,做相關檢查

檢查項1、hdfs haadmin -getservicestate nn2 是否為standby

2、檢查webui  startupprogress 等待safe mode 退出

3、standby功能進行全面驗證(1-2天)

hdfs haadmin -failover nn1 nn2

檢查項1、2.8.2.1的active節點功能進行全面驗證(1-2天)

檢查狀態

hdfs haadmin -getservicestate nn1

hdfs haadmin -getservicestate nn2

在確定狀態切換之後,才可執行公升級操作

hadoop-daemon.sh stop zkfc

hadoop-daemon.sh stop namenode

cd ~/software && rm hadoop && ln -s hadoop-2.8.2.1 hadoop

檢查是否軟鏈正常

ls -trl

hadoop-daemon.sh start namenode

hadoop-daemon.sh start zkfc

檢查項1、hdfs haadmin -getservicestate nn1 是否為standby

2、檢查ui 等待safe mode 退出

3、standby功能進行全面驗證(1-2天)

以上過程全部完成,並且驗證通過後,過渡版本就算公升級完成

然後把2.8.2.1中的配置檔案拷貝過去

rm -r ~/software/hadoop-2.8.2.2/etc/hadoop && scp -r ~/software/hadoop/etc/hadoop ~/software/hadoop-2.8.2.2/etc/

修改hdfs-site.xml 相關引數配置

因為需要採用hdfs rollingupgrade相關的命令,所以將這個引數設定為false

dfs.namenode.duringrollingupgrade.enable

false

檢查兩個namenodeha狀態

hdfs haadmin -getservicestate nn1

hdfs haadmin -getservicestate nn2

執行命令 hdfs dfsadmin -rollingupgrade prepare

進入目錄 cd ~/hadoop/namenode/current(namenode元資料檔案所在目錄即fsimage和editlog的目錄)

等待兩分鐘,檢視是否目錄中有 fsimage_rollback_***x.md5 檔案生成 

確認檔案生成之後,執行命令 hdfs dfsadmin -rollingupgrade query 檢視公升級狀態

手動備份 fsimage

mkdir -p /data01/hdfs/backup/namenode

cp -r ~/hadoop/namenode/current /data01/hdfs/backup/namenode (注意提前計算空間,不要備份的時候空間不夠

停止程序,改軟鏈

hadoop-daemon.sh stop zkfc

hadoop-daemon.sh stop namenode

cd ~/software && rm hadoop && ln -s hadoop-2.8.2.2 hadoop

因為最終版本的layoutversion發生變化,所以必須需要此命令來公升級namenode

hadoop-daemon.sh start namenode -rollingupgrade started

hadoop-daemon.sh start zkfc

檢查1、hdfs haadmin -getservicestate nn2 是否為standby

2、檢查webui 等待safe mode 退出,等待半小時後沒有問題,就繼續操作。

使用 Apache Hadoop 處理日誌

這篇文章來自developerworks。內容提要 日誌是任何計算系統中乙個必不可少的部分,支援從審計到錯誤管理等功能。隨著日誌的發展和日誌 數量的不斷增加 比如在雲環境中 有必要提供乙個可 擴充套件的系統來高效處理日誌。這篇實踐將 如何在典型 linux 系統上使用 apache hadoop 來...

Apache Hadoop與CDH HDP的比較

不收費的hadoop版本主要有三個 均是國外廠商 分別是 apache 最原始的版本,所有發行版均基於這個版本進行改進 cloudera版本 cloudera s distribution including apache hadoop,簡稱cdh hortonworks版本 hortonworks...

Apache Hadoop的重要組成

狹義的hadoop 指的是乙個框架,hadoop是由三部分組成 hdfs 分布式檔案系統 儲存 mapreduce 分布式離線計算框架 計算 yarn 資源排程框架 廣義的hadoop 廣義hadoop是不僅僅包含hadoop框架,除了hadoop框架之外還有一些輔助框 架。flume 日誌資料採集...