Spark on kubernetes 环境搭建

Spark on kubernetes环境搭建

实验要求

kubernetes集群 版本1.15
spark 版本 2.4.5
私建docker仓库 已经被kubernetes集群的docker信任
jdk 1.8
scala 2.12

构建kubernetes

  • 单机测试的话,可以使用minikube
  • 为每一台kubernetes节点,下载jdk和Scala,并配置JAVA_HOME和SCALA_HOME

搭建私有docker镜像仓库

  • 准备一台单独的设备安装docker,或者,在kubernetes集群中寻找一台设备
  • 配置insecure docker仓库,docker镜像仓库本身,以及每一台kubernetes集群中的节点都需要配置
    # 编辑/etc/docker/daemon.json,内容如下
    {
    	"insecure-registries": ["${设备的外网IP}:5000"]
    }
    
  • 重启docker,docker镜像仓库所在的设备和kubernetes的每一台设备都需要重启docker
    systemctl restart docker.service
    
  • 启动docker 私有仓库
    docker run -d --restart=always --name registry-test -p 5000:5000 registry:2
    

构建spark docker images

  • 在一台已经安装了docker的设备上下载spark
    wget http://apache.communilink.net/spark/spark-2.4.5/spark-2.4.5-bin-hadoop2.7.tgz
    
  • build spark docker镜像
    tar -zxvf spark-2.4.5-bin-hadoop2.7.tgz
    cd spark-2.4.5-bin-hadoop2.7
    # ./bin/docker-image-tool.sh -r ${你的镜像仓库地址} -t ${你的镜像tag} build
    ./bin/docker-image-tool.sh -r 10.211.55.24:5000 -t v1 build
    
  • 将build好的image导入到自建的docker镜像仓库中
    # 方式一
    docker push ${你的镜像}
    # 方式二
    ./bin/docker-image-tool.sh -r 10.211.55.24:5000 -t v1 push
    # 方式三
    docker save 10.211.55.24:5000/spark:v1 > tmp.tar
    scp tmp.tar ${你的镜像仓库}/${path}
    ssh ${你的镜像仓库}
    docker load < 10.211.55.24:5000/spark:v1
    docker push 10.211.55.24:5000/spark:v1
    

为spark程序创建serviceaccount和对应的rbac

  • 为spark应用程序构建运行需要的角色和账户
    kubectl create serviceaccount spark
    kubectl create clusterrolebinding spark-role --clusterrole=edit --serviceaccount=default:spark --namespace=default
    

运行spark的example sparkPi

  • 在kubernetes master上运行spark提交脚本
  • 在kubernetes master运行proxy
    kubectl proxy
    
  • spark运行脚本
    bin/spark-submit \
      --master k8s://http://127.0.0.1:8001 \
      --deploy-mode cluster \
      --name spark-pi \
      --class org.apache.spark.examples.SparkPi \
      --conf spark.executor.instances=5 \
      --conf spark.kubernetes.container.image=${你的镜像仓库IP地址}/apache/spark:v1 \
      --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
      /opt/spark/examples/jars/spark-examples_2.11-2.4.5.jar
    

可能会遇到的问题

  • spark无法与kubernetes apiserver连接,或者应该是java无法与apiserver连接
    • 报错
      Exception in thread "main" io.fabric8.kub
评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值