概述
目前 TenC Spark 存在多版本 Spark 共存的问题,如何合理更新和管理是非常重要的。
弹性计算平台 |
SCR |
TenC |
Spark 2.2 |
|
|
Spark 2.3及以上 |
|
|
PySpark py2和py3 |
|
|
运行方式 |
Spark Operator |
spark-submit |
DONE SCR 提供的产品。
SCR产品 |
运行方式 |
其他 |
Spark 2.2.0 |
spark-submit |
改造了依赖文件上传的方式 |
Spark 3 |
Spark Operator |
dive proxy 集成 |
PySpark py2 2.2.0 |
spark-submit |
改造了依赖文件上传的方式 |
PySpark py3 2.2.0 |
spark-submit |
改造了依赖文件上传的方式 |
TODO 未来在 SCR 提供的产品。
SCR产品 |
运行方式 |
TODO |
PySpark-3-py2 |
Spark Operator |
dive proxy 集成 |
PySpark-3-py3 |
Spark Operator |
dive proxy 集成 |
Spark 2.2 会在未来某一天彻底关停,通知用户及时迁移。
Spark 2.2.0 的镜像打包方式请参考官方文档。
- runzhliu 的 repo 需要改成 public
- 打包发布更换脚本
- dive-proxy 要不要重新现网更新
- Spark 2.2 跟新的 Spark 通过 tag 来合并
- 需要拉一个常规运行的 Spark/PySpark 任务的列表 - kevin
- 评估迁移时间
- 镜像要 slim
1
2
3
4
5
6
|
hub.oa.com/runzhliu/spark-driver:2.2.0
hub.oa.com/runzhliu/spark-executor:2.2.0
hub.oa.com/runzhliu/spark-driver-py:2.2.0
hub.oa.com/runzhliu/spark-executor-py:2.2.0
hub.oa.com/runzhliu/spark-shuffle:2.2.0
hub.oa.com/runzhliu/spark-init:2.2.0
|
1
2
3
4
5
6
|
dev/make-distribution.sh --tgz -Phadoop-2.7 -Pkubernetes
build/mvn package -Pkubernetes -pl resource-managers/kubernetes/core -am -DskipTests
./sbin/build-push-docker-images.sh -r hub.oa.com/runzhliu -t 2.2.0 build
docker push hub.oa.com/runzhliu/spark-base:2.2.5
docker push hub.oa.com/runzhliu/spark-executor-py:2.2.0
docker push hub.oa.com/runzhliu/spark-driver-py:2.2.0
|
1
2
3
4
5
|
docker tag hub.oa.com/runzhliu/spark-base:2.2.0-tlinux2.2
docker tag hub.oa.com/runzhliu/spark-driver:2.2.0-tlinux2.2 hub.oa.com/public/spark-driver:2.2.0-tlinux2.2
docker tag hub.oa.com/runzhliu/spark-executor:2.2.0-tlinux2.2 hub.oa.com/public/spark-executor:2.2.0-tlinux2.2
docker push hub.oa.com/public/spark-driver:2.2.0-tlinux2.2 && docker push hub.oa.com/public/spark-executor:2.2.0-tlinux2.2
|
PySpark 在 SCR 平台不再需要 resource-staging-server 的镜像。所以只需要三个镜像,分别是 spark-base/spark-driver-py/spark-executor-py 这三个。其中 spark-base 是用来运行 spark-submit
命令的,参数由 dive-proxy 接受前端的参数来构成。
用户只需要选择 Driver/Executor 的镜像即可。
另外 Spark 默认只支持 python2 的镜像,计算资源组同时也构建了 Driver/Executor 的 python3 镜像。
一般来说,用于运行 PySpark 的镜像名字,由以下规则来定义。
py2
/py3
分别代表支持的 Python 版本 python2/python3
driver
/executor
代表不同的组件类型
tenc
表示由 tenc spark 来构建
2.2.0
/2.3.0
等表示基于哪个 TenC Spark 的版本构建
hub.oa.com/public
表示公共镜像的 repository
下面举几个例子,希望大家可以快速理解不同镜像的含义。
1
2
3
|
hub.oa.com/public/tenc-spark-driver:2.4.2-py3
hub.oa.com/public/tenc-spark-executor:2.4.2-py2
hub.oa.com/public/tenc-spark-executor:2.2.0
|
查看 HistoryServer
1
|
http://9.68.42.147:8080/history/ed073176-fadc-11e9-b7da-8038bc0f0358/jobs/
|
ed073176-fadc-11e9-b7da-8038bc0f0358
这个是 taskId。
一些提示用于补充个 oldliu
- 动态资源分配只有 tenc-spark:3.0.0 支持,请选择相关镜像
- PySpark 请使用 py 后缀的镜像
Tensorflow 使用指南
SCR 弹性计算平台提供了 Tensorflow 的计算任务类型,使用 Tensorflow 计算可以运行深度学习的任务,但是需要注意跟**Tensorflow(分布式)**的区别,后者可以执行分布式的训练任务。
由于 IDC 网络访问的策略,Tensorflow 官方的 MNIST in Tensorflow,无法获取相关的 DataSet,所以在 SCR 弹性计算平台提供的 Demo Jobflow 使用的镜像中,我们将数据集放入了镜像中。
1
|
hub.oa.com/runzhliu/mnist:example
|
具体的 Dockerfile 可以参考xxx。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
# Docker image for running examples in Tensorflow models.
# base_image depends on whether we are running on GPUs or non-GPUs
FROM ubuntu:latest
RUN apt-get update && apt-get install -y --no-install-recommends \
ca-certificates \
build-essential \
git \
python \
python-pip \
python-setuptools
RUN pip install tf-nightly
# Checkout tensorflow/models at HEAD
RUN git clone https://github.com/tensorflow/models.git /tensorflow_models
|
更多的镜像可以参考 docker hub 上的 tensorflow/tensorflow 仓库。
SCR 弹性计算平台提供一些可用的镜像如下。
1
2
3
|
hub.oa.com/runzhliu/tensorflow:1.14.0-py3-mnist-demo
# python /tensorflow_models/official/mnist/mnist.py
|
警告
本文最后更新于 2017年2月1日,文中内容可能已过时,请谨慎参考。