0

我有一个 hadoop 集群,有 1 个 master(运行 namenode 和 jobtracker)和 2 个 slave(每个运行 datanode 和 tasktracker)。现在每当我执行

hadoop fs -put localfile /user/root/tmp/input

对于 4-8 GB 的数据,该命令可以完美执行。

但是当我将数据增加到 30GB 时,其中一个奴隶死了。正如我得到一个 java.io.noRouteToHost 异常并且命令退出失败。我立即对那个从站进行了 ping 操作,发现甚至以太网连接都断开了。所以我必须手动做

ifup eth0

在该从站上重新启动主机。我无法在这里找出问题所在。我还更改了以下属性

dfs.socket.timeout,  for read timeout
dfs.datanode.socket.write.timeout, for write timeout

我将读取超时增加到 600000 并将写入超时更改为 0 以使其无穷大。请有任何建议。我已经坚持了几天

4

3 回答 3

0

尝试使用“distCp”复制大数据。

于 2012-10-31T15:11:37.823 回答
0

得到了解决方案。问题出在硬件上。虽然我的 NIC 卡是千兆的,但插入所有节点的交换机支持 100MBps。将交换机更改为千兆,并且工作正常。

于 2012-11-02T09:38:41.263 回答
-1

我遇到了一个类似的问题,我使用-copyFromLocal而不是 -put 并解决了这个问题。

Hadoop fs -copyFromLocal localfile /user/root/tmp/input

于 2014-10-23T21:30:44.757 回答