java.net.NoRouteToHostException No route to host的排查与解决思路分享

文章讲述了作者在使用HiveSQL时遇到NoRouteToHostException的问题,经排查发现是由于HadoopDatanode22节点在执行任务时频繁宕机,心跳时间过长,且磁盘写入性能异常。解决方法是调整YARN配置,限制每个节点同时执行的container数量。
摘要由CSDN通过智能技术生成

相信很多朋友曾经都遇到过这个问题,最近也是被这个错误折磨的怀疑人生。在执行HiveSQL的时候总是时不时报错,could not find status of job

在这里插入图片描述
然后进入yarn的日志里面,发现具体的错误为No route to host

在这里插入图片描述
其实这个错误首先看起来是很明确的,没有主机的路由,经过网上查询,总结起来有这么3个原因:

1、对方的域名确实不通
2、本机开了防火墙
3、etc/hosts 里面没有配置本机的机器名和ip

但是很显然,这都是一些比较低级的错误,简单排查一下并不是这些原因。其实这个问题以前也发生过,但是发生的频率是极其低的,导致不能复现,二是也没有太好的办法,就单单一个No route to host有点无从下手,所以一直以来都没有搞清楚到底是什么原因。

但是最近频率变得非常高,在很多次的复现过程中,发现一个重要的信息,好像每次都是同样一台主机。

No Route to Host from  datanode22 to namenode2:9820 failed on socket timeout exception: java.net.NoRouteToHostException: No route to host

那问题肯定就出在这个datanode22中了,经过简单的测试发现,在HiveSQL的执行过程中,hadoop的心跳时间经常很大,整个hadoop集群的心跳超时时间设置为600S(这个值设置的非常大,其实是有点不合理的),在web页面上能看见该节点的last contact为三百多秒,和宕机差不多。

随后经过测试,发现datanode22节点一旦启动两个或以上的container,就会极大概率宕机,然后在任务执行完成或失败后恢复正常。

这种情况有可能是磁盘也有可能是cpu,随后用dd命令简单测试了下磁盘的实时写入性能,发现只有5M,这肯定不正常,因为另外一台节点有100M

dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync //测试命令

所以最后总结,就是在一个stage完成后,datanode22宕机导致该错误的发生,解决该问题也很简单,有问题的节点改下yarn配置,只让执行一个map或者reduce。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值