記錄一次CDH從6.3.0版本升級到6.3.2版本過程,其中部分截圖遺失可能會影響直觀效果。
一、前期准備:
在進行 CDH minor 版本升級之前需先對 CM 進行升級,CM 對之前的版本向下兼容,比如 6.3.0不能管理 6.3.0 之上的版本卻能管理小於版本號 6.3.0以下的版本。
follow 官方文檔首先我們通過 reference 的第一個鏈接進入到對 cm 升級准備頁面。
然后通過相關命令查看目前主機以及 CM CDH 系統的情況,並將信息填入上面的 prepare my environment 中。下面的升級步驟都會 follow 這里選擇的東西不要填錯或者亂填
查看 Operating System
[root@alisa99 ~]# lsb_release -a
LSB Version: :core-4.1-amd64:core-4.1-noarch
Distributor ID: CentOS
Description: CentOS Linux release 7.4.1708 (Core)
Release: 7.4.1708
Codename: Core
查看目前 CM 使用的 metastore 情況 (這里CDH用的數據庫為postgresql型數據庫)
[root@alisa99 ~]# cat /etc/cloudera-scm-server/db.properties # Auto-generated by scm_prepare_database.sh on Tue Jun 23 10:54:43 CST 2020 # # For information describing how to configure the Cloudera Manager Server # to connect to databases, see the "Cloudera Manager Installation Guide." # com.cloudera.cmf.db.type=postgresql com.cloudera.cmf.db.host=mpp99 com.cloudera.cmf.db.name=scm com.cloudera.cmf.db.user=scm com.cloudera.cmf.db.setupType=EXTERNAL com.cloudera.cmf.db.password=Passw0rd!
下面就是做一些備份數據的工作,通常意義上來說,如果我們進行 major 版本的升級,這一步的工序應該非常多非常復雜,但是進行 minor 或者 maintaince 級別的升級相對來說改動較少會稍微輕松一點,需要注意的地方沒有那么多。但是該做的備份我們還是給做上,確保可回滾。
二、 備份相關監控和 scm 數據庫組件:
備份 CMA(Cloudera Manager Agent)
備份文件夾
[root@alisa97 ~]# cp /etc/default/cloudera-scm-agent /etc/default/cloudera-scm-agent.bak [root@alisa97 ~]# cp -r /var/run/cloudera-scm-agent/ /var/run/cloudera-scm-agent_bak [root@alisa97 ~]# cp -r /var/lib/cloudera-scm-agent/ /var/lib/cloudera-scm-agent_bak
備份數據庫
[root@alisa99 ~]# pg_dump -p 5432 -U scm -c -f scm_bak.sql scm
備份 CMS(Cloudera Management Service) 信息
備份 Service monitor 信息
[root@alisa97 ~]# cp -rp /var/lib/cloudera-service-monitor/ /var/lib/cloudera-service-monitor_bak
備份 Host monitor 信息
[root@alisa97 ~]# cp -rp /var/lib/cloudera-host-monitor/ /var/lib/cloudera-host-monitor_bak
備份 Event Server 信息
[root@alisa97 ~]# cp -rp /var/lib/cloudera-scm-eventserver/ /var/lib/cloudera-scm-eventserver_bak
備份 cms 信息
[root@alisa97 ~]# cp -rp /etc/default/cloudera-scm-server /etc/default/cloudera-scm-server_bak
3. 開始升級過程:
注意所有的升級過程期間最好保證 cm 是正常退出的情況包括 scm 和 cm-agent 是停止的情況。並且要保障期間不會有任何快照之類的 job 還在執行,否則可能導致升級之后 cm 起不來。
停止服務
[root@alisa97 ~]# systemctl stop cloudera-scm-agent
[root@alisa97 ~]# systemctl stop cloudera-scm-service
其他兩台機器停止agent端即可
我們需要將相關安裝包下載並上次服務器目錄下並傳到agent端,然后進行升級安裝。
[root@alisa97 /opt/softs/CDH6.3.2/CM]# ls
cloudera-manager-agent-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-server-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-daemons-6.3.1-1466458.el7.x86_64.rpm cloudera-manager-server-db-2-6.3.1-1466458.el7.x86_64.rpm
[root@alisa97 /opt/softs/CDH6.3.2/CM]# yum upgrade cloudera-manager-server cloudera-manager-daemons cloudera-manager-agent (server端)
[root@alisa97 /opt/softs/CDH6.3.2/CM]# yum upgrade cloudera-manager-daemons cloudera-manager-agent (agent端)
檢驗:
[root@alisa97 /opt/softs/CDH6.3.2/CM]# rpm -qa |grep cloudera
cloudera-manager-agent-6.3.1-1466458.el7.x86_64 cloudera-manager-server-6.3.1-1466458.el7.x86_64 cloudera-manager-daemons-6.3.1-1466458.el7.x86_64
[root@alisa99 /var/lib]# rpm -qa |grep cloudera cloudera-manager-daemons-6.3.1-1466458.el7.x86_64 cloudera-manager-agent-6.3.1-1466458.el7.x86_64
完成升級啟動我們的 agent 服務和 scm 服務
來到此界面,如果沒能來到此界面可以參考日志進行一些排錯
tail -f -n 900 /var/log/cloudera-scm-server/cloudera-scm-server.log tail -f -n 900 /var/log/cloudera-scm-agent/cloudera-scm-agent.log tail -f -n 900 /var/log/messages
到此我們當我們完成 CM 6.3.2的升級之后,我們已經相當於完成了80% minor 的升級。接下來我們對CM進行升級。
[root@alisa97 /opt/softs/CDH6.3.2]# ls CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 manifest.json
[root@alisa97 /opt/softs/CDH6.3.2]# cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel /opt/cloudera/parcel-repo
[root@alisa97 /opt/softs/CDH6.3.2]# cp CDH-6.3.2-1.cdh6.3.2.p0.1605554-el7.parcel.sha1 /opt/cloudera/parcel-repo
這里需要注意的是復制6.3.2的CM包到 /opt/cloudera/parcel-repo 下后需要將之前的6.3.0的包相應刪除或者移出此目錄。
之后我們有兩種辦法觸發集群升級。
1. 直接在該界面點擊分發 distribute。
2. 去 home 頁面 下拉菜單中點擊「升級集群 upgrade cluster」按鈕。
建議使用第二種,不管使用那種最終都會走到同樣的地方。
然后一路 follow 選項和配置,關注自己關注的事項。
然后一路順利的話我們的升級工作已經完成。我們可在web界面檢驗
這里面的黃色是我后來接的圖,並不影響CDH的運行。
另外升級完成之后需要注意,官方提供的步驟8 最終化 hdfs 元數據。
這一步執行之后在沒有之前 hdfs 備份的情況下無法對 hdfs 進行回滾了。
我們可以在執行這一步之前,一直運行一段時間來確保我們整個升級沒有任何問題,比如運行個一周啥的。
最后我們 在 activate namenode 節點進行最終元數據升級來完成整個升級流程。
至此我們的CDH從 6.3.0 升級到 6.3.2 已經完成。
若升級完成后hdfs相關命令無法使用,則參考以下鏈接: