我正在尝试使用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文件?
1条答案
按热度按时间xqkwcwgp1#
我注意到地址字符串
2d7f7217340c
由部署期间生成的容器id定义。即使通过修改容器的主机名lsns
nsenter --target <container_pid> --uts hostname <public_ip>
在容器中重新启动钻取,zookeeper仍然返回2d7f7217340c
地址。一个可行的解决办法是修改最近添加的
DRILL_HOSTNAME
变量输入apache-drill/conf/drill-env.sh
通过aws元数据服务获取公共主机名公共主机名现在由drill播发,可以在外部和内部解析