Дрель JDBC и Zookeeper выдает UnresolvedAddressException - PullRequest
0 голосов
/ 23 мая 2018

Я пытаюсь подключиться извне к контейнерной распределенной настройке Apache Drill на DC / OS, используя драйвер JDBC, как показано здесь

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

Однако при запуске этого вне кластераДля подключения с моей машины соединение zookeeper завершается, затем он пытается разрешить адрес Drillbit в виде

2d7f7217340c:31010

, где 2d7f7217340c - внутренний идентификатор Drillbit, как показано ввеб-консоль дрели

, которая, конечно, выдает

java.nio.channels.UnresolvedAddressException

, пока я не сделаю запись в своем локальном файле /etc/hosts для разрешения 2d7f7217340c в общедоступном ipузла сверления.

Я довольно много искал по этой теме и ничего не нашел.Есть ли способ настроить Zookeeper или Drill на возвращение IP, а не ID детализации, чтобы файл hosts не нуждался в обновлении вручную?

1 Ответ

0 голосов
/ 24 мая 2018

Я заметил, что строка адреса 2d7f7217340c определяется идентификатором контейнера, сгенерированным во время развертывания.Даже если изменить имя хоста контейнера с помощью

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, и может быть решена как внешне, так и внутренне

...