无法启动 Drill:线程异常 "main" org.apache.drill.exec.exception.DrillbitStartupException:无法获取规范主机名

Cannot start Drill: Exception in thread "main" org.apache.drill.exec.exception.DrillbitStartupException: Could not get canonical hostname

在kubernetes集群中运行Apache钻取时,启动后片刻抛出此异常:

Starting drillbit, logging to /opt/drill/log/drillbit.out
Exception in thread "main" org.apache.drill.exec.exception.DrillbitStartupException: Could not get canonical hostname.
    at org.apache.drill.exec.server.BootStrapContext.getCanonicalHostName(BootStrapContext.java:169)
    at org.apache.drill.exec.server.BootStrapContext.<init>(BootStrapContext.java:81)
    at org.apache.drill.exec.server.Drillbit.<init>(Drillbit.java:161)
    at org.apache.drill.exec.server.Drillbit.start(Drillbit.java:518)
    at org.apache.drill.exec.server.Drillbit.start(Drillbit.java:498)
    at org.apache.drill.exec.server.Drillbit.main(Drillbit.java:494)
Caused by: java.net.UnknownHostException: aks-nodepool1-20640609-1: aks-nodepool1-20640609-1: Try again
    at java.net.InetAddress.getLocalHost(InetAddress.java:1505)
    at org.apache.drill.exec.server.BootStrapContext.getCanonicalHostName(BootStrapContext.java:167)
    ... 5 more
Caused by: java.net.UnknownHostException: aks-nodepool1-20640609-1: Try again
    at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
    at java.net.InetAddress.lookupAllHostAddr(InetAddress.java:928)
    at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1323)
    at java.net.InetAddress.getLocalHost(InetAddress.java:1500)

aks-nodepool1-20640609-1是节点的名称,其中容器是运行。

除 Drill 之外的所有其他应用程序在此堆栈上都 运行 正常。 如何解决这个问题...?

看起来 InetAddress.getLocalHost().getCanonicalHostName() 无法获得规范的主机名,您可以调查为什么会发生这种情况,也许您需要在您的环境中配置一些东西。另一种选择是使用自定义主机名,可以使用环境变量进行设置:DRILL_HOST_NAME -> System.getenv("DRILL_HOST_NAME").