将包含fat jar的docker提交给Spark集群

时间:2017-06-21 06:13:22

标签: apache-spark docker apache-spark-sql dcos

我想向在DC / OS上运行的Spark群集提交一个包含'fat jar'的docker容器。这就是我所做的。

  1. mvn clean install,因此jar位于/target/application.jar
  2. docker build -t <repo/image> . && docker push <repo/image>
  3. 现在我的DC / OS能够从我的私人存储库中提取图像
  4. 我的Dockerfile如下所示:

    FROM docker-release.com/spark:0.1.1-2.1.0-2.8.0  # I extended from this image to get all necessary components
    
    ADD target/application.jar /application.jar # just put fat jar under root dir of Docker image
    
    COPY bootstrap.sh /etc/bootstrap.sh
    ENTRYPOINT ["/etc/bootstrap.sh"]
    

    这是bootstrap.sh的样子:

    #!/bin/bash -e
    
    /usr/local/spark/bin/spark-submit --class com.spark.sample.MainClass --master spark://<host>:<port> --deploy-mode cluster --executor-memory 20G --total-executor-cores 100 /application.jar
    

    我将此映像作为服务部署到DC / OS,其中Spark集群也运行,并且服务成功提交到Spark集群。但是,Spark群集无法找到jar,因为它位于服务泊坞窗中。

      

    I0621 06:06:25.985144 8760 fetcher.cpp:167]使用复制资源   命令:cp'/ application.jar'   “的/ var / lib中/ mesos /从/从站/ e8a89a81-1da6-46a2-8caa-40a37a3f7016-S4 /框架/ e8a89a81-1da6-46a2-8caa-40a37a3f7016-0003 /执行器/驱动器-20170621060625-18190 /运行/ c8e710a6- 14e3-4da5-902d-e554a0941d27 / application.jar'

         

    cp:无法统计'/application.jar':没有这样的文件或目录

         

    无法获取'/application.jar':

         

    无法使用命令'cp'/ application.jar'进行复制   “的/ var / lib中/ mesos /从/从站/ e8a89a81-1da6-46a2-8caa-40a37a3f7016-S4 /框架/ e8a89a81-1da6-46a2-8caa-40a37a3f7016-0003 /执行器/驱动器-20170621060625-18190 /运行/ c8e710a6- 14e3-4da5-902d-e554a0941d27 / application.jar '',

         

    退出状态:256无法与代理同步(可能是   退出)

    我的问题是:

    是否需要将jar放在Docker容器内的其他位置?它对我没有任何意义,但如果没有,Spark如何才能正确找到jar文件?

0 个答案:

没有答案