栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

部署Spark History Server到K8s

部署Spark History Server到K8s

Spark History Server running on k8s

Spark History Server(SHS)是一个无状态服务,只要eventlog没有丢失,SHS重启或者切换是不会受到影响的。当然当我们开启了SHS的磁盘缓存的时候,如果SHS换了node启动,缓存可能就会丢失,但是SHS可以根据eventlog重新生成缓存,因此我们可以认为他是一个无状态服务。这样的服务在K8s上可以很容易的进行部署,本文将介绍如何把SHS部署到8s上,分享一下可能遇到的问题。

SHS image准备

Spark暂时还没有提供官方的spark docker image,所以我们需要自己准备好这个image。不过官方有提供build image的脚本,所以自己做image还是很方便的。

    spark code download
git clone https://github.com/apache/spark.git
    build spark with K8s
./build/mvn -Pkubernetes -DskipTests clean package
    build docker image
    spark提供了bin/docker-image-tool.sh这个脚本,可以直接用它来构建你的image,这个image不仅仅可以用来跑SHS也可以用来跑spark job,但是这个是非常基础的image,如果你有一些定制需求,可以尝试修改这个脚本。比如需要有default config,例如你可以再spark repo下创建一个特定的conf文件夹,里面可以包含一些配置文件,例如spark-default.conf,然后修改docker-image-tool.sh和Dockerfile脚本,这样才能保证你的image里有你的这个文件夹。
    docker-image-tool.sh
cp -r "conf" "$base_CTX/conf"

Dockerfile

COPY conf /opt/spark/conf

选择以下命令制作docker image:

$ ./bin/docker-image-tool.sh -r  -t my-tag build

参考Spark官网中 Docker Images

部署SHS到k8s

准备一个yaml文件, kubectl apply -f shs.yaml
这里给到的是一个非常基本的一个deployment,重点关注下args这个参数,这里就是我们启动spark hitory server的命令。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: shs-v1
  namespace: default
spec:
  selector:
    matchLabels:
      run: shs-v1
  replicas: 2
  template:
    metadata:
      labels:
        run: shs-v1
    spec:
      containers:
        - image: 
          name: shs-v1
          args: ["/opt/spark/bin/spark-class", "org.apache.spark.deploy.history.HistoryServer"]
          ports:
            - containerPort: 18080
              name: http
          env:
            - name: SPARK_HISTORY_OPTS
              value: "-Dspark.history.fs.logDirectory=hdfs://xxxxxx"

你可以创造一个service或者利用kube proxy来访问这个SHS。

	kubectl expose deployment shs-v1 -n default --type=ClusterIP --name=shs-v1-svc
常见问题

    could not find spark-version-info.properties
    可以手动创建一个空的spark-version-info.properties文件,把它放到如下位置:
    …coresrcmainresourcesspark-version-info.properties

    如果你是在windows环境对spark进行build,你可能需要用到:
    dos to unix命令,来转换一些.sh文件

    如果spark.history.fs.logDirectory没有进行配置,就会使用默认值,/tmp/spark-events
    记得在Dockerfile里进行创建

 mkdir -p /tmp/spark-events && 
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/745225.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号