2016-05-12 79 views
2

问题是:我创建群集时有3个datanodes,并且前几天我添加了另外两个datanodes。hadoop datanodes添加新节点后使用太多带宽

我这样做后,我跑了平衡器,平衡器很快完成,并说集群是平衡的。

但是我发现一旦我将数据(大约30MB)放入集群中,datanodes使用大量带宽(大约400Mbps)在旧datanode和新datanode之间发送和接收数据。

有人能告诉我可能的原因是什么?

也许我描述的问题不是很清楚,我会告诉你两张图片(来自zabbix),hadoop-02是“旧datanode”之一,hadoop-07是“新datanode”之一。 enter image description here enter image description here

回答

0

等一下!您说在数据传输过程中带宽被过度利用,或者在放置数据后DN不平衡,因为平衡器用于平衡集群中节点上存在的数据量。

+0

谢谢你的回复!我的意思是在数据传输过程中带宽被过度利用。 – zhaozhi

1
  1. 如果你的意思是网络流量。 Hdfs使用写入管道。假设复制因子为3,数据流是

    客户端 - > Datanode_1 - > Datanode_2 - > Datanode_3

    如果数据大小为30MB,整体流量90MB加上一个小的开销(用于连接创建,包头,数据包中的数据校验和)

  2. 如果您是指流量速率。我相信目前Hdfs在客户端< - > DN和DN < - > DN之间没有带宽限制。它将使用尽可能多的带宽。

如果您发现旧datanode和新datanode之间的数据流量更多。这可能发生在某些块之前未被复制时。在添加新节点后,NameNode定期将复制任务从旧DN调度到其他DN(不一定是新DN)。

+0

感谢您的回复!我的意思是网络流量。我通过以下方法解决了复制块的问题:https://community.hortonworks.com/articles/4427/fix-under-replicated-blocks-in-hdfs-manually.html – zhaozhi

+0

您发布的说明是大错特错。 setrep不修复低复制块。如果该文件已经有3个repls,则设置replFactor = 3将解决复制中的过程。但是如果文件有2个或更少的repl,并且replFactor默认为3,那么设置replFactor = 3是一个noop。它仍然没有被复制。 NameNode将缓慢地将复制任务从旧DN调度到新DN。从你张贴的照片,我更确定我是正确的。我熟悉HDFS代码。 2个DN之间的唯一巨大流量是流水线写入或块复制任务。 – waltersu

+0

继续我以前的评论:平衡器的复制和删除就像块复制。但是你的平衡器很快就完成了。所以我排除了这种可能性,因为复制只发生在平衡器运行时,除非平衡器异常停止。我看到数据流从hadoop-02到hadoop-07。您可能想检查DN日志,看看会发生什么。 – waltersu