Как настроить клиент 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
Хотя я сталкиваюсь с проблемами с этим конфигом до сих пор. Задания запускаются нормально, но в итоге драйвер докера не может подключиться к исполнителям. Вы можете хотя бы попробовать это сейчас.