溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

CDH集群升級事故的解決方法是什么

發(fā)布時間:2021-12-07 15:34:50 來源:億速云 閱讀:208 作者:柒染 欄目:大數(shù)據(jù)

本篇文章為大家展示了CDH集群升級事故的解決方法是什么,內(nèi)容簡明扼要并且容易理解,絕對能使你眼前一亮,通過這篇文章的詳細(xì)介紹希望你能有所收獲。

 01問題現(xiàn)象

某日明哥接到求助,集群運維人員在通過 cloudera manager 的 upgrade cluster 選項 (見下圖一),升級 cdh  集群時遇到了問題,卡在了 "Execute command Upgrade Hive Metastore Database Schema on service  Hive" 這一步。由于我們的應(yīng)用系統(tǒng)是基于 Hive 的離線計算作業(yè),hive升級不成功,應(yīng)用應(yīng)用無法啟動,該問題亟待解決。

CDH集群升級事故的解決方法是什么

"Execute command Upgrade Hive Metastore Database Schema on service Hive"  這一步前的步驟是執(zhí)行成功的,包括HDFS的升級:

CDH集群升級事故的解決方法是什么

02問題分析

查看cm頁面上執(zhí)行 "Execute command Upgrade Hive Metastore Database Schema on service  Hive" 這一步時的 stdout 和 stderr 日志,其內(nèi)容如下(頁面日志沒來得及截圖,以下截圖是當(dāng)時復(fù)制出來的頁面日志的內(nèi)容):

stdout.log:

CDH集群升級事故的解決方法是什么

stderr.log:

CDH集群升級事故的解決方法是什么

查看hive metastore database 升級腳本的內(nèi)容:

CDH集群升級事故的解決方法是什么

可見該升級腳本只是更改了 hive 的 mysql metastore db,更新了 hive 庫中 DBS 表的結(jié)構(gòu) (增加了一列  create_time);并更新了 cdh_version表的一條記錄。

如此簡單的 ddl 語句和 dml  語句會執(zhí)行失敗,很可能的原因是使用的數(shù)據(jù)庫用戶名和密碼不對或沒有更新權(quán)限。我們需要驗證下使用的用戶名和密碼是否正確,以及是否有相應(yīng)的權(quán)限。這些連接信息和用戶名密碼信息是在  cm 中 hive 配置頁面指定的:

CDH集群升級事故的解決方法是什么

不幸的是,如上圖可見,出于保護(hù)敏感信息的需要,cm 頁面屏蔽了用戶配置的 hive metastore db 的用戶密碼。

(事實上 stdout.log 日志中也告訴了我們連接信息和用戶名信息,跟上述配置是一致的:Metastore connection URL 是  jdbc:mysql://node1:3306/hive?useUnicode=true&characterEncoding=UTF-8;Metastore  connection User 是 root。)

所以接下來,我們的思路是,拿到 hive metastore db 需要使用的正確的用戶名和密碼,并在上述頁面配置下,再次重試集群升級步驟。

03如何獲取 hive metastore db 的用戶名和密碼呢?

如何獲取 hive metastore db 的用戶名和密碼呢?

方法一:找集群管理員索取。

該方法是可行的,但由于hive metastore db  的用戶名和密碼,是在初次搭建集群是設(shè)置的,集群搭建完畢后正常使用過程中很少會使用到該用戶名和密碼,日常越久可能集群管理員也會忘記最初的用戶名和密碼。(集群多了也可能會搞混淆)

方法二:查看配置文件hive-site.xml 獲取。

該方法在 hive 的早期版本是可行的,但在1.x 后(不記得具體的版本了。。。),同樣出于保護(hù)敏感信息的原因,hive-site.xml  中也屏蔽了該信息,如下所示:

CDH集群升級事故的解決方法是什么

方法三:通過 curl 訪問 cm 提供的特定 restful 接口獲取集群配置信息,包括 hive metastore 用戶名和密碼。

該接口的地址和訪問方式是:curl -u cm-user:cm-pwd  "http://cm-host:7180/api/v19/cm/deployment",示例如下:

CDH集群升級事故的解決方法是什么

04問題解決

在通過上述方法三,拿到了 hive metastore db 的正確用戶名和密碼后,在 hive  配置頁面配置完畢正確的用戶名和密碼后,再次嘗試升級集群(通過在 cm 的 Running Commands 頁面,resume 恢復(fù) upgrade  cluster 命令即可),集群升級正確執(zhí)行,直至結(jié)束,如下所示:

CDH集群升級事故的解決方法是什么


CDH集群升級事故的解決方法是什么

05HDFS 集群升級后的收尾

做過 hdfs 集群升級的小伙伴,會留意到,通過以上步驟升級完畢集群后,hdfs 集群可以正常對外提供讀寫服務(wù),但在 hdfs 的 web  頁面會有個提示信息 "upgrade in progress. not yet finalized",如下所示:

CDH集群升級事故的解決方法是什么

事實上,這是 hdfs 有意為之的升級機制:hdfs 允許用戶在集群升級完畢后,再次對集群進(jìn)行充分的業(yè)務(wù)測試和驗證,確保一切無誤后,才來 finalize  , 即 commit 整個 update;如果業(yè)務(wù)驗證失敗,可以回滾到升級前的版本。"Finalizing upgrade is separate  process that should be invoked manually after you confirm that data migration  went well。"

我們執(zhí)行命令 hdfs dfsadmin -finalizeUpgrade 進(jìn)行升級后的 finalize:

CDH集群升級事故的解決方法是什么

再次查看hdfs web ui,提示信息不見了:

CDH集群升級事故的解決方法是什么

06key take-aways

匯總下知識點:

1. hive metastore db 的用戶名和密碼,可以通過以下命令獲得:

curl -u cm-user:cm-pwd "http://cm-host:7180/api/v19/cm/deployment"

2. hdfs 集群升級完畢后,可以執(zhí)行 hdfs dfsadmin -finalizeUpgrade 最終確認(rèn)升級,也可以回滾到之前版本。

上述內(nèi)容就是CDH集群升級事故的解決方法是什么,你們學(xué)到知識或技能了嗎?如果還想學(xué)到更多技能或者豐富自己的知識儲備,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

cdh
AI