高網(wǎng)絡(luò)時延情況下提升HDFS IO速度

背景

有時候,Hadoop 的計算集群和存儲集群之間宣虾,可能會有非常大的網(wǎng)絡(luò)延遲(例如異地部署的情況)惯裕,會影響 HDFS IO 效率。具體而言:

  1. 網(wǎng)絡(luò)時延很高绣硝,相對于本地訪問蜻势,可能增加10倍以上。
  2. 網(wǎng)絡(luò)帶寬并不緊張鹉胖,沒有打滿握玛。

很自然的,在這種情況下甫菠,可以通過多線程并發(fā)讀/寫的方式挠铲,更加充分的使用網(wǎng)絡(luò)帶寬,從而加快業(yè)務(wù) IO 完成速度寂诱,目前主要有下面幾種方案拂苹。

HDFS EC 方案(推薦)

優(yōu)勢

對于這個需求,EC 基本上可以說量身定制刹衫,以提高帶寬占用為代價醋寝,使用并發(fā)讀寫的方式加快客戶端的讀寫速度搞挣,這本身就是 EC 擅長的带迟。以默認(rèn)的 6+3 策略為例:

  1. 客戶端寫入時音羞,相對于3副本的單線程寫,EC 是9倍并發(fā)寫仓犬,在高網(wǎng)絡(luò)時延嗅绰、低帶寬使用的情況下,可以大幅度提升寫入速度搀继。
  2. 客戶端讀取時窘面,相對于3副本的單線程讀,EC 是6倍并發(fā)讀叽躯,同樣能大幅度提升讀取速度财边。
  3. HDFS EC 可以做實(shí)時 EC,也可以做離線 EC点骑,具體的策略可以精確配置到目錄級別酣难。

可能存在的問題

  1. EC 會失去計算和存儲的本地性
    實(shí)際上異地訪問本來就沒有本地性,因此非問題黑滴。

  2. 由于客戶端使用多線程并發(fā)讀寫憨募,會比較顯著的提升集群整體的帶寬占用,特別是客戶端機(jī)器的帶寬占用袁辈。
    這正是我們的目的菜谣,因此非問題。

  3. 目前晚缩,HDFS EC 不支持客戶端的 append尾膊、hflush、hsync 操作荞彼,具體即:

    1. 對 EC 文件 append 會拋異常冈敛,導(dǎo)致業(yè)務(wù)失敗(目前有社區(qū) patch 在推進(jìn)解決)卿泽。
    2. 對 EC 文件 hflush()莺债、hsync() 為空操作,直接返回签夭。
  4. 由于上述第三點(diǎn)限制齐邦,并非所有業(yè)務(wù)都能使用實(shí)時 EC,此時只能使用離線 EC第租,具體即:

    1. 需要明確業(yè)務(wù)是否會使用 append 追加寫入方式措拇,如果會,則該業(yè)務(wù)的目標(biāo)目錄不能配置 EC慎宾,一般情況下丐吓,很少有業(yè)務(wù)會使用追加寫浅悉。
    2. 需要明確業(yè)務(wù)是否對 hflush、hsync 等有強(qiáng)需求券犁,如果有术健,則該業(yè)務(wù)的目錄不能配置 EC,一般情況下粘衬,很少有業(yè)務(wù)會對此有強(qiáng)需求荞估。 hflush() 和 hsync() 的主要用途是在業(yè)務(wù)進(jìn)程意外崩潰的情況下,確保 hflush()稚新、hsync() 之前的數(shù)據(jù)已固化勘伺,但在實(shí)際使用過程中,如果業(yè)務(wù)進(jìn)程異常崩潰褂删,則它正在寫入的文件無法確保完整性飞醉,此時正常的流程應(yīng)該是讓業(yè)務(wù)重跑,重新生成正確的文件屯阀。
  5. 如果業(yè)務(wù)使用離線 EC缅帘,那么此時的問題是:

    1. 離線 EC 需要等待數(shù)據(jù)變冷之后,再將副本文件轉(zhuǎn)換為 EC 文件蹲盘,在此之前股毫,客戶端仍然只能用副本方式讀寫。
    2. 離線 EC 完成后召衔,客戶端可以使用 EC 方式讀取數(shù)據(jù)铃诬,此時才能享受到加速效果。
    3. 離線 EC 完成后苍凛,生成的 EC 文件不支持 append 追加寫入趣席。
  6. 總結(jié)

    1. EC 基本可以認(rèn)為是為此場景量身定制,完全滿足需求醇蝴。
    2. 有 append 和 hflush()宣肚、hsync() 需求的業(yè)務(wù),只能使用離線 EC. 業(yè)務(wù)一般情況下不會對 hflush()悠栓、hsync()有強(qiáng)需求霉涨,因此需要重點(diǎn)關(guān)注 append。

附:分別從清遠(yuǎn)惭适、深圳笙瑟、重慶,通過副本方式癞志、EC方式訪問清遠(yuǎn) HDFS 集群對比:

可以看到:

  1. 同機(jī)房的讀寫速度肯定是最高的往枷,這個確定無疑。
  2. 從重慶訪問清遠(yuǎn) HDFS 集群時,相比從深圳訪問错洁,其 IO 速度大概只有 1/3 -1/2秉宿。
  3. 客戶端和集群之間的網(wǎng)絡(luò)延遲較高時,EC 的 IO 速度大概是副本的 4-5倍(三副本對比 6+3 EC屯碴,前提是帶寬夠用描睦,沒有打滿)。
  4. 綜上所述窿锉,異地 EC 讀寫的速度可以基本可以打平本地副本讀寫速度酌摇。

