目录

弹性计算平台-Spark版本控制问题

目录

概述

目前 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 的镜像名字,由以下规则来定义。

  1. py2/py3 分别代表支持的 Python 版本 python2/python3
  2. driver/executor 代表不同的组件类型
  3. tenc 表示由 tenc spark 来构建
  4. 2.2.0/2.3.0 等表示基于哪个 TenC Spark 的版本构建
  5. 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

  1. 动态资源分配只有 tenc-spark:3.0.0 支持,请选择相关镜像
  2. 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日,文中内容可能已过时,请谨慎参考。