我正在构建一个全新的数据科学堆栈,供数据科学家和数据分析师在我们的工作环境中使用。
基本上,我的结构如下:
- CDH安装在群集中的所有节点上(裸机)
- Spark& CDH发行中的YARN
- 具有多个组件的Docker容器映像:Anaconda,Python3,Spark(PySpark),Jupyter Notebook
现在,我最初的目的是在所有工作节点上分发该docker镜像以获取Python依赖关系,并且还包含在此容器内运行Spark作业所需的自定义库(e.x。:xgboost,numpy等)。在Jupyter中进行交互式分析时,我的工作流程如下:
- 创建Jupyter Notebook
- 初始化SparkContext并将master指向YARN
- 使用自定义Python库代码运行Spark作业
醇>
现在,我想知道两件事:
- Spark(在容器外运行)如何在所有工作节点上访问我的自定义Python库(Docker容器中的自定义代码)。
- 如何分发这些自定义库和其他复杂的依赖项?我知道我们可以使用sc.addPyFile('/ path / to / BoTree.py')或完整的.zip存档这样的函数,但Docker有一个更简单的方法吗?我没有使用Anaconda集群,所以我需要另外一种方法来实现它。
醇>
由于