我已经成功创建并测试了一个使用示例数据在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
下一步:
它开始运行,但似乎它仅在主服务器上运行,而不在工作线程中运行。那么我在这里做错了什么呢?任何见解都是有用的。
答案 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。