starrycheng 发表于 2013-10-25 10:45:20

修改dfs.replication之后,什么时候会起作用?什么时候会修改旧的block的备份?

如题

cryst2l 发表于 2013-10-25 10:45:20

自己动手,丰衣足食
修改dfs.replication之后,对dfs中已经存在的文件不会自动重新修改备份,但对之后加入的文件会自动做好备份。
如果要修改之前的文件备份,可以用 hadoop fs -setrep -R   方式来修改file文件的备份。

jooli 发表于 2013-10-25 10:45:20

回复 2# 若冰
images/smilies/default/better.gif
若冰的分享精神赞一个
images/smilies/default/flowers.gif

fylanyu 发表于 2013-10-25 10:45:20

回复 2# 若冰
    修改replication以后副本数目发生了变化,在修改以后存入的文件副本数自然和replication相等,但是对于以前的文件来说,一定要用命令强制改变副本数目么吗?HDFS的机制不是会有线程定期检查副本数,然后异步备份或删除么吗?

xiaolongwu1987 发表于 2013-10-25 10:45:20

HDFS的机制不是会有线程定期检查副本数,然后异步备份或删除么吗?
这个定期是多长时间啊吗?
我之前也以为会自动检查备份的,但来回试了几次都不见效。
后来看hadoop的shell说明中看到是这么上面那样解释的,而且试用成功了。

skaterxu 发表于 2013-10-25 10:45:20

回复 5# 若冰
    哦,我没有试过。但是如果文件很多,通过命令强制改变每个文件的副本数对于管理员来说就麻烦了吧。HDFS对于副本数目不够的情况是会自己备份的,那么按理说也会在replication值改变以后做同样的工作。至于时间间隔是3秒,在hadoop-default.xml里面有定义。
dfs.replication.interval
3
The periodicity in seconds with which the namenode computes repliaction work for datanodes.
但是NN检查完到给适当的DN发命令去拷贝,这个时间就不清楚了。

top_gloria 发表于 2013-10-25 10:45:20

每三秒算一次replication,
如果上个internal 一个datanode 死掉了,就找出所有在这个datanode上的block,然后把这些block做一个备份,并分配到其他的datanode上吗?

nextuser 发表于 2017-9-11 14:55:37

ReplicationMonitor该类是一个FSNameSystem内部类,负责清理无效块、维护副本数的一个线程.主要由两个函数来实现:
computeDatanodeWork();主要用来计算需要复制或清理的块
processPendingReplications();这个函数用来计算数据块的源节点和目的节点,
* 更新源节点的replicateBlocks,从而告知源节点要把块往哪里复制

时间由参数设置:
默认每3s执行一次,可以通过修改dfs.replication.interval来调整执行间隔


页: [1]
查看完整版本: 修改dfs.replication之后,什么时候会起作用?什么时候会修改旧的block的备份?