改变hadoop中的复制因子

改变hadoop中的复制因子,hadoop,hdfs,Hadoop,Hdfs,我正在用hadoop做一些实验。为此,我必须使用一些配置选项,如块的大小和复制因子。 对于复制因子,我尝试了以下命令: $HADOOP_HOME/bin/hadoop fs -setrep -w -R $var input 其中“input”是我想要更改其复制因子的文件,$var表示我想要的复制因子 当$var=1时,它工作。否则,将产生以下错误: Replication 2 set: input Waiting for input...............................

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

$HADOOP_HOME/bin/hadoop fs -setrep -w -R $var input
其中“input”是我想要更改其复制因子的文件,$var表示我想要的复制因子

当$var=1时,它工作。否则,将产生以下错误:

Replication 2 set: input
Waiting for input..............................................................
..................................
并不断不确定地增加分数。 我能做什么?

使用可选选项“-w”可能需要很多时间。。因为你说的是等待复制完成。这可能需要很长时间

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

要检查复制是否已完成

hadoop fsck/path/to/file


上面的命令显示了块的数量、块的位置以及文件的更多详细信息。

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

您的集群有多少个数据节点?我以伪分布式模式运行Hadoop,因此我猜我的集群只有1个datanodeWell,首先您需要多台机器,多台物理机或一台物理机上的多个虚拟机。如果您选择VMs路线,您可能需要一台功能强大的主机,或者您可以在Amazon云上构建一个弹性MapReduce集群。