日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

hbase的2.2.4版本支持哪个版本的hadoop_Hadoop 2.7 不停服升级到 3.2 在滴滴的实践

發(fā)布時(shí)間:2024/7/5 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 hbase的2.2.4版本支持哪个版本的hadoop_Hadoop 2.7 不停服升级到 3.2 在滴滴的实践 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
桔妹導(dǎo)讀:Hadoop 3的第一個(gè)穩(wěn)定版本在2017年底就已經(jīng)發(fā)布了,有了很多重大的改進(jìn)。在HDFS方面,支持了Erasure Coding、More than 2 NameNodes、Router-Based Federation、Intra-datanode balancer 等功能,大家可能對(duì)這些功能很感興趣,打算將集群升級(jí)到HDFS 3.x 版本。本篇文章會(huì)介紹我們是如何將 HDFS 從2.7滾動(dòng)升級(jí)到3.2版本的,在升級(jí)中會(huì)遇到哪些問(wèn)題以及我們是如何解決掉的。HDFS 升級(jí)過(guò)程漫長(zhǎng),但是收益是非常多的。在此基礎(chǔ)上,我們可以繼續(xù)做非常有意義的工作,持續(xù)在穩(wěn)定性、性能、成本等多個(gè)方面深入探索,使用技術(shù)為公司創(chuàng)造可見(jiàn)的價(jià)值。

1.

為什么要升級(jí)


在2017年底, Hadoop3.0 發(fā)布了,到目前為止, Hadoop 發(fā)布的最新版本為3.2.1。在 Hadoop3 中有很多有用的新特性出現(xiàn),如支持 ErasureCoding、多 NameNode、Standby NameNode read、DataNode Disk Balance、HDFS RBF 等等。除此之外,還有很多性能優(yōu)化以及 BUG 修復(fù)。其中最吸引我們的就是 ErasureCoding 特性,數(shù)據(jù)可靠性保持不變的情況下可以降低數(shù)據(jù)的存儲(chǔ)副本數(shù)量,結(jié)合公司的降成本目標(biāo)以及用戶的痛點(diǎn),我們對(duì)此做了深入的調(diào)研。同時(shí),在實(shí)際工作中我們發(fā)現(xiàn),我們遇到的一些 BUG 以及想做的一些優(yōu)化點(diǎn),社區(qū)早已經(jīng)修復(fù)或者實(shí)現(xiàn)。內(nèi)部使用的 Hadoop 版本對(duì)應(yīng)社區(qū)的2.7.2,由于社區(qū)很多 BUG 修復(fù)是不會(huì)移植到太低版本的,我們解決問(wèn)題時(shí)花費(fèi)了較多精力在移植與測(cè)試驗(yàn)證中。如果升級(jí)到 HDFS3.2 版本,可以站在巨人肩膀上繼續(xù)工作,做一些更有意義的事情。

2.

調(diào)研升級(jí)方案??


升級(jí)方式有兩種:Express 和 Rolling,Express 升級(jí)過(guò)程是停止現(xiàn)有服務(wù),然后使用新版本啟動(dòng)服務(wù);Rolling 升級(jí)過(guò)程是滾動(dòng)升級(jí),不停服務(wù),對(duì)用戶無(wú)感知。對(duì)于公司來(lái)說(shuō),當(dāng)然滾動(dòng)升級(jí)是最好的方案,離線集群用戶非常之多,影響面非常之大。目前業(yè)界還沒(méi)有滾動(dòng)升級(jí)的方案從2.x 版本升級(jí)到3.x 版本,Cloudera 和 Hontonworks 公司(目前兩個(gè)公司已合并)給出的推薦方案仍然是 Express 升級(jí),例如 Hontonworks 的文檔中描述,目前滾動(dòng)升級(jí)存在一些問(wèn)題尚未解決,推薦用戶做 Express 升級(jí)。當(dāng)前滾動(dòng)升級(jí)存在的問(wèn)題記錄在 Apache Hadoop Wiki 中,主要問(wèn)題是 Edit Log 不兼容,無(wú)法進(jìn)行滾動(dòng)升級(jí)。調(diào)研之后,我們對(duì)整個(gè)升級(jí)方案有了一個(gè)初步掌握,開(kāi)始著手解決這些問(wèn)題。HDFS 整體架構(gòu)圖(網(wǎng)絡(luò)上獲取)如下所示,我們準(zhǔn)備對(duì)服務(wù)端進(jìn)行升級(jí),包括 JournalNode,NameNode,ZKFC,DataNode 組件。Client 端受到 Spark,Hive,Flink 等等很多組件依賴,目前這些組件還不支持 Hadoop3,因此 Client 版本暫時(shí)保持不變。

3.

解決滾動(dòng)升級(jí)中遇到的問(wèn)題


滾動(dòng)升級(jí)的操作流程在 Hadoop 官方升級(jí)文檔中有介紹,概括起來(lái)大致步驟如下:

