我有一个hadoop集群,有1个主节点(运行namenode和jobtracker)和2个从节点(分别运行datanode和tasktracker)。现在每当我执行
hadoop fs -put localfile /user/root/tmp/input
对于4-8gb的数据,该命令可以完美地执行。
但当我把数据增加到30gb时,其中一个奴隶就死了。如中所示,我得到一个java.io.noroutetohost异常,命令退出失败。我立即ping了那个从机,发现连以太网连接都断了。所以我必须手动操作
ifup eth0
让那个奴隶把主人带上来。我在这里搞不懂这个问题。我还更改了以下属性
dfs.socket.timeout, for read timeout
dfs.datanode.socket.write.timeout, for write timeout
我将读取超时增加到600000,将写入超时更改为0,使其无限大。请给我一些建议。这件事我已经耽搁了好几天了
3条答案
按热度按时间8yoxcaq71#
尝试使用“distcp”复制大数据。
lb3vh1jj2#
找到解决办法了。问题出在硬件上。虽然我的网卡是千兆位的,但所有节点都插在交换机上,支持100mbps。把开关换成千兆,工作得很好。
vsnjm48y3#
我面对一个笑脸的问题
-copyFromLocal
它解决了这个问题。小时
adoop fs -copyFromLocal localfile /user/root/tmp/input