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