1.JournalNode?升級(jí),使用新版本依次重啟?JournalNode
2.?NameNode?升級(jí)
2.1升級(jí)準(zhǔn)備,生成?fallback?fsimage?文件
2. 2使用新版本?Hadoop?重啟?Standby?NameNode,重啟?ZKFC
2.3做?failover,使升級(jí)后的?NameNode?變成?Active?節(jié)點(diǎn)
2.4使用新版本?Hadoop?重啟另一個(gè)?NameNode,重啟?ZKFC
3.升級(jí)?DataNode,使用新版本?Hadoop?重啟所有?DataNode?節(jié)點(diǎn)
4.做?Finalize,確認(rèn)集群變更到3.2

在測(cè)試環(huán)境驗(yàn)證 HDFS 滾動(dòng)升級(jí)方案時(shí),升級(jí)和降級(jí)過(guò)程中都遇到了一些問(wèn)題。

在滾動(dòng)升級(jí)中,當(dāng) Active NameNode 為3.2版本,Standby NameNode 為2.7版本時(shí),會(huì)出現(xiàn) EditLog 不兼容問(wèn)題。此時(shí),Active NameNode 寫 EditLog 時(shí)會(huì)將 EC 相關(guān)的結(jié)構(gòu)寫入到 EditLog 當(dāng)中,當(dāng) Standby NameNode 讀取 EditLog 時(shí),會(huì)出現(xiàn)識(shí)別不了的情況,導(dǎo)致 Standby NameNode 直接 Shutdown。我們的解決方案是,考慮當(dāng)前有效版本是否支持 EC,如果支持 EC 則會(huì)寫入 EC 信息到 EditLog,否則不會(huì)寫入。而在升級(jí)過(guò)程中,有效版本實(shí)際上還是2.7,是不支持 EC 的,這個(gè)時(shí)候忽略 EC 即可,這樣 Standby NameNode 讀取 EditLog 做合并時(shí),不會(huì)出現(xiàn) EC 相關(guān)信息,可正常工作。解決問(wèn)題的 ISSUE 為?HDFS-13596。

在滾動(dòng)降級(jí)中,當(dāng)3.2版本的 NameNode 使用3.2版本 Hadoop 重啟時(shí),如果當(dāng)前最新的 Fsimage 是3.2版本 NameNode 產(chǎn)生的,則2.7版本 Hadoop 重啟 NameNode 會(huì)直接 Shutdown,原因是,3.2版本 Haodop 產(chǎn)生的 Fsimage 文件,2.7版本的 Hadoop 無(wú)法進(jìn)行加載,這將導(dǎo)致如果升級(jí)中遇到問(wèn)題想回滾的話,無(wú)法完成回滾操作。經(jīng)過(guò)深入分析,我們發(fā)現(xiàn)有兩個(gè)問(wèn)題會(huì)導(dǎo)致這種情況出現(xiàn)。

第一個(gè)問(wèn)題,Fsimage 的不兼容是由于3.2版本的 NameNode 將 EC 信息寫入到了 Fsimage 當(dāng)中,2.7版本的 Hadoop 無(wú)法識(shí)別 EC 信息,導(dǎo)致失敗。解決方案與上面類似,在保存 Fsimage 時(shí)考慮當(dāng)前的有效版本,如果不支持 EC 則不會(huì)將 EC 信息寫入到 Fsimage 文件中。解決問(wèn)題的 ISSUE 為 HDFS-14396。

第二個(gè)問(wèn)題,由于 NameNode 對(duì) StringTable 的修改導(dǎo)致了 Fsimage 的不兼容,目前該問(wèn)題可以通過(guò)回滾 commit 進(jìn)行解決,社區(qū)反饋修復(fù)也不是很必要,可以通過(guò)先升級(jí)到無(wú)該 commit 的版本,滾動(dòng)升級(jí)穩(wěn)定后,直接進(jìn)行小版本升級(jí),跨過(guò)這個(gè)不兼容特性。記錄 ISSUE 為?HDFS-14831。

由于滴滴使用的是內(nèi)部的用戶名密碼認(rèn)證機(jī)制,社區(qū)出現(xiàn)的一個(gè)問(wèn)題我們沒(méi)有遇到, ISSUE 為?HDFS-14509?,升級(jí)過(guò)程中 NameNode 和 DataNode 由于數(shù)據(jù)結(jié)構(gòu)的變化,生成了不同的 password,導(dǎo)致無(wú)法認(rèn)證,讀寫數(shù)據(jù)會(huì)失敗。該 ISSUE 記錄了這個(gè)問(wèn)題,需要先升級(jí)到 2.x 的最新版本進(jìn)行過(guò)度,之后才能滾動(dòng)升級(jí)到 3.x 版本。

總結(jié)起來(lái),需要做 HDFS2.x 到 3.x 的滾動(dòng)升級(jí),需要關(guān)注這些 ISSUE,HDFS-13596,HDFS-14396,HDFS-14831,HDFS-14509。

4.

測(cè)試與上線


從19年初開(kāi)始關(guān)注 HDFS 滾動(dòng)升級(jí),在解決遇到的已知問(wèn)題之后,開(kāi)發(fā)與測(cè)試不斷討論升級(jí)方案,將可能遇到的風(fēng)險(xiǎn)進(jìn)行總結(jié)。

