在hadoop中更改复制因子

时间:2015-11-11 16:06:03

标签: hadoop hdfs

我正在用hadoop做一些实验。为此,我必须使用一些配置选项,如块的大小和复制因子。 对于复制因子,我尝试了这个命令:

$HADOOP_HOME/bin/hadoop fs -setrep -w -R $var input

其中“input”是我想要更改复制因子的文件,$ var表示我想要的复制因子。

当$ var = 1时,它有效。否则,它会产生以下错误:

Replication 2 set: input
Waiting for input..............................................................
..................................

并继续无限地添加积分。 我该怎么办?

2 个答案:

答案 0 :(得分:2)

由于您只有一个数据节点,因此HDFS无法满足您的请求。 -w标志意味着等待复制完成,这是永远不会发生的。 Hadoop仅在每个节点上保留一个副本,因此单个节点无法实现大于1的复制因子。

答案 1 :(得分:0)

使用可选选项" -w"可能需要很多时间..因为你要等待复制完成。这可能需要很长时间。

  • 这取决于您设置复制因子的文件大小
  • 当$ var = 1时,它只需要删除不同节点上的剩余副本(假设你的是多节点集群)
  • 当$ var值大于现有值时,需要花费很多时间,因为namenode必须查找哪个datanode是空闲的并准备接受副本并且必须复制该文件。
  • 如果群集正忙于运行任何其他复制操作,这也可能导致延迟


检查复制是否完成....

  

hadoop fsck / path / to / file

上面的命令显示了块的数量,块的位置以及文件的更多细节。