介绍
库伯内斯的阿帕奇火花操作员
自 2014 年由 Google 推出以来,Kubernetes 与 Docker 本身一起获得了许多人气,自 2016 年以来已成为事实上的集装箱协调器,作为市场标准而建立。在所有主要云中都有云托管all版本。[1] [2] [3] (包括数字海洋和阿里巴巴)。
随着这种流行而来是协调器的各种实现和用例,其中包括使用容器执行状态应用程序,包括数据库。
托管协调的数据库的动机是什么?这是一个很好的问题。但是,让我们关注在 Kubernetes 上运行工作负载的Spark 操作员。
一个原生Spark运营商的想法出现在2016年,在此之前,你不能运行Spark工作本地,除了一些黑客的替代方案,如运行阿帕奇泽佩林在库伯奈斯或创建你的阿帕奇火花集群在库伯内斯(从GitHub的官方Kubernetes组织)引用Spark工作人员在独立模式。
但是,本机执行将更有趣,利用Kubernetes 计划程序负责执行分配资源、提供弹性和更简单的界面来管理 Apache Spark 工作负载。
考虑到这一点,Apache Spark 运营商的开发得到了关注,合并并发布到 2018 年 2 月推出的 Spark 版本 2.3.0 中。
如果您渴望阅读更多有关 Apache Spark 建议的信息,您可以前往Google 文档中发布的设计文档cio.com/article/3211428/what-is-digital-transformation-a-necessary-disruption.html”rel=”nofollow”目标=”_blank”-通过广泛使用的数字转型重塑自己,以便它们具有竞争力,最重要的是,为了在日益活跃的市场中生存,通常可以看到包括大数据、人工智能和云计算在内的方法[1] [2] [3]。
在数据砖块博客(由Apache Spark的创建者创立的公司)中,可以在Databricks博客上阅读在大数据上下文中使用云计算而不是本地服务器的好处之间的有趣比较。
我们看到云计算(即使那些能够负担硬件并在本地运行的公司)被广泛采用,我们注意到,由于数据团队(BI/数据科学/分析)越来越多地选择使用谷歌BigQuery或AWS Redshift等工具,因此这些云实现大多没有Apache Hadoop。因此,将 Hadoop 与使用YARN作为资源管理器的唯一意图进行分拆是没有意义的。
另一种方法是使用 Hadoop 群集提供商(如Google DataProc或AWS EMR)创建临时群集。仅举几个选项。
为了更好地了解 Spark 运算符的设计,GitHub 上的 GCP文档是一个不费脑筋的文档。
让我们动手吧!
预热发动机
现在,这个词已经传播,让我们得到我们的手,以显示发动机运行。为此,让我们使用:
- 码头作为库伯内斯的容器引擎Minikube(安装指南),以便利提供Kubernetes(是的,这将是本地执行);
- 要与 Kubernetes API 交互,必须
kubectl
安装,如果您没有,请按照此处的说明操作。 - 大于 2.3.0 的 Apache Spark 的编译版本。
--master
:接受 URL 中的前缀k8s://
,用于命令公开的 Kubernetes 主 API 终结点https://$(minikube ip):8443
--conf spark.kubernetes.container.image=
:将 Docker 映像配置为在库伯内斯中运行。
安装必要的工具后,有必要在环境变量中包含 Apache Spark 路径 PATH
,以缓解 Apache Spark 可执行文件的不可执行性。只需运行:
创建 Minikube”群集”
最后,要有一个 Kubernetes”群集”,我们将启动 一个 minikube
,目的是从Spark 存储库中运行一个示例,称为 SparkPi
演示。
xxxxxxx
-- 内存=4g构建 Docker 映像
让我们使用 Minikube Docker 守护进程来不依赖于外部注册表(并且仅在 VM 上生成 Docker 映像层,便于以后进行垃圾处理)。Minikube 有一个包装,使我们的生活更轻松:
壳
xxxxxxx
11$(迷你库贝码头)
配置守护进程环境变量后,我们需要 Docker 映像来运行作业com/apache/火花/blob/master/bin/docker 图像工具.sh"rel"nofollow"目标="_blank"_Spark 存储库中的 shell 脚本,以帮助实现此。考虑到我们的
PATH
配置正确,只需运行:壳
xxxxxxx
11-m-t-t最新版本
FYI:
-m
此处的参数指示一个 minikube 生成apache.org/docs/latest/submitting-applications.html"rel="不跟随"目标="_blank"=火花提交。但是,Spark 运算符支持使用CRD在"Kubernetes 语言"中定义作业,下面是一些示例- 以后。
洞里着火了!
使用 Apache Spark 版本进行参数化时,Scala 版本和 .jar 之间的差距中:
壳
xxxxxxx
11-- 部署模式群集 |3--名称火花-pi |
4--类组织.apache.spark.示例.SparkPi |
5--conf spark.执行器.实例=2 |
6--执行器内存1024m |
7--conf火花.kubernetes.容器.图像=火花:最新 |
8# 这里
新增功能包括:
gnu.org/software/bash/manual/html_node/Command-Substitution.html"rel="不跟随"目标="_blank"=shell命令替换;
样品输出:
纯文本
xxxxxxx
1271
2319/08/2211:59:09INFO日志记录PodStatusWatcherImpl状态已更改,
4新的状态窗格名称火花-pi-1566485909677-驱动程序命名空间默认值
5标签火花-应用程序-选择器->火花-20477e803e7648a59e9bcd37394f7f60,
6火花-角色->驾驶员吊舱uidc789c4d2-27c4-45ce-ba10-539940cccb8d
7体积:火花-本地-dir-1,火花-conf-体积,默认令牌token-tj7jn9节点名称minikube启动时间2019-08-22T14:58:30Z容器
10图像火花:Docker阶段成功状态:
11[容器状态(集装箱 ID=码头 ://e044d944d2ebeee2855cd2b993c62025d
126406258ef247648a5902bf6ac09801cc图像=火花:docker,
13a87de32c21787ff82f,最后一个国家=容器状态(运行=null,15终止=空等待=空附加属性=*,
16名称=火花-kubernetes-驱动程序就绪=错误重新启动计数=0,
17状态=容器状态(运行=null,
18终止=容器状态终止(容器 ID=码头 ://e044d944d2ebe
19完成 At=2019-08-22T14:59:08Z,消息=空,原因=已完成,21信号=零启动At=2019-08-22T14:58:32Z,
22其他属性=等待=空附加属性=*,
23其他属性={)}
2425状态:容器名称:火花-kubernets-驱动程序容器图像:27火花:Docker容器状态终止退出代码0
要查看作业结果(和整个执行),我们可以运行一个
kubectl logs
传递驱动程序 pod 的名称作为参数:壳
xxxxxxx
11
这带来了输出(省略了一些条目),类似于:
纯文本
xxxxxxx
1351
219/08/2214:59:08INFOTaskSetManager完成任务1.0阶段stage0.0
3(TID1在52毫秒上 172.17172.17。0.7 (执行人1) ( 2/2)2
419/08/2214:59:08INFO任务计划删除Removed任务集0.0其
5任务已全部all完成从池19/08/2214:59:08INFO
6scala:38)完成in70.957s
819/08/2214:59:08INFODAG计划工作Job0完成减少在
9SparkPi.scala:38采取1.040608sPi大致3.138915694578473 roughly
1019/08/2214:59:08INFOSparkUI停止火花WebUI在
11
1219/08/2214:59:08INFO库伯内斯ClustersSrBackend关闭
13关闭所有执行器
1419/08/2214:59:08INFO
15库伯内斯Cluster计划返回$库伯内斯驱动器端问
16每个执行者要关闭down
17客户端已been关闭(如果应用程序已关闭,则预期这是19关闭down.)
2019/08/2214:59:08INFO地图输出跟踪器主终结点:
21地图输出跟踪器主终结点已停止!
2219/08/2214:59:08INFO内存存储内存存储清除
2319/08/22 14:59:08 INFO 块管理器主:块管理器主机停止2519/08/2214:59:08INFO
26输出提交协调员$输出提交协调员终结点:
27输出提交协调员停止!
2819/08/2214:59:08INFO火花上下文已成功停止火花上下文
2919/08/22 14:59:08 INFO 关机管理器:删除目录31/tmp/火花-aeadc6ba-36aa-4b7e-8c74-53aa48c3c9b2
3219/08/2214:59:08INFO关闭钩管理器删除目录
33/var/数据/火花-084e8326-c8ce-4042-a2ed-75c1eb80414a/火花-ef8117bf-90
34...
结果出现在:
纯文本
xxxxxxx
1119/08/2214:59:08INFOdagsr作业0完成减少在
2scala:38,采取 1.040608 s Pi 大致 3.138915694578473 roughly最后,让我们删除 Minikube 生成的 VM 以清理环境(除非您要继续玩它):
壳
xxxxxxx
11
Comments are closed.