前言
因為cdh版本更新頻率較快,各個小版本之間變化可能不是很大,但是Cloudera公司的每一次更新帶來的都是bug的修復,技術(shù)的革新。相較于我們公司生產(chǎn)上還是cdh5.9.0有點掉隊了,現(xiàn)在急需進行一場更新變革,跟上技術(shù)的腳步,適應行業(yè)的發(fā)展。對于此次升級,主要是cm及cdh的操作,采用的是Cloudera官方給出的Tarballs方式升級,包括Cloudera Manager Server和Cloudera Manager Agent 的升級,然后再利用cm來升級cdh。
詳細步驟
收集升級信息
主機信息,確保能夠通過root免密碼登錄
-
Cloudera Manager版本(通過cm主界面可查看)
版本信息.png JDK版本
CDH版本(通過cm主界面可查看)
確保CDH之前部署的方式是Parcels還是Packages(通過cm主界面可查看)
CM service,Hue,Hive Metastore,Sentry Server的數(shù)據(jù)庫信息。
升級前準備工作
- 閱讀要升級版本的要求和系統(tǒng)需求:https://www.cloudera.com/documentation/enterprise/release-notes/topics/rn_consolidated_pcm.html(包括cm跟cdh的匹配規(guī)則;cm跟服務器版本的匹配規(guī)則;JDK的選擇等等)
- 由于我們的集群未開啟TLS/SSL功能,故可不關注這方面。
- 確保Java 1.7或Java 1.8版本
- 確保Cloudera Manager次要版本等于或大于CDH的次要版本
- 運行Host Inspector并且修復出現(xiàn)的問題(Cluster > Inspect Hosts)
- 運行Security Inspector并且修復出現(xiàn)的問題(Administration > Security ,然后點擊Security Inspector)這個是集群若開啟了kerberos認證時使用。
- 檢查HDFS是否正常,修復檢查出的問題(hdfs fsck / 和 hdfs dfsadmin -report 命令)
- 檢查HBASE是否正常(hbase hbck命令)
- 通知業(yè)務,升級CM和整個CDH大數(shù)據(jù)平臺需要花費較長的時間
- 為了避免在升級期間出現(xiàn)不必要的警告,可以在啟動升級之前打開維護模式(當該群集處于維護模式中時,從該群集的服務和角色發(fā)出的警報將會被抑制),升級完成后記得退出維護模式。
在NameNode上備份HDFS Metadata
- 在Active NameNode的服務上找到配置的數(shù)據(jù)目錄,如果配置了多個目錄,備份其中一個目錄即可(每個目錄都是完全拷貝的元數(shù)據(jù))
[圖片上傳失敗...(image-5389f0-1530292392783)]
需要注意的是:如果NameNode的數(shù)據(jù)目錄下面還有以.lock擴展名的文件,那么說明NameNode還在運行,需要先停止NameNode服務。
備份數(shù)據(jù)庫數(shù)據(jù)
注意:備份數(shù)據(jù)庫之前,需要停止對應一些組件的服務,備份期間,服務不可用。
需要備份的數(shù)據(jù)庫的組件有:
Hue
Oozie
Cloudera Navigator Audit Server
Cloudera Navigator Metadata Server
Activity Monitor
Reports Manager
Sentry Server
Hive Metastore
針對我們的生產(chǎn)環(huán)境,數(shù)據(jù)庫采用的是MariaDB,所以備份方式可以采用:

