HDFS寫入資料為什麼不直接分發給三個節點?

時間 2021-06-06 23:20:04

1樓:莉格露·奈特巴格

理論上是可以的,並且許多現代檔案系統已經支援 dispatch write了(比如 Google Colossus)。

過去 GFS 和 HDFS 只支援 pipeline write 是因為分發寫很容易打滿客戶端網路的頻寬,現在萬兆網絡卡已經普及了,許多分布式檔案系統做設計決策的時候也傾向於支援分發寫了,這種方式結合quorum能提供更低的寫延遲。

2樓:Scott

因為HDFS開始流行的時候大多數資料中心的機器有100M網絡卡就不錯了,直接同時分發三節點很容易就把這台機器網絡卡打滿,這台機器上其它任務就可能因此失敗。

就算機器配置上去,現在這種傳遞資料的做法也比同時寫三颱來得穩妥。

3樓:張云聰

HDFS資料寫入時是將資料先寫入第乙個節點,然後第一節點寫給第二節點,然後第二節點寫給第三節點,然後寫入才完成。

如果是同步的,每次寫操作都必須要等待第三個節點寫完並返回成功後才能寫下一條資料,那麼確實和直接分發給三個節點是一樣的。

如果寫給第乙個節點後,write即可返回,進行下一次寫操作了。這時,第乙個節點一邊在給下乙個節點寫資料,一邊在接收client傳來的資料。同時利用了輸入輸出頻寬。

假設每次從乙個節點寫一包資料到另乙個節點耗時是t,而整個檔案有n個這種資料報,則整體寫入耗時為: (n + 2) * t,而直接分發給三個節點的耗時為 3 * n * t

實際上,hdfs write的時候只需要把資料寫到緩衝區就可以返回進行下一條寫操作了,連寫成功第乙個節點都不必要,真正計算起來基本上就是資料大小/網路頻寬 + 3 * 網路傳輸時延了。

不要被逆向ack傳遞給誤導了,確實ack是逆向傳遞,三個節點都ack,乙個包才算ack,但這並不影響我把資料放到緩衝區裡就可以發下一條資料了——跟TCP/IP協議很像。之前剛入行分布式時,就聽前輩說過,做分布式系統,好多時候就是把TCP/IP協議重新實現了一遍。現在來看,確實很有道理。

越南為什麼不直接吞併寮國?

已登出 1977年,越南入侵了實力比較弱小的寮國,簽訂了為期25年的 老越友好合作條約 根據該條約,寮國人民革命黨的黨政,接受越南共產黨的領導。對外關係上兩國將保持態度和政策的一致性。當時寮國軍隊4萬,越南駐軍6萬,寮國其實就是越南的附屬國。寮國吞併是小事,但是在吞併柬埔寨的時候,中國發動了對越自衛...

龍珠為什麼不直接毀滅行星

奧特瓜 滅過啊 第乙個滅星的是龜仙人吧,只是我們不知道月亮上有沒有人 後期戰力膨脹沒法畫了 不然龜仙人能碎月球,戰鬥力過千就算爆不了地球也能半廢吧 不必多想,龍珠超大王不知直接炸了地球麼 負棺者 不令王 電影 龍珠Z F的復活 裡,弗里薩在最後爆了個地球 然後呢 大家一起玩完兒唄。你在覺得自己能把對...

為什麼佛不直接顯靈教化?

小珂 因為佛法本來就是心法,著相就不是佛法了。佛會顯靈,魔也會顯靈,妖精鬼怪都會變成佛你分得清嗎?另外,無論魔也好,精怪也罷,都具有佛性,都是未來佛。佛不會硬剛,不要用你的心性去揣摩佛的心性,一切隨緣而已。 HAHA 成佛涅槃都是示現,為了教化眾生。釋迦佛並沒有離開娑婆世界,而是因緣示現,應機示現,...