【问题标题】:Running Spark job in dataproc with docker-compose使用 docker-compose 在 dataproc 中运行 Spark 作业
【发布时间】:2018-10-19 12:12:42
【问题描述】:

我已经成功创建并测试了一个项目,该项目使用 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进入master
  • git clone 我的项目(这也可以在初始化操作中完成(???))
  • 安装 docker-compose
  • 运行 bash 文件。

它开始运行,但它似乎只在 master 中运行,而不在 worker 中运行。那么我在这里做错了什么?任何见解都是有用的。

【问题讨论】:

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


    【解决方案1】:

    默认情况下,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。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢您的回答,但它根本没有用。
      • 请提供有关如何修改初始化脚本的信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-07
      • 1970-01-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 2015-12-05
      相关资源
      最近更新 更多