相信很多朋友曾经都遇到过这个问题,最近也是被这个错误折磨的怀疑人生。在执行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文章来源:https://www.toymoban.com/news/detail-762461.html
dd if=/dev/zero of=test bs=8k count=256k conv=fdatasync //测试命令
所以最后总结,就是在一个stage完成后,datanode22宕机导致该错误的发生,解决该问题也很简单,有问题的节点改下yarn配置,只让执行一个map或者reduce。文章来源地址https://www.toymoban.com/news/detail-762461.html
到了这里,关于java.net.NoRouteToHostException No route to host的排查与解决思路分享的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!