启动异常-java.net.UnknownHostException
异常描述:
Unable to set localhost. This prevents creation of a GUID. Cause was: iagtv5-64745dfd86-qr9z5: ibook5-64745dfd86-qr9z5: Temporary failure in name resolution
java.net.UnknownHostException: ibook5-64745dfd86-qr9z5: iagtv5-64745dfd86-qr9z5: Temporary failure in name resolution
Caused by: java.net.UnknownHostException: ibook5-64745dfd86-qr9z5: Temporary failure in name resolution
org.quartz.SchedulerException: Couldn't get host name!
报错暂时解析不了 ibook5-64745dfd86-qr9z5 这个名称。
报错原因分析:
这里是最开始采用项目打jar包+外部挂载hosts映射文件部署方式,当时是因为连接hive进行Kerberos认证需要映射,故把映射信息通过外部挂载方式加到/etc/hosts中,但是后来测试证明了这种挂载方式会把容器原自动生成的ibook5-64745dfd86-qr9z5(hostname) 映射关系给覆盖掉,因为项目中有使用监控模块,在项目启动时需要读取主机信息,而覆盖后的/etc/hosts文件中没有hostname的映射关系,所以报错找不到主机名。
解决办法:
①如果项目不是容器化部署,可以通过在/etc/hosts中添加映射关系解决。
②如果是容器化部署方式,这里的外部挂载方式,也不是在源文件基础上追加信息的情况下,采用tomcat容器+打war包部署方式,在tomcat/bin/catalina.sh脚本中,把需要的hive连接的映射给加到/etc/hosts文件中;但启动Tomcat时,会通过执行catalina.sh脚本来启动,这个时候就能够把映射关系加进去。
啥,你以为就这样就完了吗?我遇到的可是一大堆报错哦!
哦,不是啊!啥?你也遇到很多报错啊!来看看下面这个报错及解决汇总文章: