本期來分享一個cdh企業運維實戰案例
背景
為适應公司業務發展需求,提高相關大資料元件版本,解決開發中的一些技術問題和代碼優化,需要将現有叢集CDH版本由5.x版本更新為6.3.x版本,也是為了适配如Flink、Doris等一些計算引擎。由于生産遷移風險巨大,我們現在測試叢集進行驗證。
遷移前的準備工作還是非常重要且細緻的,要考慮到各個細節的部分的,大緻流程一般如下:
1.Cloudera官網調研遷移可行性,包括作業系統,mysql,JDK版本等細節内容确認是否影響更新;
2.Cloudera官網已經給出非常詳細的更新方案及復原步驟,一定要多注意;
3.CM版本先更新,備份核心庫表資料;
4.CDH版本再更新,備份各種元件核心庫表如hive中繼資料庫等。
5.做好更新失敗復原的方案。
# 官網:https://docs.cloudera.com/documentation/enterprise/upgrade/topics/ug_cm_upgrade_backup.html
1.Cloudera Manager更新
1.1 備份工作
1.1.1 備份Cloudera Manager Agent
# 檢視CM庫詳細資訊
cat /etc/cloudera-scm-server/db.properties
# 所有agent主機執行備份指令
export CM_BACKUP_DIR="`date +%F`-CM5.16"
echo $CM_BACKUP_DIR
mkdir -p $CM_BACKUP_DIR
# 開始打包cm-agent和yum源包
tar -cf $CM_BACKUP_DIR/cloudera-scm-agent.tar --exclude=*.sock /etc/cloudera-scm-agent /etc/default/cloudera-scm-agent /var/run/cloudera-scm-agent /var/lib/cloudera-scm-agent
tar -cf $CM_BACKUP_DIR/repository.tar /etc/yum.repos.d
#批量執行可以用ansible
ansible -i host cloudera_test -m shell -a "export CM_BACKUP_DIR="`date +%F`-CM5.16""
1.1.2 備份Cloudera Manager Service
# Service Monitor執行
cp -rp /var/lib/cloudera-service-monitor /var/lib/cloudera-service-monitor-`date +%F`-CM5.16
# Host Monitor 執行
cp -rp /var/lib/cloudera-host-monitor /var/lib/cloudera-host-monitor-`date +%F`-CM5.16
# Event Server 執行
cp -rp /var/lib/cloudera-scm-eventserver /var/lib/cloudera-scm-eventserver-`date +%F`-CM5.16
1.1.3 備份 Cloudera Manager Databases
# mysql機器上執行
mysqldump --databases database_name --host=database_hostname --port=database_port -u user_name -p > $HOME/database_name-backup-`date +%F`-CM5.16.sql
CM界面開始停止叢集服務和Cloudera監控服務,伺服器上批量停止
systemctl stop cloudera-scm-agent
systemctl stop cloudera-scm-server
2 更新Cloudera Server&&Cloudera Agent
2.1 更新Cloudera Server
#1. 修改yum源
# 注釋掉舊的安裝源換成新版本即可
#2. 重新整理
yum clean all && yum makecache
#3. 更新安裝
yum upgrade cloudera-manager-server cloudera-manager-daemons cloudera-manager-agent
#4. CM主機啟動cloudera-scm-server && cloudera-scm-agent
Cloudera-scm-server重新開機部分日志如下:
2.2 更新Cloudera Agent
點選重新整理後可以看到CM主節點已經得到更新,但是其餘從節點未做修改,下一步我們開始批量更新Agent節點的版本,隻需要修改對應yum源,執行更新指令&&啟動即可
#1. 修改yum源
yum clean all && yum makecache
#2. 更新
yum upgrade cloudera-manager-daemons cloudera-manager-agent -y
#3. 啟動agent
systemctl start cloudera-scm-agent
#4. 重新整理cm界面後更新成功
開始啟動服務 Cloudera Management Service
#這部分出問題可參考官網
https://docs.cloudera.com/documentation/enterprise/upgrade/topics/ug_cm_downgrade.html
3 更新CDH版本
CDH更新前看下更新後的CM界面,CDH依舊是5.16.2的。下面開始更新CDH版本
看了下來自官網的警告,瑟瑟發抖呀,更新之前還得對各種元件做好處理呀兄弟們!!!
下圖中,官網告訴我們MR、Yarn等一些元件不需要單獨處理,但是ZK,HDFS,Hbase都需要單獨進行備份。
3.1 Zookeeper備份
#備份每台ZK服務
cp -rp /var/lib/zookeeper/ /var/lib/zookeeper-backup-`date +%F`CM6.3.1-CDH5.16
3.2 HDFS備份
#1.備份每台Journal服務,這裡一定要是自己jn資料的目錄哈
cp -rp /hadoop1/dfs/jns /hadoop1/dfs/jn-CM6.3.1-CDH5.16
#2.備份每台namenode,也一定注意自己的安裝路徑
mkdir -p /etc/hadoop/conf.rollback.namenode
cd /var/run/cloudera-scm-agent/process/ && cd `ls -t1 | grep -e "-NAMENODE\#34; | head -1`
cp -rp /etc/hadoop/conf.cloudera.hdfs/log4j.properties /etc/hadoop/conf.rollback.namenode/
#3.備份每台datanode運作目錄
mkdir -p /etc/hadoop/conf.rollback.datanode/
cd /var/run/cloudera-scm-agent/process/ && cd `ls -t1 | grep -e "-DATANODE\#34; | head -1`
rm -rf /etc/hadoop/conf.rollback.datanode/log4j.properties
cp -rp /etc/hadoop/conf.cloudera.hdfs/log4j.properties /etc/hadoop/conf.rollback.datanode/
3.3 Hue備份
#hue服務的主機上
mkdir -p /opt/cloudera/parcels_backup
cp -rp /opt/cloudera/parcels/CDH/lib/hue/app.reg /opt/cloudera/parcels_backup/app.reg-CM6.3.1-CDH5.16
3.4 更新CDH版本
準備好hhtpd遠端配置的CDH parcel安裝包,CM界面點選主機中的parcel,配置新的parcel安裝源,如下圖:
配置完成後出現如上截圖,我們開始下載下傳 -> 配置設定 -> 解壓 -> 激活,然後開始更新。
感覺還是很順利的哈哈哈哈!!!
更新成功!不過有一說一,更新的情況還是比較适用于大資料元件不多且叢集規模不大的情況,如果條件允許的話直接重建會更快一些!