Запуск задания Spark в dataproc с помощью docker-compose - PullRequest
0 голосов
/ 19 октября 2018

Я успешно создал и протестировал проект, который запускается локально с помощью docker-compose с использованием примеров данных.Файл Bash для запуска всего конвейерного задания:

cp -r ../data . # transfer data used for job

docker-compose up --build -d
docker exec project_master_1 bin/spark-submit \
                            --py-files /project/utils.py\
                            /project/main.py
docker cp project_master_1:/project/data/output/. ../project/output #some tranfer of generated files
docker exec project_master_1 rm -rf /project/data

docker-compose down

Мой файл docker-compose идентичен файлу из этого: ссылка на github

Так что я делаю так:создать кластер dataproc с действием инициализации для установки docker:

gs://dataproc-initialization-actions/docker/docker.sh

Далее:

  • Вхожу с помощью ssh мастер
  • git clone мой проект (этоттакже можно выполнить действие инициализации (???))
  • установить docker-compose
  • запустить файл bash.

Запускается, но кажется, чтоэто работает только в мастере, а не в рабочих.Так что я тут делаю не так?Любое понимание полезно.

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

По умолчанию spark-submit не выполняет программы в YARN.Необходимо указать параметр --master yarn, чтобы задание могло быть выполнено в рабочих.Примерно так должно запускаться задание в кластере:

docker exec project_master_1 bin/spark-submit \
    --master yarn \
    --py-files /project/utils.py \
    /project/main.py

Чтобы spark-submit мог найти кластер YARN, необходимо установить переменную HADOOP_CONF_DIR или YARN_CONF_DIR, чтобы указывать на файлы конфигурации кластера, особенно yarn-site.xml.

0 голосов
/ 21 октября 2018

Если вам нужно выполнить действие на всех узлах (мастерах и рабочих), вам следует подумать об изменении действия инициализации (начните с копии docker.sh), чтобы сделать это.«git clone» работает в скрипте действия инициализации.

...