測試環(huán)境的數(shù)據(jù)庫有:
scm
hue
hive
sqoop
oozie
sentry
升級Cloudera Manager Server/Agent
- 配置需要升級的cm版本的yum源(前面講到要安裝適合本服務器對應的cm版本,此次測試集群是centos7.4的)
- 參照之前的Cloudera的yum源配置創(chuàng)建新版本的本地repo注意:一定要選擇與自己服務器匹配的cm版本。 - yum clean all
- yum makecache
- 接著可查看是否已更新,驗證:
驗證可知,新版本的yum源已配置好,接下來就是更新升級啦。
web頁面關閉Cloudera Management Service服務。(當然在升級cm的時候其實跟cdh是分開的,集群可關閉也可不關,建議關閉吧)
關閉cloudera-scm-server服務,備份相關數(shù)據(jù)(備份數(shù)據(jù)庫的時候確保服務已關閉)
-
升級Cloudera相關組件:
更新cm安裝包.png -
檢查安裝是否成功:
cm安裝成功.png 開啟cloudera-scm-server服務:-
登錄cm界面,選擇升級現(xiàn)在升級Cloudera Manager Agent
cm界面.png 接下來就是升級agent的操作。(可能會比較耗時,因為要下載更新的軟件包,最好是都配置成公司內(nèi)部的yum安裝包源地址)
- 選擇是,我想立即升級Cloudera Manager Agent軟件包,然后單擊繼續(xù)。
- 選擇要安裝的Cloudera Manager Agent的版本。 通常情況下,這是Cloudera Manager Server的匹配版本。 但是,如果您使用Cloudera Manager server的自定義repository( 而不是 archive.cloudera.com),請選擇Custom Repository并提供所需的信息。 自定義repository 位置必須包含匹配的Agent 版本。
- 點擊繼續(xù)。 顯示“JDK安裝選項”
如果前面已經(jīng)安裝這里跳過 - 點擊繼續(xù)
- 指定證書并啟動代理程序安裝
選擇root或輸入具有無密碼sudo權(quán)限的帳戶的用戶名。
選擇一種認證方法:
如果您選擇密碼認證,請輸入并確認密碼。
如果您選擇公鑰認證,請?zhí)峁┧杳荑€文件的密碼和路徑。
您可以指定一個備用的SSH端口。 默認值是22。
您可以指定一次運行的主機安裝的最大數(shù)量。 默認值是10。 - 點擊繼續(xù)。
Cloudera Manager Agent軟件包和JDK(如果選擇是)將被安裝 - 點擊繼續(xù)。
- 主機檢查器運行檢查您的托管主機是否有正確的版本和配置。 如果發(fā)生問題,您可以進行更改,然后重新運行檢查。
如果您對檢查結(jié)果滿意,請點擊繼續(xù) - agent升級成功之后會進入數(shù)據(jù)庫配置頁面, 配置這些數(shù)據(jù)庫設置: 1. 輸入數(shù)據(jù)庫的數(shù)據(jù)庫主機,數(shù)據(jù)庫類型,數(shù)據(jù)庫名稱,用戶名和密碼。
- 因為我們的生產(chǎn)集群agent的config.ini中server_host屬性配置的是主機名,而自動升級之后,會把之前的配置文件備份重新生產(chǎn)一個server_host值是ip的文件,這個需要手動更改。
- 驗證并測試升級
- 驗證代理是否正在向Cloudera Manager發(fā)送檢測信號:
a. 點擊主機>所有主機。
b. 點擊標題為Last Heartbeat的列標題對其進行排序。
c. 驗證每個主機的最后一次檢測信號是否在一分鐘內(nèi)發(fā)生。 - 在Cloudera Manager管理控制臺中,單擊主機選項卡
- 點擊檢查所有主機。 在大型集群上,主機檢查員可能需要一些時間才能完成運行。在繼續(xù)下一步之前,您必須等待過程完成。
- 點擊 顯示檢查結(jié)果。 顯示主機檢查器進程的所有結(jié)果,包括當前安裝的版本。如果這包括當前組件版本的列表,則安裝按預期完成。
- 驗證監(jiān)視功能是否按預期工作; 請按照測試安裝中的說明進行操作。
升級CDH
-
配置適合新版本的parcel包(配置好后,最好點擊下載,因為待會升級也會要求下載分發(fā)并激活)
parcel入口.png
parcel配置入口.png
配置parcel.png
刷新parcel.png -
點擊升級群集(確保集群此時已關閉,各服務不能要數(shù)據(jù)庫寫數(shù)據(jù)。)
升級群集入口.png
cdh更新版本.png
升級cdh_1.png 它會提示你備份數(shù)據(jù)庫的相關數(shù)據(jù),當然也備份namenode的元數(shù)據(jù)。
等待cdh更新包的下載完成,然后分發(fā)激活。(比較花費時間,最好是先自己將parcel包下載好,再分發(fā)到各個服務器的/opt/cloudera/parcel-repo/目錄下,或者將遠程地址配置成公司內(nèi)部可用的地址。)
parcel解壓激活后,點擊繼續(xù),檢查主機(可跳過),然后重啟集群。
選擇“完整群集重啟”后,點擊“繼續(xù)
如果升級過程遇到失敗后,修復問題后,繼續(xù)升級。
至此集群的整個升級過程都已完成,后面可通過查看hdfs文件看數(shù)據(jù)量的變化,也可向yarn提交任務驗證此次升級操作的準確性。
總結(jié)
- 升級過程是一個嚴謹?shù)牟僮?,必須按照特定的順序操作流程,且不容有差錯。
- 整個過程中比較耗時的都是集群在下載cm的安裝包和parcel的軟件包的步驟,這個我們可通過提交配置好環(huán)境來規(guī)避這一點,另外在下載parcel包時可以提前在本地下載好放到特定的目錄下面(/opt/cloudera/parcel-repo),因為集群內(nèi)部的分發(fā)速度是很快的。
- 升級之前最好要測試一下集群自身有問題沒,包括集群的重啟,namenode的ha的切換等等。
- 升級過程中遇到問題解決問題,不能瞎操作。










