Как настроить клиент Spark, работающий в контейнере Docker, для двусторонней связи с удаленным кластером Spark?

spark-submit Кажется, для выполнения заданий требуется двусторонняя связь с удаленным кластером Spark.

Это легко настроить между компьютерами (от 10.xxx до 10.xxx и обратно), но становится непонятным, когда Docker добавляет дополнительный сетевой уровень (с 172.xxx по 10.xxx до 10.xxx, а затем обратно к 172.xxx через 10.xxx как-то).

Spark добавляет дополнительный уровень сложности своим SPARK_LOCAL_IP а также SPARK_LOCAL_HOSTNAME параметры конфигурации для клиента.

Как настроить сеть Docker, чтобы разрешить это?

1 ответ

Вы можете запустить докер-контейнеры с host сетевой режим. В ваш файл compose вы можете добавить следующий конфиг:

services:
  worker0:
    container_name: container0
    cpuset: 0-4
    entrypoint: /entrypoint.sh
    environment:
        - SPARK_MASTER=10.34.221.247
        - RAM=16g
        - NUM_WORKERS=5
        - SHUFFLE_PORT=7338
    expose:
        - 7000-64000
    image: 10.47.7.214/spark-worker
    mem_limit: 16g
    network_mode: bridge
    tty: true

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

Другие вопросы по тегам