spark-jobserver: Worker не подключается обратно к драйверу

Я настроил небольшую среду Spark на двух машинах. Один запускает мастер и рабочий, а другой - только рабочий. Я могу использовать этот кластер с помощью Spark Shell, например:

spark-shell --master spark://mymaster.example.internal:7077

Я могу выполнять там вычисления, которые правильно распределяются по узлам, поэтому все работает нормально.

Однако у меня возникают проблемы при использовании сервера spark-job.

Первая попытка состояла в том, чтобы запустить контейнер Docker (с переменной среды SPARK_MASTER, указывающей на правильный основной URL-адрес). Когда задание было запущено, работник, к которому оно было передано, пожаловался, что не может подключиться обратно к 172.18.x.y:nnnn. Это было понятно, потому что это был внутренний IP-адрес контейнера Docker, в котором работал сервер заданий.

Итак, я снова запустил контейнер сервера заданий с --network host, чтобы он подключился к хост-сети. Однако запуск задания снова привел к отказу в соединении, на этот раз с сообщением о невозможности подключения к 172.30.10.10:nnnn. 172.30.10.10 — это IP-адрес хоста, на котором я хочу запустить сервер заданий, и он доступен как с рабочих, так и с главных узлов (экземпляры Spark также работают в контейнерах Docker, но они также подключены к сети хоста).

Копнув глубже, я попытался запустить контейнер Docker, в котором есть только JVM и Spark, запустил его также с --network host и запустил задание Spark изнутри. Это сработало.

Что я могу упустить?


person rabejens    schedule 13.07.2017    source источник


Ответы (1)


Оказалось, что я пропустил запуск службы перемешивания. Я настроил свой пользовательский контейнер сервера заданий на использование динамического распределения, и для этого необходимо запустить внешнюю службу перемешивания.

person rabejens    schedule 14.07.2017