(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%:
本文介绍了Hadoop HDFS中dfs.replication参数的设置,该参数用于指定文件上传时的副本数,默认为3。分布式系统上的文件副本数在上传时确定,之后修改该参数不会影响已上传文件,仅影响后续使用默认副本数的新文件。
5594

被折叠的 条评论
为什么被折叠?



