当前位置: 代码网 > it编程>数据库>MsSqlserver > spark on k8s两种方式的原理与对比

spark on k8s两种方式的原理与对比

2024年07月31日 MsSqlserver 我要评论
Spark on k8s Operator 更适合大规模、需要自动化和集中管理的场景。它利用 Kubernetes 的原生功能,实现自动化管理和配置集中化,虽然增加了一些复杂性,但在动态和多租户环境中表现出色。Spark on k8s 适合简单、直接的 Spark 作业提交和管理场景,特别是对于那些已有 Spark 使用经验的用户。它操作简便,无需额外组件,灵活性较高。但在大规模和自动化需求较高的场景中,管理和扩展的能力相对较弱。

spark on k8s两种方式的原理与对比

1、spark on k8s 方式

spark-submit可以直接用来向 kubernetes 集群提交 spark 应用,提交机制如下:

1、spark 创建一个在kubernetes pod中运行的 spark 驱动程序。
2、驱动程序创建在 kubernetes pod 中运行的执行器并连接到它们,然后执行应用程序代码。
3、当应用程序完成时,执行器容器终止并被清理,但驱动程序容器会保留日志并在 kubernetes api 中保持“完成”状态,直到最终被垃圾收集或手动清理。

在这里插入图片描述

优点

简单直接:

使用 spark-submit 命令直接提交作业,无需额外学习和配置 spark operator。

原生 spark 体验:

提供原生的 spark 使用体验,熟悉 spark 的用户可以更快上手。

灵活性高:

通过 spark-submit 可以直接控制 spark 作业的配置和运行参数,适应不同的需求。

无需额外组件:

不需要安装和维护 spark operator 这个额外的组件,减少了系统复杂性。

缺点

手动管理:

需要手动管理 spark 作业的生命周期,包括提交、监控、重启等任务,增加了运维负担。

缺乏集中管理:

每次提交作业都需要单独配置,缺乏集中化管理和版本控制的能力。

2、spark on k8s operator 方式

使用 spark operator 是一种更高级的方式,它提供了一个 kubernetes 原生的方法来管理 spark 作业。spark operator 是一个 kubernetes 控制器,负责处理 sparkapplication crd(自定义资源定义)。
1、安装 spark operator,然后定义 spark-app.yaml,再执行 kubectl apply -f spark-app.yaml,这种申明式 api 和调用方式是 k8s 的典型应用方式。
2、使用 kubernetes 自定义资源来指定、运行和显示 spark 应用程序的状态。

在这里插入图片描述
核心组件
custom resource definition (crd):

spark operator 定义了一个自定义资源类型,称为 sparkapplication。这个 crd 描述了一个 spark 应用程序的配置,包括应用程序名称、主类、部署模式(cluster 或 client)、资源配置等。

spark operator controller:
spark operator controller 是一个 kubernetes 控制器,它负责监视 sparkapplication crd 的变化(如创建、更新、删除)。当检测到变化时,它会根据 crd 的配置来创建和管理相应的 kubernetes 资源。

工作流程

1、提交 spark 应用:

用户通过 kubectl 或 ci/cd 管道等方式提交一个 sparkapplication crd 对象到 kubernetes 集群。

监视和响应:

spark operator controller 监视 kubernetes 集群中的 sparkapplication 对象。当检测到一个新的 sparkapplication 对象时,控制器会读取其配置,并创建相应的 kubernetes 资源(如 pod、service 等)来运行 spark 应用程序。

创建 driver 和 executor pods:

根据 sparkapplication 的配置,spark operator 会创建 spark driver pod 和相应数量的 executor pods。driver pod 负责协调 spark 应用的执行,而 executor pods 则执行具体的计算任务。

管理生命周期:

spark operator 负责管理整个 spark 应用程序的生命周期,包括启动、监视、失败重启和删除等操作。它会根据 spark 应用的状态更新 sparkapplication 对象的状态字段,用户可以通过查询 sparkapplication 对象来了解应用的当前状态。

优点

1、自动化管理:

spark operator 提供声明式配置,简化了 spark 作业的提交和管理过程。自动处理作业的创建、监控、重启等任务。

2、kubernetes 原生集成:

使用 crd(自定义资源定义)和控制器,深度集成 kubernetes 的功能,充分利用其调度、扩展和管理能力。

3、作业配置集中化:

sparkapplication crd 提供了集中管理和版本控制的能力,可以通过 gitops 等工具更好地管理作业配置。

4、易于扩展和管理:

通过 helm charts 部署和管理 spark operator 及其相关资源,简化了安装和维护过程。

缺点

增加了复杂性:

需要额外学习和维护 spark operator,自带的控制器和 crd 增加了系统复杂性。

调试困难:

调试 spark operator 相关问题可能较为复杂,需要了解 kubernetes 和 spark 的运行机制和日志分析。

版本兼容性:

可能存在 spark operator 和 spark 版本之间的兼容性问题,需要确保两者的版本匹配。

总结

spark on k8s operator 更适合大规模、需要自动化和集中管理的场景。它利用 kubernetes 的原生功能,实现自动化管理和配置集中化,虽然增加了一些复杂性,但在动态和多租户环境中表现出色。

spark on k8s 适合简单、直接的 spark 作业提交和管理场景,特别是对于那些已有 spark 使用经验的用户。它操作简便,无需额外组件,灵活性较高。但在大规模和自动化需求较高的场景中,管理和扩展的能力相对较弱。

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com