【发布时间】:2023-03-29 09:07:02
【问题描述】:
我正在尝试使用此处所示的 JDBC 驱动程序从外部连接到 DC/OS 上的容器化分布式 Apache Drill 设置
https://drill.apache.org/docs/using-the-jdbc-driver/#example-of-connecting-to-drill-programmatically
但是,当在集群外部运行它以从我的机器连接时,zookeeper 连接完成,然后它尝试以以下形式解析 Drillbit 地址
2d7f7217340c:31010
2d7f7217340c 是内部钻头 ID,如钻头 Web 控制台中所示
当然会抛出
java.nio.channels.UnresolvedAddressException
直到我在我的本地 /etc/hosts 文件中输入
将2d7f7217340c解析为钻孔节点的公网ip。
我已经搜索了相当多的主题,但没有找到任何东西。 有没有办法将 Zookeeper 或 Drill 配置为返回 IP 而不是 Drillbit ID,以便不需要手动更新 hosts 文件?
【问题讨论】:
-
您是否指定了以下字符串?
Connection connection =DriverManager.getConnection("jdbc:drill:zk= PUBLIC_IP:2181/drill/my_cluster_com-drillbits");PUBLIC_IP 是你的公共 IP 地址,drillbit 正在运行。 -
是的,我有
connection = DriverManager.getConnection("jdbc:drill:zk=<zk_public_ip>:<zk_port>/drill/<cluster_id>");jdbc 连接在集群中的节点上运行时有效,但在集群外运行时需要上述主机文件编辑
标签: java docker mesos apache-drill dcos