類 distcp 方案(即:在文件級別實(shí)現(xiàn)并發(fā) put/get膝舅,不太推薦)

模仿 distcp嗡载,在文件級別并發(fā)執(zhí)行 put/get,舉例:針對100個文件仍稀,啟動10個線程負(fù)責(zé) put/get洼滚,每個線程平均負(fù)責(zé)10個文件,相比于單線程技潘,速度可以有10倍提高遥巴。

優(yōu)勢

  1. 不需要額外啟用 EC,distcp 對 EC 文件和副本文件都可用享幽。
  2. 并發(fā)強(qiáng)度可以靈活配置铲掐。

劣勢

  1. 只能以命令行的方式提供,供管理員手動執(zhí)行值桩。如果業(yè)務(wù)直接調(diào)用 FileSystem API摆霉,則無效,此時依然只能使用老的單線程寫入奔坟、讀取携栋。
  2. 有一定的編碼工作量。

重構(gòu) HDFS 客戶端方案(即:在 HDFS 流水線級別實(shí)現(xiàn)并發(fā)讀寫,直接否決)

縱觀業(yè)界的存儲方案咳秉,無論是 Ceph婉支,Ozone 等等,無一例外是使用 master 副本 + slave 副本 的方式來保證數(shù)據(jù)的強(qiáng)一致性澜建,基本沒有像 HDFS 這樣使用流水線機(jī)制的向挖,原因也很簡單:流水線機(jī)制實(shí)在過于復(fù)雜,實(shí)現(xiàn)難度炕舵、錯誤處理與恢復(fù)復(fù)雜度何之、后續(xù)維護(hù)難度等都太大,社區(qū)對這部分代碼的修改一直都是持非常謹(jǐn)慎的態(tài)度幕侠,現(xiàn)在如果要對流水線機(jī)制動刀的話帝美,風(fēng)險太大,承受不起。

如果要強(qiáng)行去做這件事情悼潭,那么庇忌,幾個重大的修改點(diǎn)是:

  1. 客戶端和 DN 之間,不能再像現(xiàn)在這樣舰褪,只使用一個 socket 來傳輸數(shù)據(jù)皆疹,而是需要同時使用多個 socket 并行傳輸,例如每個 socket 傳輸一個 HDFS packet占拍。需要注意的是略就,如果只是多線程使用一個 socket,那沒有任何意義晃酒,因?yàn)樵谶@種高網(wǎng)絡(luò)時延的條件下表牢,無論是單線程還是多線程,都會在瞬間打滿客戶端的 socket 發(fā)送緩存,然后陷入等待,所以必須同時使用多個 socket 并行傳輸數(shù)據(jù)胯陋。

  2. 使用多個 socket 并行傳輸數(shù)據(jù)時赘来,需要考慮到多個 packet 的亂序和重排,以及某個 packet 丟失之后的處理等等,類似于迅雷的多線程并發(fā)下載技術(shù)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
禁止轉(zhuǎn)載,如需轉(zhuǎn)載請通過簡信或評論聯(lián)系作者堰燎。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市笋轨,隨后出現(xiàn)的幾起案子秆剪,更是在濱河造成了極大的恐慌,老刑警劉巖翩腐,帶你破解...
    沈念sama閱讀 218,284評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件鸟款,死亡現(xiàn)場離奇詭異,居然都是意外死亡茂卦,警方通過查閱死者的電腦和手機(jī)何什,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,115評論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來等龙,“玉大人处渣,你說我怎么就攤上這事≈肱椋” “怎么了罐栈?”我有些...
    開封第一講書人閱讀 164,614評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長泥畅。 經(jīng)常有香客問我荠诬,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,671評論 1 293
  • 正文 為了忘掉前任柑贞,我火速辦了婚禮方椎,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘钧嘶。我一直安慰自己棠众,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,699評論 6 392
  • 文/花漫 我一把揭開白布有决。 她就那樣靜靜地躺著闸拿,像睡著了一般。 火紅的嫁衣襯著肌膚如雪书幕。 梳的紋絲不亂的頭發(fā)上新荤,一...
    開封第一講書人閱讀 51,562評論 1 305
  • 那天,我揣著相機(jī)與錄音按咒,去河邊找鬼迟隅。 笑死,一個胖子當(dāng)著我的面吹牛励七,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播奔缠,決...
    沈念sama閱讀 40,309評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掠抬,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了校哎?” 一聲冷哼從身側(cè)響起两波,我...
    開封第一講書人閱讀 39,223評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎闷哆,沒想到半個月后腰奋,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,668評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抱怔,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,859評論 3 336
  • 正文 我和宋清朗相戀三年劣坊,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屈留。...
    茶點(diǎn)故事閱讀 39,981評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡局冰,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出灌危,到底是詐尸還是另有隱情康二,我是刑警寧澤,帶...
    沈念sama閱讀 35,705評論 5 347
  • 正文 年R本政府宣布勇蝙,位于F島的核電站沫勿,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜产雹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,310評論 3 330
  • 文/蒙蒙 一烫罩、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧洽故,春花似錦贝攒、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,904評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至荒适,卻和暖如春梨熙,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背刀诬。 一陣腳步聲響...
    開封第一講書人閱讀 33,023評論 1 270
  • 我被黑心中介騙來泰國打工咽扇, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人陕壹。 一個月前我還...
    沈念sama閱讀 48,146評論 3 370
  • 正文 我出身青樓质欲,卻偏偏與公主長得像,于是被迫代替她去往敵國和親糠馆。 傳聞我的和親對象是個殘疾皇子嘶伟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,933評論 2 355

推薦閱讀更多精彩內(nèi)容