随着hadoop集群数据量增大,以及机器的不断扩容,修改副本数量几乎是经常要做的事情了
1.配置dfs.replication
dfs.replication是client参数,修改后只有新加入的数据才会采用这个副本数量,这个就相当于一个通用的参数hdfs-site.xml
dfs.replication
2
2.查看副本数量#hdfs fsck /user
....Status: HEALTHY
Total size:443004172861 B (Total open files size: 760229081 B)
Total dirs:19362
Total files:133928
Total symlinks:0 (Files currently being written: 7)
Total blocks (validated):132492 (avg. block size 3343629 B) (Total open file blocks (not validated): 11)
Minimally replicated blocks:132492 (100.0 %)
Over-replicated blocks:0 (0.0 %)
Under-replicated blocks:79262 (59.82399 %)
Mis-replicated blocks:0 (0.0 %)
Default replication factor:1
Average block replication:1.4017601
Corrupt blocks:0
Missing replicas:79262 (29.911995 %)
Number of data-nodes:5
Number of racks:1
FSCK ended at Thu Aug 15 15:34:42 CST 2019 in 33910 milliseconds
可以看出 Average block replication 为 1.4,这是你指定目录下平均的副本数,因为不同的文件可能会有不同的副本数
3.手动修改在线副本数
不同目录重要程度不一样,可能会需要分别调整副本数量,修改dfs.replication后要生效,也需要手动调整副本数
调整副本数的命令:hdfs dfs -setrep -R -w 3 /user/
命令执行完需要很长时间,就算执行完也不一定 副本数全部就改了,只是标记了目标副本数
通过hdfs fsck /user可以查看该目录实时的副本数,可能你每次查看都回发现Average block replication正在增加或减少。这是因为后台正在根据标记的副本数物理的增减文件。
另外:上传文件的时候也可以指定副本数量 Hadoop dfs -D dfs.replication=1 -put 70M logs/2