我有一个带有1个master(运行namenode和jobtracker)和2个slave(每个都运行datanode和tasktracker)的hadoop集群。现在每当我执行
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以使其无限。请提出任何建议。我已经坚持了几天
答案 0 :(得分:0)
尝试使用" distCp"复制大数据。
答案 1 :(得分:0)
得到了解决方案。问题出在硬件上。虽然我的NIC卡是千兆位,但所有节点都插入的交换机支持100MBps。将交换机更改为千兆位,工作得非常好。
答案 2 :(得分:-1)
我遇到了类似的问题,我使用-copyFromLocal
代替-put,它解决了问题。
ħadoop fs -copyFromLocal localfile /user/root/tmp/input