gpt4 book ai didi

java - Drill JDBC 和 Zookeeper 抛出 UnresolvedAddressException

转载 作者:行者123 更新时间:2023-12-02 11:12:52 35 4
gpt4 key购买 nike

我尝试使用 JDBC 驱动程序从外部连接到 DC/OS 上的容器化分布式 apache 钻机设置,如下所示

https://drill.apache.org/docs/using-the-jdbc-driver/#example-of-connecting-to-drill-programmatically

但是,当在集群外部运行它以从我的计算机进行连接时,zookeeper 连接完成,然后它尝试解析以下形式的 Drillbit 地址

2d7f7217340c:31010

其中 2d7f7217340c 是钻头 Web 控制台中显示的内部钻头 ID

这当然会抛出

java.nio.channels.UnresolvedAddressException

直到我在本地 /etc/hosts 文件中输入一个条目将2d7f7217340c解析为drill节点的公共(public)IP。

我对这个主题进行了相当多的搜索,但没有找到任何东西。有没有办法配置Zookeeper或Drill返回IP而不是drillbit ID,这样主机文件就不需要手动更新?

最佳答案

我注意到地址字符串 2d7f7217340c由部署期间生成的容器 ID 定义。即使通过

修改容器的主机名

lsns

nsenter --target <container_pid> --uts hostname <public_ip>

并在容器中重新启动drill,zookeeper仍然返回2d7f7217340c地址。

一个可行的解决方案是修改最近添加的 DRILL_HOSTNAME变量 apache-drill/conf/drill-env.sh通过AWS元数据服务获取公共(public)主机名

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

公共(public)主机名现在由 Drill 公布,并且可以在外部和内部解析

关于java - Drill JDBC 和 Zookeeper 抛出 UnresolvedAddressException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50494795/

35 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com