Не удается связаться с Spark Web UI, расположенным внутри контейнера Docker - PullRequest
0 голосов
/ 16 декабря 2018

У меня есть удаленная виртуальная машина, и я разрабатываю приложение Spark, которое запускается внутри контейнера Docker.

2018-12-16 13:07:10 INFO  main [AbstractConnector] - Started ServerConnector@79c3f01f{HTTP/1.1,[http/1.1]}{0.0.0.0:4040}
2018-12-16 13:07:10 INFO  main [Utils] - Successfully started service 'SparkUI' on port 4040.
...
2018-12-16 13:07:10 INFO  main [SparkUI] - Bound SparkUI to 0.0.0.0, and started at http://f58300e7e6ea:4040

В журнале говорится, что он правильно запустил SparkUI, но привязан к локальному узлу контейнера.В этот момент я решил EXPOSE порт 4040 на этапе строительства и опубликовать его во время run с -p 4040:4040/tcp, связывающим два порта.

Когда я пытаюсь достичь <remote host name>:4040 с моей локальной машины(в Firefox) я не могу подключиться к SparkUI.Я также попытался сделать это по telnet, но ничего.

Когда я запускаю контейнер, я вижу список портов 4040, используя netstat, но, возможно, он недоступен с удаленного компьютера.Как мне это сделать?

По сути, я хочу получить доступ к SparkUI с домашнего компьютера -> Удаленная виртуальная машина -> (Docker Container with Spark UI) с помощью моего браузера.

Удаленная виртуальная машина запускает RHEL 7.

1 Ответ

0 голосов
/ 17 декабря 2018

В ваших журналах написано, что искровой пользовательский интерфейс запущен на started at http://f58300e7e6ea:4040 здесь f58300e7e6ea - это имя хоста внутренней сети докера.

Итак, вам нужно выполнить следующее:

Сначала в вашем приложении перед развертыванием установите следующие две конфигурации

  1. spark.driver.bindAddress в качестве имени хоста любой выбранной вами строки
  2. spark.driver.host в качестве IP-адреса вашей удаленной виртуальной машины.

Во-вторых, при развертывании контейнера Docker с использованием образа используйте флаг --hostname, чтобы ввести имя хоста в контейнер и использовать ранее выбранную строку.Как пример docker run --hostname myHostName --ip 10.1.2.3 ubuntu:16.04

...