首页技术文章正文

-k8s应用[一]-spark-on-k8s【黑马大数据培训】

更新时间:2019年07月29日 15时42分33秒 来源:黑马程序员论坛



步骤:

  • 创建一个包含Spark应用程序的组件,可以部署在Kubernetes(即Docker容器)上
  • 让自己处于启动Spark工作的位置
  • 提交要在Kubernetes上运行的Spark应用程序
  • 在Kubernetes上运行Spark Shell



详细过程涉及更多一点。 以下是本指南涵盖的内容概述:



Apache Spark作业和部署模式


驱动程序本身可以在启动环境的外部或内部运行(“客户端模式”与“集群模式”)。




获取 Apache Spark



[AppleScript] 纯文本查看 复制代码
wget http://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.6.tgz
tar xvzf spark-2.4.0-bin-hadoop2.6.tgz
cd spark-2.4.0-bin-hadoop2.6



创建 Spark Docker 镜像

下面代码 使用 ab6539763/xiaozuoquan仓库 在 Docker Hub

[AppleScript] 纯文本查看 复制代码
[root@master spark-2.4.0-bin-hadoop2.6]# export DOCKER_IMAGE=ab6539763/xiaozuoquan:spark-2.4.0-hadoop-2.6          
[root@master spark-2.4.0-bin-hadoop2.6]# docker build -t $DOCKER_IMAGE -f kubernetes/dockerfiles/spark/Dockerfile .
Sending build context to Docker daemon  256.2MB
Step 1/15 : FROM openjdk:8-alpine
 ---> a3562aa0b991
Step 2/15 : ARG spark_jars=jars
 ---> Using cache
 ---> dd976e5ec7c2
Step 3/15 : ARG img_path=kubernetes/dockerfiles
 ---> Using cache
 ---> 51ea0992c098
Step 4/15 : ARG k8s_tests=kubernetes/tests
 ---> Using cache
 ---> a82f513cb245
Step 5/15 : RUN set -ex &&     apk upgrade --no-cache &&     apk add --no-cache bash tini libc6-compat linux-pam &&     mkdir -p /opt/spark &&     mkdir -p /opt/spark/work-dir &&     touch /opt/spark/RELEASE &&     rm /bin/sh &&     ln -sv /bin/bash /bin/sh &&     echo "auth required pam_wheel.so use_uid" >> /etc/pam.d/su &&     chgrp root /etc/passwd && chmod ug+rw /etc/passwd
 ---> Using cache
 ---> d23ff7efb7ef
Step 6/15 : COPY ${spark_jars} /opt/spark/jars
 ---> Using cache
 ---> 08989bbc0bc2
Step 7/15 : COPY bin /opt/spark/bin
 ---> Using cache
 ---> c190400b4bfe
Step 8/15 : COPY sbin /opt/spark/sbin
 ---> Using cache
 ---> 3afb65ed2ddc
Step 9/15 : COPY ${img_path}/spark/entrypoint.sh /opt/
 ---> Using cache
 ---> f8e4653fed2d
Step 10/15 : COPY examples /opt/spark/examples
 ---> Using cache
 ---> 55f649559fb4
Step 11/15 : COPY ${k8s_tests} /opt/spark/tests
 ---> Using cache
 ---> 7487005d56ce
Step 12/15 : COPY data /opt/spark/data
 ---> Using cache
 ---> 9999f9a6d47a
Step 13/15 : ENV SPARK_HOME /opt/spark
 ---> Using cache
 ---> c62b3ee36171
Step 14/15 : WORKDIR /opt/spark/work-dir
 ---> Using cache
 ---> 306e7af338b2
Step 15/15 : ENTRYPOINT [ "/opt/entrypoint.sh" ]
 ---> Using cache
 ---> 501ddb9b656c
Successfully built 501ddb9b656c
Successfully tagged ab6539763/xiaozuoquan:spark-2.4.0-hadoop-2.6
[root@master spark-2.4.0-bin-hadoop2.6]# 
[root@master spark-2.4.0-bin-hadoop2.6]# docker push $DOCKER_IMAGE
The push refers to repository [docker.io/ab6539763/xiaozuoquan]
211eade71ef8: Pushed 
5260b5bec617: Pushed 
64d5f2d08a3a: Pushed 
aee1e5aa69e9: Pushed 
ff17e3b7f9d4: Pushed 
b67f640657c6: Pushed

spark 应用使用自己的账户 spark-sa


[AppleScript] 纯文本查看 复制代码
[root@master ~]# kubectl create namespace spark1
namespace/spark1 created
[root@master ~]# kubectl create serviceaccount spark-sa -n spark1
serviceaccount/spark-sa created
[root@master ~]# kubectl create rolebinding spark-sa-rb --clusterrole=edit --serviceaccount=spark1:spark-sa -n spark1
rolebinding.rbac.authorization.k8s.io/spark-sa-rb created


运行Job样例 (集群模式)

设置k8s用户验证环境

[AppleScript] 纯文本查看 复制代码
[root@master ~]# export NAMESPACE=spark1
[root@master ~]# export SA=spark-sa
[root@master ~]# export K8S_CACERT=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
[root@master ~]# export K8S_TOKEN=/var/run/secrets/kubernetes.io/serviceaccount/token
[root@master ~]# 

运行spark样例Job


[AppleScript] 纯文本查看 复制代码
bin/spark-submit --name sparkpi-1  \
                 --master k8s://https://kubernetes.default.svc.cluster.local:443  \
                 --deploy-mode cluster  \
                 --class org.apache.spark.examples.SparkPi  \
                 --conf spark.kubernetes.driver.pod.name=$DRIVER_NAME  \
                 --conf spark.kubernetes.authenticate.submission.caCertFile=$K8S_CACERT  \
                 --conf spark.kubernetes.authenticate.submission.oauthTokenFile=$K8S_TOKEN  \
                 --conf spark.kubernetes.authenticate.driver.serviceAccountName=$SA  \
                 --conf spark.kubernetes.namespace=$NAMESPACE  \
                 --conf spark.executor.instances=3  \
                 --conf spark.kubernetes.container.image=$DOCKER_IMAGE  \
                 local:///usr/local/spark/examples/jars/spark-examples_2.11-2.4.0.jar 1000




















推荐了解热门学科

java培训 Python人工智能 Web前端培训 PHP培训
区块链培训 影视制作培训 C++培训 产品经理培训
UI设计培训 新媒体培训 软件测试培训 Linux运维
大数据培训 智能机器人软件开发




传智播客是一家致力于培养高素质软件开发人才的科技公司“黑马程序员”是传智播客旗下高端IT教育品牌。自“黑马程序员”成立以来,教学研发团队一直致力于打造精品课程资源,不断在产、学、研3个层面创新自己的执教理念与教学方针,并集中“黑马程序员”的优势力量,针对性地出版了计算机系列教材50多册,制作教学视频数+套,发表各类技术文章数百篇。

传智播客从未停止思考

传智播客副总裁毕向东在2019IT培训行业变革大会提到,“传智播客意识到企业的用人需求已经从初级程序员升级到中高级程序员,具备多领域、多行业项目经验的人才成为企业用人的首选。”

中级程序员和初级程序员的差别在哪里?
项目经验。毕向东表示,“中级程序员和初级程序员最大的差别在于中级程序员比初级程序员多了三四年的工作经验,从而多出了更多的项目经验。“为此,传智播客研究院引进曾在知名IT企业如阿里、IBM就职的高级技术专家,集中研发面向中高级程序员的课程,用以满足企业用人需求,尽快补全IT行业所需的人才缺口。

何为中高级程序员课程?

传智播客进行了定义。中高级程序员课程,是在当前主流的初级程序员课程的基础上,增加多领域多行业的含金量项目,从技术的广度和深度上进行拓展“我们希望用5年的时间,打造上百个高含金量的项目,覆盖主流的32个行业。”传智播客课程研发总监于洋表示。




黑马程序员热门视频教程

Python入门教程完整版(懂中文就能学会) 零起点打开Java世界的大门
C++| 匠心之作 从0到1入门学编程 PHP|零基础入门开发者编程核心技术
Web前端入门教程_Web前端html+css+JavaScript 软件测试入门到精通


在线咨询 我要报名
和我们在线交谈!