Kubernetes助力Spark大数据分析

  • 时间:
  • 浏览:2
  • 来源:大发时时彩网页计划—大发快三彩票

(1) 亲戚亲戚.我都都 测试的是Spark 2.3.0,否则Spark on Kubernetes任务提交后,实际上在集群中是以custom resources和custom controller的形式运行,就是 亲戚亲戚.我都都 我不要 有另俩个 1.7+版本的k8s集群,一起去我不要 启动Kubernetes DNS和RBAC。

(2) 源代码编译为wordcount.jar文件,并编写Dockerfile文件,内容如下:

--conf spark.executor.instances=2 \

/home/nsfocus/dengxincheng/spark-2.3.1-bin-hadoop2.6/bin/spark-submit \

转变思维,打开量子的大门

2 打包制作Spark镜像

4. Driver Pod所处completed情况报告,保留日志,直到Kubernetes GC否则手动清理

接下来就介绍怎样才能在有另俩个 Kubernetes上运行Spark线程池。

$ ./bin/docker-image-tool.sh -r <repo> -t my-tag push

5总结

4 运行买车人编写的Spark线程池

Kubernetes 作为有另俩个 广受欢迎的开源容器协调系统, 是Google于2014年酝酿的项目。从Google趋势上看得人,Kubernetes自2014年以来热度一路飙升,短短几年时间就已超越了大数据分析领域的长老Hadoop。本公众号另有另俩个 的文章(Kubernetes核心组件解析)也对Kubernetes的十几条 组件做了一点详细的剖析,本文就带领亲戚亲戚.我都都 一起去看看Kubernetes和Spark碰到一起去会擦出哪些地方样的火花。

local:///opt/spark/examples/jars/spark-examples_2.11-2.3.0.jar

$ kubectl create serviceaccount spark

期回顾

--deploy-mode cluster \

$ tar -zxvf spark-2.3.0-bin-hadoop2.6

(5) 查看运行日志,都我不要 看得人π值否则计算出来了

当亲戚亲戚.我都都 通过spark-submit将Spark作业提交到Kubernetes集群时,会执行以下流程:

--conf spark.executor.instances=2 \

(3) 查看镜像

关于亲戚亲戚.我都都

--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \

(2) 为Spark创建有另俩个 RBAC的role

$ docker build -t registry/spark:2.3.0 -f kubernetes/dockerfiles/spark/Dockerfile .

--class org.apache.spark.examples.SparkPi \

--deploy-mode cluster \

1. Spark在Kubernetes Pod中创建Spark Driver

本文转自掘金-Kubernetes助力Spark大数据分析

2. Driver调用Kubernetes API创建ExecutorPods,Executor Pods执行作业代码

1前提条件

local:///opt/spark/jars/wordcount.jar

$ docker images | grep registry/spark

(3)wordcount.jar和DockerFlie文件装进同一路径下,并在该路径下运行docker bulid命令打包镜像:

Spark2.3.0都我不要 将编写好的数据避免线程池直接通过spark-submit提交到Kubernetes集群,通过创建有另俩个 Drive Pod和一系列Executor Pods,否则一起去协调完成计算任务,整体过程的官方示意图如下。

Spark原生支持Kubernetes最大的好处是,我不要 在Kubernetes集群上再建立一层资源调度系统,假如有一天建立有另俩个 新Spark容器镜像,并指派要花费的RBAC权限角色,给所要执行的Spark应用线程池,就都我不要 在Kubernetes集群上运行Spark线程池了。

量子之盾—打造防窃听和安全的量子通信系统

$ kubectl create clusterrolebinding spark-role --clusterrole=edit --serviceaccount=default:spark --namespace=default

--conf spark.kubernetes.container.image=registry/spark:2.3.0 \

(2) 制作Spark基础镜像

资源隔离:任务都我不要 提交到指定的namespace,另有另俩个 都我不要 复用Kubernetes原生的qouta限制,实现任务资源的限制;

--master k8s://192.168.19.13:6443\

量子之矛—后量子计算时代你的系统还安全吗?

【招聘】绿盟科技创新中心实习生招聘公告(长期有效)

使用docker build命令制作

$ kubectl logs -f spark-pi-63abb54cf382394d95413f43744c65ed-Drive

真是只需把买车人写好的Spark线程池编译成jar文件,否则打包到Spark基础镜像中,就都我不要 提交到Kubernetes集群中运行了。

