您好,登錄后才能下訂單哦!
請參考 上一個 鏈接地址:
hdfs為什么不擅長存儲大量小文件
https://blog.51cto.com/12445535/2354951
概述:namenode replication(復制)
復制
默認塊復制因子(dfs.replication)為3。復制影響磁盤空間但不影響內存消耗。復制會更改每個塊所需的存儲量,但不會更改塊的數量。如果DataNode上的一個塊文件(由NameNode上的一個塊表示)被復制三次,則塊文件的數量將增加三倍,但不會代表它們的塊數。
關閉復制時,一個192 MB的文件占用192 MB的磁盤空間和大約450字節的內存。
//(計算方式為:128+64 也就是1個文件inode+2個塊 3150 大約消耗 450字節的內存)
如果你有一百萬個這樣的文件,或192 TB的數據,你需要192 TB的磁盤空間,而不考慮RPC工作負載,450 MB內存:(100萬inode + 200萬個塊) 150個字節。啟用默認復制后,您需要576 TB的磁盤空間:(192 TB * 3)但內存使用率保持不變,450 MB。當您考慮簿記和RPC,并遵循每百萬個塊1 GB堆內存的建議時,對此方案更安全的估計是2 GB內存(有或沒有復制)。
例子
示例1:估計使用的NameNode堆內存
Alice,Bob和Carl每個磁盤上都有1 GB(1024 MB)的數據,但切成不同大小的文件。 Alice和Bob的文件是塊大小的一部分,需要的內存最少。 Carl沒有用不必要的命名空間對象填充堆。
Alice:1 x 1024 MB文件
????1個文件inode
????8塊(1024 MB / 128 MB)
總計= 9個對象* 150個字節= 1,350個字節的堆內存
Bob:8 x 128 MB文件
????8個文件inode
????8個塊
總計= 16個對象* 150個字節= 2,400個字節的堆內存
Carl:1,024 x 1 MB文件
????1,024個文件inode
????1,024個街區
總計= 2,048個對象* 150個字節= 307,200個字節的堆內存
**計算實例//生產可用 根據已知磁盤大小去計算需要多大的namenode堆內存
示例2:估計所需的NameNode堆內存**
在該示例中,通過考慮群集的容量來估計存儲器。值四舍五入。兩個集群都物理存儲4800 TB或大約3600萬個塊文件(默認塊大小)。復制確定有多少名稱空間塊代表這些塊文件。
群集A:每個24 TB的200個主機= 4800 TB。
????Blocksize = 128 MB,復制= 1
????以MB為單位的群集容量:200 24,000,000 MB = 4,800,000,000 MB(4800 TB)
????每個塊所需的磁盤空間:每塊128 MB 1 =每塊128 MB存儲空間
????塊中的群集容量:4,800,000,000 MB / 128 MB = 36,000,000塊
在容量方面,建議分配每百萬個塊1 GB的內存,群集A需要36 GB的最大堆空間。
群集B:每個24 TB的200個主機= 4800 TB。
????Blocksize = 128 MB,復制= 3
????以MB為單位的群集容量:200 24,000,000 MB = 4,800,000,000 MB(4800 TB)
????每個塊所需的磁盤空間:每塊128 MB 3 =每塊384 MB存儲空間
????塊中的群集容量:4,800,000,000 MB / 384 MB = 12,000,000個塊
在容量方面,建議為每百萬個塊分配1 GB內存,群集B需要12 GB的最大堆空間。
群集A和群集B都存儲相同數量的塊文件。但是,在群集A中,每個塊文件都是唯一的,并由NameNode上的一個塊表示;在群集B中,只有三分之一是唯一的,三分之二是副本。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。