Hadoop hdfs 引數設定
阿新 • • 發佈:2019-01-08
(1)dfs.replication
指定hdfs上傳檔案時的副本數,預設是3。
分散式系統上的檔案副本數,由上傳時的系統副本數決定,不會受後面replication的更改而變化,除非用命令來更改檔案的副本數。
因為dfs.replication實質上是client引數,所以可以在上傳檔案時指定具體replication數量,屬性dfs.replication是不指定具體replication時的採用預設備份數,因為dfs.replication這個引數是個client引數,即node level引數,需要在每臺datanode上設定。其實預設為3個副本已經夠用了,設定太多也沒什麼用。
檔案上傳後,備份數已定,修改dfs.replication不會影響以前的檔案副本數量,也不會影響後面上傳檔案時指定備份數的檔案,隻影響後面採用預設備份數的檔案。
在上傳檔案的同時指定建立的副本數
[kaadmin@oceanbase06 ~]$ hdfs dfs -D dfs.replication=1 -put ord_pay.csv /lijk
[kaadmin@oceanbase06 ~]$ hdfs dfs -D dfs.replication=3 -put test1.txt /lijk
[kaadmin@oceanbase06 ~]$ hdfs dfs -ls /lijk
Found 2 items
-rw-r--r-- 1 kaadmin supergroup 4128 2018-07-06 10:40 /lijk/ord_pay.csv
-rw-r--r-- 3 kaadmin supergroup 240 2018-07-06 15:27 /lijk/test1.txt
可以通過命令來更改已經上傳的檔案的副本數:
-- hadoop fs -setrep -R 3 / 修改整個目錄下所有檔案
[kaadmin@oceanbase06 ~]$ hdfs dfs -setrep 3 /lijk/ord_pay.csv
Replication 3 set: /lijk/ord_pay.csv
[kaadmin@oceanbase06 ~]$ hdfs dfs -ls /lijk
-rw-r--r-- 3 kaadmin supergroup 4128 2018-07-06 10:40 /lijk/ord_pay.csv
檢視當前hdfs的副本數
hdfs fsck -locations
[kaadmin@oceanbase06 ~]$ hdfs fsck /
FSCK started by kaadmin (auth:SIMPLE) from /192.168.0.156 for path / at Fri Jul 06 15:31:01 CST 2018
.............................................................................................Status: HEALTHY
Total size: 21314523438 B
Total dirs: 10
Total files: 93
Total symlinks: 0
Total blocks (validated): 237 (avg. block size 89934698 B)
Minimally replicated blocks: 237 (100.0 %)
Over-replicated blocks: 0 (0.0 %)
Under-replicated blocks: 0 (0.0 %)
Mis-replicated blocks: 0 (0.0 %)
Default replication factor: 1 #預設設定的副本數是1
Average block replication: 1.0168777 #由於修改了幾個小檔案的副本數,所以平均每個block的副本書略微大約1
#如果所有檔案的副本書都是1,則此引數的值為1
Corrupt blocks: 0
Missing replicas: 0 (0.0 %)
Number of data-nodes: 3
Number of racks: 1
FSCK ended at Fri Jul 06 15:31:01 CST 2018 in 6 milliseconds
The filesystem under path '/' is HEALTHY
某個檔案的副本數,可以通過ls中的檔案描述符看到
[kaadmin@oceanbase06 ~]$ hdfs dfs -ls /lijk
Found 2 items
-rw-r--r-- 1(副本數) kaadmin supergroup 4128 2018-07-06 10:40 /lijk/ord_pay.csv
-rw-r--r-- 3(副本數) kaadmin supergroup 240 2018-07-06 15:27 /lijk/test1.txt
如果你只有3個datanode,但是你卻指定副本數為4,是不會生效的,因為每個datanode上只能存放一個副本。
hadoop fsck -locations 可以看到相應的提示資訊,可以看到副本丟失率(Missing replicas)為33.33%: