更新时间:2022-05-07 GMT+08:00
分享

安装Spark

前提条件

环境中需要配置1.8以上版本的jdk。

获取Spark包

由于OBS适配hadoop2.8.3和3.1.1版本,本文使用3.1.1。

git clone -b v3.1.1 https://github.com/apache/spark.git

修改/dev/make-distribution.sh文件,

使用搜索找到 VERSION 所在行,大概是129行到146行左右,从该行到 echo -n) 行全部注释,然后添加下面四行,目的是为了让编译的时候跳过检测。

VERSION=3.1.3
SCALA_VERSION=2.12
SPARK_HADOOP_VERSION=3.1.1
SPARK_HIVE=1

执行如下命令编译

./dev/make-distribution.sh --name hadoop3.1 --tgz -Pkubernetes -Pyarn -Dhadoop.version=3.1.1

编译出spark-3.1.3-bin-hadoop3.1.tgz。

获取华为云OBS jar包

本文使用hadoop-huaweicloud-3.1.1-hw-45.jar,获取地址:https://github.com/huaweicloud/obsa-hdfs/tree/master/release

配置Spark运行环境

为了操作简便,使用root用户,并将编译出的软件包spark-3.1.3-bin-hadoop3.1.tgz放置于操作节点/root目录下。

执行命令安装Spark:

tar -zxvf spark-3.1.3-bin-hadoop3.1.tgz
mv spark-3.1.3-bin-hadoop3.1 spark-obs
cat >> ~/.bashrc <<EOF
PATH=/root/spark-obs/bin:\$PATH
PATH=/root/spark-obs/sbin:\$PATH
export SPARK_HOME=/root/spark-obs
EOF

source ~/.bashrc

此时已经可以使用spark-submit等二进制。使用spark-submit --version查看所用的spark版本。

配置Spark对接obs

  1. 拷贝华为云OBS jar包到相应目录。

    cp hadoop-huaweicloud-3.1.1-hw-45.jar /root/spark-obs/jars/

  2. 修改spark配置项。

    为了对接OBS,需要为spark添加对应的配置项。

    修改AK_OF_YOUR_ACCOUNT / SK_OF_YOUR_ACCOUNT / OBS_ENDPOINT为实际值。

    cp ~/spark-obs/conf/spark-defaults.conf.template ~/spark-obs/conf/spark-defaults.conf
    
    cat >> ~/spark-obs/conf/spark-defaults.conf <<EOF
    spark.hadoop.fs.obs.readahead.inputstream.enabled=true
    spark.hadoop.fs.obs.buffer.max.range=6291456
    spark.hadoop.fs.obs.buffer.part.size=2097152
    spark.hadoop.fs.obs.threads.read.core=500
    spark.hadoop.fs.obs.threads.read.max=1000
    spark.hadoop.fs.obs.write.buffer.size=8192
    spark.hadoop.fs.obs.read.buffer.size=8192
    spark.hadoop.fs.obs.connection.maximum=1000
    spark.hadoop.fs.obs.access.key=AK_OF_YOUR_ACCOUNT
    spark.hadoop.fs.obs.secret.key=SK_OF_YOUR_ACCOUNT
    spark.hadoop.fs.obs.endpoint=OBS_ENDPOINT
    spark.hadoop.fs.obs.buffer.dir=/root/hadoop-obs/obs-cache
    spark.hadoop.fs.obs.impl=org.apache.hadoop.fs.obs.OBSFileSystem
    spark.hadoop.fs.obs.connection.ssl.enabled=false
    spark.hadoop.fs.obs.fast.upload=true
    spark.hadoop.fs.obs.socket.send.buffer=65536
    spark.hadoop.fs.obs.socket.recv.buffer=65536
    spark.hadoop.fs.obs.max.total.tasks=20
    spark.hadoop.fs.obs.threads.max=20
    spark.kubernetes.container.image.pullSecrets=default-secret
    EOF

预置镜像到SWR

在K8s内运行Spark需要有相同版本的Spark镜像地址。编译时已经有配套的Dockerfile文件生成,通过此文件制作镜像并上传至SWR。

  1. 制作镜像

    cd ~/spark-obs

    docker build -t spark:3.1.3-obs -f kubernetes/dockerfiles/spark/Dockerfile .

  2. 上传镜像

    登录SWR的console页面,获取登录指令:

    登录制作镜像的节点,复制登录指令。

    docker tag [{镜像名称}:{版本名称}] swr.cn-east-3.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}

    docker push swr.cn-east-3.myhuaweicloud.com/{组织名称}/{镜像名称}:{版本名称}

    例如:

    记录下镜像的访问地址以供后文填写。

    例如记录下地址为:swr.cn-east-3.myhuaweicloud.com/dev-container/spark:3.1.3-obs

配置Spark History Server

cat >> ~/spark-obs/conf/spark-defaults.conf <<EOF
spark.eventLog.enabled=true
spark.eventLog.dir=obs://******
EOF

请务必修改上述命令的bucket-name及目录为合法值。

obs路径参考如下:obs://spark-sh1/history-obs/

修改~/spark-obs/conf/spark-env.sh文件,如果该文件不存在,使用命令拷贝模板为文件。

cp ~/spark-obs/conf/spark-env.sh.template ~/spark-obs/conf/spark-env.sh

cat >> ~/spark-obs/conf/spark-env.sh <<EOF
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=obs://******"
EOF

此处的obs地址需要与前文spark-default.conf中的一致。

start-history-server.sh

直接启动history server。

启动后可以通过节点端口18080访问。

分享:

    相关文档

    相关产品

关闭导读