hadoop hdfs 修改副本备份数量

hadoop | 2019-10-08 15:45:04


随着hadoop集群数据量增大,以及机器的不断扩容,修改副本数量几乎是经常要做的事情了


1.配置dfs.replication

dfs.replication是client参数,修改后只有新加入的数据才会采用这个副本数量,这个就相当于一个通用的参数

hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>2</value>
</property>


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


登录后即可回复 登录 | 注册
    
  • admin
    admin

    设置dfs.replication并不会在已有应用中生效,该属性只对新建文件时副本属未指定时取作用,如果想改变已有文件副本,需要使用修改副本语句 hadoop fs -setrep [-R] [-w] <rep> <path/file>

关注编程学问公众号