1. 下载spark :spark-2.4.4-bin-hadoop2.7.tgz ,以当前最高版本为准
2. 解压后找到kubernetes/dockerfiles/spark目录,查看Dockerfile文件,注意注释部分中有一条执行命令(其中的目录结构需特别注意),执行命令时需按照此目录结构位置执行。
3. 复制文件注释中的执行命令,并执行;生成spark镜像。此时生成的镜像中只有spark没有python。
4. 找到kubernetes/dockerfiles/spark/bindings/python 目录,查看Dockerfile 文件,文件中有个base_img参加需要赋值;
命令:docker build -t pyspark:latest --build-arg base_img=image_id -f Dockerfile . 注意:image_id为spark镜像的id,执行命令时需参考上面spark镜像命令的目录结构;
目录结构问题主要原因是Dockerfile里面的指令采用了相对路径;详细内容可以查看python、spark 中dockerfile文件里的命令。
5. 执行完上述命令后,生成pyspark镜像;
6. 运行pyspark镜像,生成容器;命令:docker run -it --name pyspark -d images_name /bin/bash
7. 进入容器后,vi /etc/profile 添加内容:
SPARK_HOME=/opt/spark ;
PATH = ...:${SPARK_HOME}/bin
保存 source /etc/profile
8. 进入/opt/spark/python/lib 目录,里面有一个 pyspark.zip 文件;复制到上一级,即:/opt/spark/python/ 。
命令:cp pyspark.zip ../ ; 复制完成后解压
9. 执行 pyspark 命令,查看是否有 输出 spark 标志 等相关内容。