HDFS 實(shí)踐 | 京東 HDFS EC 應(yīng)用解密

Tech

導(dǎo)讀
為了實(shí)現(xiàn)降本增效,京東HDFS 團(tuán)隊(duì)在 EC 功能的移植、測試與上線過程中,基于自身現(xiàn)狀采取的一些措施并最終實(shí)現(xiàn)平滑上線。同時自研了一套數(shù)據(jù)生命周期管理系統(tǒng),對熱溫冷數(shù)據(jù)進(jìn)行自動化管理。在研發(fā)落地過程中還構(gòu)建了三維一體的數(shù)據(jù)校驗(yàn)機(jī)制,為 EC 數(shù)據(jù)的正確性提供了強(qiáng)有力的技術(shù)保障。
本文詳細(xì)介紹在研發(fā)一個復(fù)雜系統(tǒng)時,如何基于實(shí)際情況進(jìn)行取舍,并確立行動準(zhǔn)則。在功能上線過程中,要保持對線上系統(tǒng)的敬畏,確保上線與回滾不會導(dǎo)致元數(shù)據(jù)損壞。此外,要深刻認(rèn)識系統(tǒng)的核心職責(zé),對于存儲系統(tǒng)務(wù)必加強(qiáng)技術(shù)保障,確保數(shù)據(jù)的安全與可靠,不能丟不能錯。

01
升級 or 移植
按功能模塊移植代碼。 移植過程中,盡可能的保持社區(qū)代碼原有樣式,以便于后續(xù)apply patch。 對移植過程沒有任何幫助的代碼,不移植。 對于接口,優(yōu)先移植,而且與社區(qū)保持一致。 測試用例必須移植并跑通。 對于目前不移植或者為了簡化移植工作而去掉的代碼,一定不能影響現(xiàn)有場景的功能,并用TODO標(biāo)識未來會修改。
02
項(xiàng)目質(zhì)量保障
移植工作不能改變原有接口和命令行語義,甚至接口和命令行的返回信息也要確保與 2.7.1 版本一致。 一般的集群運(yùn)維操作能夠正常進(jìn)行,比如 DN 節(jié)點(diǎn)上下線,NN 升級與回退。 在破壞性測試中,集群的健壯性不受影響,比如磁盤故障,網(wǎng)絡(luò)異常,數(shù)據(jù)損壞。 驗(yàn)證集群兼容性,NN/DN/JN 逐步升級和回退不能影響集群的服務(wù)能力。 校驗(yàn)數(shù)據(jù)正確性,在測試過程中要保證 EC 數(shù)據(jù)沒有被損壞,丟塊后重建的數(shù)據(jù)是正確的。 性能對比測試,引入 EC 功能后,通過壓測對比,確保集群,特別是 NN,性能不受影響。
03
升級與回滾


04
數(shù)據(jù)生命周期管理
在不修改 NN的前提下,任務(wù)調(diào)度系統(tǒng)無法實(shí)時轉(zhuǎn)換新增數(shù)據(jù)。 如果在數(shù)據(jù)拷貝過程中發(fā)生錯誤,只能重頭開始轉(zhuǎn)換。 如果要對數(shù)據(jù)進(jìn)行過濾,只支持對文件路徑的過濾。 如果把轉(zhuǎn)換后的數(shù)據(jù)移到源目錄時,沒法進(jìn)行原子交換,用戶程序會在此間隙拋出找不到文件的異常。 此外,HDFS 為目錄和文件設(shè)置了用戶組權(quán)限以及時間戳,對所有數(shù)據(jù)進(jìn)行拷貝時,需要給拷貝程序賦超級權(quán)限,會引入一定的安全風(fēng)險,現(xiàn)有方案也不能保證轉(zhuǎn)換后的文件和原始文件屬性保持一致。

05
全方位的數(shù)據(jù)完整性保障

06
總結(jié)與展望
HDFS-14171,影響 NN 啟動速度。 HDFS-14353, 修復(fù) xmitsInProgress 指標(biāo)異常。 HDFS-14523, 去除 NetworkTopology 多余鎖。 HDFS-14849, DN 下線導(dǎo)致 EC 塊無限復(fù)制。 HDFS-15240, 修復(fù)臟緩存導(dǎo)致數(shù)據(jù)重建錯誤。
京東零售-黃濤

揭秘| 大數(shù)據(jù)計算引擎性能及穩(wěn)定性提升神器!
"多模態(tài)數(shù)字內(nèi)容生成"的技術(shù)探索與應(yīng)用實(shí)踐
AI新生:破解人機(jī)共存密碼 | 每月一書(福利送書)
一圖看懂未來科技趨勢

評論
圖片
表情
