1. 程式人生 > >HDFS上文件塊的副本數設置

HDFS上文件塊的副本數設置

分割 rep 目錄 .html 配置 fsd lan ren 增加

一、使用 setrep 命令來設置

# 設置 /javafx-src.zip 的文件塊只存三份
hadoop fs -setrep 3 /javafx-src.zip

二、文件塊在磁盤上的路徑

# 設置的 hdfs 目錄為
/opt/hadoop-tmp/ # hdfs 文件塊的路徑為 /opt/hadoop-tmp/dfs/data/current/BP-362764591-192.168.8.136-1554970906073/current/finalized/subdir0/subdir0

技術分享圖片

三、文件的分割

文件大小 < 塊設定值,文件不會被切割,直接存放到 hdfs 上,占用磁盤的空間就是文件大小
文件大小 > 塊設定值,文件被切割為塊大小的 N 份文件,最後一份不夠塊大小也上面一樣,只占用本身大小的磁盤空間

下圖可以看到該文件副本為 3 份,分別存放在 h140、h138 和 h136 三臺機器上

技術分享圖片

四、改變副本數後的文件的變化

# 減少,會隨機刪除一個機器上的文件塊,這裏是刪除了 h136 上的
hadoop fs -setrep 2 /javafx-src.zip

技術分享圖片

# 增加,由於只配置了三臺機器無法截圖
# 分兩種情況:
# 機器數量 >= 副本數,會把所有文件塊復制到新節點
# 機器數量 <  副本數,會等有新節點增加再執行復制操作,一直到達副本數為止
# 文件塊的副本數儲存在 NameNode 上
hadoop fs -setrep 5 /javafx-src.zip


http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

HDFS上文件塊的副本數設置