Контейнер-исполнитель на агенте не может подключиться к драйверу при отправке искры внутри докера в кластере mesos - PullRequest
0 голосов
/ 30 декабря 2018

Когда я запускаю Docker-контейнер и выполняю искробезопасную отправку в режиме кластера внутри контейнера на главном узле, я вижу, что драйвер запускается на agent1.Драйвер регистрируется на агенте agent1:

Успешно запущена служба «sparkDriver» на порту 40781. Новый мастер обнаружен на master @ master-ip: 5050 Сервер создан на 127.0.0.1:32799

Почемусервер запускается на 127.0.0.1, а не на agent1 ip?

Я вижу, что executor, запущенный в контейнере на agent2, завершается с ошибкой ниже: java.io.IOException: Не удалось подключиться к /127.0.0.1:40781

Но исполнитель, запущенный на агенте 1 (где драйвер также запускается в другом контейнере), успешно подключается к /127.0.0.1:40781 и завершает работу.

Похоже, контейнеры на других машинах не могут подключиться к/127.0.0.1:40781, где запускается драйвер.Это ожидаемое поведение?Как я могу заставить исполнителей на других машинах общаться с драйвером по адресу /127.0.0.1:40781 или как заставить драйвер запускаться по ip-агенту вместо 127.0.0.1?

Обратите внимание, что диспетчер запущен на главном узле иработает на master-ip: 7077

Используется команда Spark-submit:

sudo docker run --net=host mesosphere/spark:2.4.0-2.2.1-3-hadoop-2.7 \
bash /opt/spark/dist/bin/spark-submit \
--master mesos://172.26.32.32:7077 \
--deploy-mode cluster \
--class com.learning.spark.WordCount \
--conf spark.mesos.executor.docker.image=mesosphere/spark:2.4.0-2.2.1-3-hadoop-2.7 \
--conf spark.master.rest.enabled=true \
--conf spark.executor.home=/opt/spark/dist \
/home/mesos/wordcount.jar hdfs://***.**.**.36:8020/user/spark/big.txt hdfs://***.**.**.36:8020/outputdirectory
...