使用docker-compose在dataproc中运行Spark作业

时间:2018-10-19 12:12:42

标签: docker apache-spark docker-compose google-cloud-dataproc

我已经成功创建并测试了一个使用示例数据在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 link

所以我要做的是使用初始化操作创建一个dataproc集群来安装docker:

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

下一步:

  • 我通过ssh输入主密钥
  • git clone我的项目(这也可以在初始化操作中完成(???)
  • 安装docker-compose
  • 运行bash文件。

它开始运行,但似乎它仅在主服务器上运行,而不在工作线程中运行。那么我在这里做错了什么呢?任何见解都是有用的。

2 个答案:

答案 0 :(得分:0)

如果需要在所有节点(主节点和工作节点)上执行操作,则应考虑修改初始化操作(从docker.sh副本开始)以执行此操作。 “ git clone”确实在初始化操作脚本中起作用。

答案 1 :(得分:0)

默认情况下,spark-submit不执行YARN中的程序。您应该指定参数--master yarn,以便可以在worker中执行作业。这样的事情应该开始集群中的工作:

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。

相关问题