在這個(gè)過(guò)程中,我們?cè)敿?xì)閱讀分析了滾動(dòng)升級(jí)的源碼,確定升級(jí)中 NameNode,DataNode 會(huì)做哪些動(dòng)作,以明確風(fēng)險(xiǎn)點(diǎn)。同時(shí)我們還分析了從2.7到3.2版本引入的關(guān)于 HDFS 的4000左右的 Patch ,找出可能存在兼容性問(wèn)題的點(diǎn),進(jìn)行深入地分析。同時(shí)我們對(duì)3.2中新引入的 Feature 也進(jìn)行了分析,以確保新功能對(duì)升級(jí)沒(méi)有影響。種種總結(jié)、分析、測(cè)試相關(guān)的工作,我們寫了四五十篇的 WIKI 文檔進(jìn)行記錄。在測(cè)試環(huán)境中升級(jí)步驟進(jìn)行了數(shù)次演練,確認(rèn)沒(méi)問(wèn)題之后,我們開(kāi)始了升級(jí)之路。相關(guān)的具體里程碑上線過(guò)程如下:

1.19年5月左右,升級(jí)演練多次,準(zhǔn)備全量?Hadoop、Hive、Spark?Case?進(jìn)行測(cè)試,確定方案沒(méi)有問(wèn)題2.19年7月左右,離線小集群1(百臺(tái))升級(jí)到3.2版本,用戶未受到影響。3.19年10月左右,離線小集群2(數(shù)百臺(tái))升級(jí)到3.2版本,用戶未受到影響。4.19年11月底,離線大集群(數(shù)千臺(tái))升級(jí)到3.2版本,用戶未受到影響.

升級(jí)過(guò)程中,DataNode 在刪除 Block 時(shí),是不會(huì)真的將 Block 刪除的,而是先將Block 文件放到一個(gè) Trash 目錄中,為了能夠使用原來(lái)的 FallBack Fsimage 恢復(fù)以前的數(shù)據(jù)。當(dāng)升級(jí)周期比較長(zhǎng)時(shí),Trash 中的數(shù)據(jù)就會(huì)很多,例如我們這邊大集群升級(jí)周期就有3周之長(zhǎng)。升級(jí)操作在短時(shí)間之內(nèi),是可以確定是否有問(wèn)題的,并且三周之后也不可能真的回滾到以前的數(shù)據(jù),倘若真的遇到問(wèn)題,是需要及時(shí)修復(fù)的。我們開(kāi)發(fā)了額外的工具,對(duì) Trash 中的 Block 文件進(jìn)行按天歸檔,設(shè)置好保留時(shí)間,例如設(shè)置1天。我們會(huì)每天例行將1天之前的數(shù)據(jù)進(jìn)行刪除,這樣可以大大減少 DataNode 上磁盤的存儲(chǔ)壓力。

升級(jí)之后,我們對(duì)各個(gè)集群進(jìn)行都進(jìn)行自己觀察,目前服務(wù)一切正常。

5.

結(jié)


非常高興在如此大規(guī)模的集群上完成從2.7到3.2的滾動(dòng)升級(jí),走在了行業(yè)的前列。HDFS 升級(jí)過(guò)程漫長(zhǎng),但是收益是非常多的。在此基礎(chǔ)上,我們可以繼續(xù)做非常有意義的工作,持續(xù)在穩(wěn)定性、性能、成本等多個(gè)方面深入探索,使用技術(shù)為公司創(chuàng)造可見(jiàn)的價(jià)值。

本文作者

?

費(fèi)輝|滴滴 | 大數(shù)據(jù)架構(gòu)技術(shù)專家滴滴出行大數(shù)據(jù)架構(gòu)技術(shù)專家,負(fù)責(zé)離線存儲(chǔ)。在加入滴滴之前,曾在阿里巴巴參與過(guò)JVM和EMR產(chǎn)品的開(kāi)發(fā)。開(kāi)源大數(shù)據(jù)愛(ài)好者,積極參與社區(qū)的交流討論,Hadoop/Hive/Tez 社區(qū)貢獻(xiàn)者。猜你喜歡

1、過(guò)往記憶大數(shù)據(jù),2019年原創(chuàng)精選69篇

2、盤點(diǎn)2019年晉升為Apache TLP以及進(jìn)去Apache孵化器的大數(shù)據(jù)相關(guān)項(xiàng)目

3、字節(jié)跳動(dòng) EB 級(jí) HDFS 實(shí)踐

4、深入學(xué)習(xí) Redis 集群搭建方案及實(shí)現(xiàn)原理

過(guò)往記憶大數(shù)據(jù)微信群,請(qǐng)?zhí)砑游⑿?#xff1a;fangzhen0219,備注【進(jìn)群】

點(diǎn)一下你會(huì)更好看耶

總結(jié)

以上是生活随笔為你收集整理的hbase的2.2.4版本支持哪个版本的hadoop_Hadoop 2.7 不停服升级到 3.2 在滴滴的实践的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。