2014-03-07 16 views
1

我设置一个HDFS集群,其具有一个主站(名称节点)和两个从站(数据节点)如果我在只有两个datanode的集群中停用datanode之一,该怎么办?

和dfs.replication被设定为“2”

所以每块将被在两个复制奴隶和奴隶中的文件都是一样的。

我的问题是,如果我想退役两个奴隶之一,它总是显示“退役进行中”,但并没有被复制的文件(使用SAR到箴言报网络)

所以我如果集群只有两个datanode,并且复制设置为“2”,则不能停用任何datanode,因为如果我停用任何节点,则只剩下一个节点,因此该文件不能复制2.

你是否这么认为?

+1

你的实验显示了什么?我们有一个复制计数为2的数据节点,并将下列属性“dfs.client.block.write.replace-datanode-on-failure.enable”设置为“false”,以避免节点故障时作业失败。 – Vishal

回答

0

我认为集群中的复制因子为2,如果您退役了一个数据节点,那么hadoop将识别为一个数据节点的崩溃,并将继续与数据节点一起工作。但是,如果将来将节点放回集群,hadoop将开始将文件复制到该节点。

因此,您可以在集群中只有一个节点时拥有复制因子2,它不会妨碍hadoop的工作。

+0

我认为提交作业后,如果我退役了一个节点,那么它会工作,因为你在说。但是在完成这些工作之后,如果提交了新工作,那么在提交时可能会出现错误,说“只有一个datanode,复制因子是2”(有点像这样)...?纠正我,如果我错了... –

相关问题