如何使用Apache Spark(pyspark)和Docker分发类

我正在build立一个全新的数据科学栈,供数据科学家和数据分析师在我们的工作环境中使用。

基本上我的结构如下:

  • CDH安装在群集中的所有节点上(裸机)
  • 在CDH发行中的Spark&YARN
  • 具有多个组件的Docker容器映像:Anaconda,Python3,Spark(PySpark),Jupyter Notebook

现在,我最初的想法是在所有的工作节点上分配这个docker镜像的Python依赖关系,还包括在这个容器内部运行Spark作业所需的自定义库(例如:xgboost,numpy等)。 在Jupyter中进行交互式分析时,我的工作stream程如下:

  1. 创buildJupyter笔记本
  2. 初始化SparkContext并将主点指向YARN
  3. 使用自定义Python库代码运行Spark作业

现在,我想知道两件事情:

  1. Spark(在容器外部运行)将如何在所有工作节点上访问我自定义的Python库(Docker容器中的自定义代码)。
  2. 我如何分配这些自定义的图书馆和其他复杂的依赖关系? 我知道我们可以使用像sc.addPyFile('/ path / to / BoTree.py')或一个完整的.zip压缩文件,但是Docker有没有更简单的方法? 我没有使用Anaconda集群,所以我需要另一种方式来做到这一点。

谢谢