put命令时死亡

e5nqia27  于 2021-06-03  发布在  Hadoop
关注(0)|答案(3)|浏览(390)

我有一个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,使其无限大。请给我一些建议。这件事我已经耽搁了好几天了

8yoxcaq7

8yoxcaq71#

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

lb3vh1jj

lb3vh1jj2#

找到解决办法了。问题出在硬件上。虽然我的网卡是千兆位的,但所有节点都插在交换机上,支持100mbps。把开关换成千兆,工作得很好。

vsnjm48y

vsnjm48y3#

我面对一个笑脸的问题 -copyFromLocal 它解决了这个问题。
小时 adoop fs -copyFromLocal localfile /user/root/tmp/input

相关问题