Spark2.3.0另有另俩个 的版本只原生支持Standalone、YARN和Mesos一种生活部署模式,也否则说要迁移Spark2.3.0另有另俩个 的Spark到Kuberbetes上,还得准备一层Standalone、YARN否则Mesos环境,不过Spark2.3.0否则引入了对Kubernetes的原生支持。

--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \

$ cd spark-2.3.0-bin-hadoop2.6

内容编辑:安全大数据分析实验室 邓新程 责任编辑:肖晴

3. 计算作业另有另俩个 始于,Executor Pods回收并清理

原生资源调度:不再我不要 二级调度,直接使用Kubernetes原生的调度模块,实现与一点应用的混布;

(5)当任务运行完了另有另俩个 ,使用kubectl logs查看wordcount线程池运行所对应drive pod内的日志,都我不要 得词频最高的前20个词,如下图。

用户自定义:用户都我不要 在Spark基础镜像中打上买车人的Application, 更加灵活和方便;

$ kubectl get po

$docker build -t registry/spark_wordcount:latest -f Dockerfile .

本公众号原创文章仅代表作者观点,不代表绿盟科技立场。所有原创内容版权均属绿盟科技研究通讯。未经授权,严禁任何媒体以及微信公众号复制、转载、摘编或以一点法律土办法使用,转载须注明来自绿盟科技研究通讯并附上本文链接。

(1)准备源代码。以有另俩个 wordcount线程池为例。线程池会从有另俩个 小说网站下载《了不起的盖茨比》的英文版小说,否则对其做词频统计,源代码如下:

(4)使用如下命令将wordcount线程池提交到Kubernetes集群:

--conf spark.kubernetes.container.image=registry/spark_wordcount:latest \

--name spark-pi \

绿盟科技研究通讯由绿盟科技创新中心负责运营,绿盟科技创新中心是绿盟科技的前沿技术研究部门。包括云安全实验室、安全大数据分析实验室和物联网安全实验室。团队成员由来自清华、北大、哈工大、中科院、北邮等多所重点院校的博士和硕士组成。

绿盟科技创新中心作为“中关村科技园区海淀园博士后工作站分站”的重要培养单位之一,与清华大学进行博士后联合培养,科研成果已蕴含各类国家课题项目、国家专利、国家标准、高水平学术论文、出版专业书籍等。

$ kubectl cluster-info

新版的Spark加入对Kubernetes的原生支持,统一了Spark线程池在Kubernetes上所有工作负载的控制层,另有另俩个 都我不要 僵化 群集管理并提高资源利用率。总的来说,使用Kubernetes原生调度的Spark主要有以下优点:

COPY wordcount.jar /opt/spark/jars

--class example.wordcount.WordCount \

使用Spark提供的docker-image-tool.sh脚本制作

import org.apache.commons.io.IOUtilsimport org.apache.spark.sql.functions._import java.net.URLimport org.apache.spark.sql.SparkSessionclass WordCount { def main(args: Array[ String]) { val spark = SparkSession .builder .appName("CopyData") .getOrCreate() import spark.implicits._ valbankText = spark.sparkContext.parallelize( IOUtils.toString ( newURL("http://novel.tingroom.com/novel_down.php?aid=319&dopost=txt") ).split("\n" )) bankText.flatMap(p=>{ val pattern = "[^a-zA-Z0-9-']".r val line = pattern.replaceAllIn(p," " ) line.split(" ") }).map((_,1 )).reduceByKey(_+_).sortBy(p=>p._2,false ).toDF("word","count"). where(length ('word)> 4).show }}

至此,使用官方的例子体验Spark on Kubernetes就完成了。这麼 ,怎样才能提交买车人编写的Spark线程池到Kubernetes集群呢?

(1) 获取集群信息,确认Kubernetes master地址

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

--name wordcount \

(2) Spark2.3.0版本的二进制包,下载链接https://archive.apache.org/dist/spark/spark-2.3.0/spark-2.3.0-bin-hadoop2.6.tgz

--master k8s://k8s-master\

3 运行Spark官方例子

FROM registry/spark:2.3.0

亲戚亲戚.我都都 持续探索信息安全领域的前沿学术方向,从实践出发,结合公司资源和先进技术,实现概念级的原型系统,进而交付产品线孵化产品并创造巨大的经济价值。

(4) 查看运行情况报告,计算π值的例子运行快一点 ,都我不要 看得人它否则运行另有另俩个 始于了

(3) 运行如下命令,向Kubernetes集群提交计算π值的例子

$/spark-2.3.0-bin-hadoop2.6/bin/spark-submit \

RUN mkdir -p /opt/spark/jars

(1) 解压并进入到解压后的Spark安装文件路径