hadoop檔案系統中檔案複本的預設布局

2021-09-02 02:49:41 字數 1048 閱讀 1285

最近一有時間就在補資料結構和學hadoop上的知識,今天看了一下hadoop中的hdfs(分布式檔案系統)中是怎麼將檔案寫入hdfs中的,在將檔案寫入hdfs的時候有一件事情也在發生,就是檔案複本的寫入,這就又要牽扯到乙個東西,就是檔案複本的布局,今天就來談談檔案的複本在datanode上是怎麼個布局法。

首先來說說檔案複本是什麼,其實從字面上也就知道了,其實他就是我們寫入檔案一模一樣的東西,就是把檔案複製了幾份,在hadoop中一般情況下複製數量是3份(這3個複本的datanode分布好後會構成乙個管線)。為什麼要複製了?就是為了防止資料丟失,當 乙個datanode上的資料丟失或者損壞後,其他的節點上還有複本,就是為了這樣才有了複本的出現。

我們知道,namenode是領導,它負責統籌規劃,因此資料塊和 它們的複本分配到哪個datanode上也要聽從他的指揮。它也不是隨便亂分配的,它需要在」可靠性「,」寫入寬頻 「和」讀取寬頻「之間來權衡好。如果把所有的複本都寫在乙個datanode上的話,它的」寫入寬頻「最小,這個想也想得出,它不用把資料傳出去嘛,它的複製管線都是在單一的節點上執行,但是這樣如果該節點發生了故障,塊中的資料就會丟失,也就是它不提供真實的」冗餘「,  還有雖然它的」寫入寬頻很小「但是在同一機架上」讀取寬頻「很高,另一方面,把他們放在不同的資料中心,那樣可以最大限度的提高冗餘,但是寬頻的損耗非常大。

hadoop的預設布局策略是在執行客戶端的節點上放第1個複本(如果客戶端執行在集群之外,就隨機的選擇乙個節點,但是系統會避免挑選那些儲存太滿或太忙的節點)。第2個複本放在與第1個不同且是隨機選擇的另外的機架中的節點上。第3個複本與第2個複本放在同乙個機架上面,且是隨機選擇的乙個節點,其他的複本放在集群中隨機選擇的節點上面,但是系統會盡量避免在相同的機架上面放太多的複本。

一旦選定了複本的放置的位置,就會根據網路拓撲建立乙個管線,如下圖為乙個典型的複本管線:

總的來說,這一方法不僅提供了很好的穩定性,資料不容易丟失(資料塊儲存在兩個機架中)同時實現了很好的負載均衡,包括寫入寬頻(寫入操作只要遍歷乙個交換機),讀取效能(可以從兩個機架中進行選擇讀取)和集群中塊的均勻分布(客戶端只在本地機架寫入乙個塊)。

ps:以上的內容參考自《hadoop 權威指南》。

Hadoop 檔案系統(HDFS)

磁碟傳輸速率100m s,定址時間10ms,讓定址時間是傳輸時間的1 所以塊的大小為 100 0.01s 100m s 100m 128m 在 hdfs default.xml 中搜尋dfs.blocksize,可以修改大小 檔案上傳 檢查檔案block的狀態 由上可見,狀態是健康的 啟動所有資料節...

hadoop獲取檔案系統介面

hadoop提供了許多檔案系統的介面,使用者可以使用url方案選取合適的檔案系統來實現互動。fs.localfilesystem 客戶端校驗和本地檔案系統hdfs.distributionfilesystem hadoop分布式檔案系統hdfs.hftpfilesystem 支援http通過唯讀的方...

HADOOP檔案系統API練習

合併本地檔案流到hdfs上 public static void write in.close out.close catch ioexception e 增刪改查 public static void hdfstest 列出根目錄下所有檔案和目錄 filestatus files hdfs.lis...