1. 程式人生 > >Hadoop hdfs 引數設定

Hadoop hdfs 引數設定

(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%: