Назад | Перейти на главную страницу

Как настроить клиент 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, чтобы это было возможно?

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

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

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