drill jdbc和zookeeper抛出unsolvedAddressException

xtupzzrd  于 2021-06-26  发布在  Mesos
关注(0)|答案(1)|浏览(418)

我正在尝试使用jdbc驱动程序从外部连接到dc/os上的容器化分布式apachedrill设置,如下所示
https://drill.apache.org/docs/using-the-jdbc-driver/#example-以编程方式连接到drill
但是,当在集群外运行此命令以从我的计算机连接时,zookeeper连接完成,然后它尝试以 2d7f7217340c:31010 哪里 2d7f7217340c 是钻孔web控制台中显示的内部钻头id
当然,这会 java.nio.channels.UnresolvedAddressException 直到我在本地注册 /etc/hosts 要解析的文件 2d7f7217340c 到演练节点的公共ip。
关于这个主题我到处找了不少,什么也没找到。有没有办法将zookeeper或drill配置为返回ip而不是drillbit id,以便不需要手动更新hosts文件?

xqkwcwgp

xqkwcwgp1#

我注意到地址字符串 2d7f7217340c 由部署期间生成的容器id定义。即使通过修改容器的主机名
lsns nsenter --target <container_pid> --uts hostname <public_ip> 在容器中重新启动钻取,zookeeper仍然返回 2d7f7217340c 地址。
一个可行的解决办法是修改最近添加的 DRILL_HOSTNAME 变量输入 apache-drill/conf/drill-env.sh 通过aws元数据服务获取公共主机名

export DRILL_HOSTNAME=`curl -s http://169.254.169.254/latest/meta-data/public-hostname`

公共主机名现在由drill播发,可以在外部和内部解析

相关问题