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

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 使用经验的用户。它操作简便,无需额外组件,灵活性较高。但在大规模和自动化需求较高的场景中,管理和扩展的能力相对较弱。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/369866.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JAVA基础知识(上)

# 一、说说&和&&的区别? 作为运算符:& 将二进制的每一位进行与运算 作为逻辑运算符:两者都是与,&& 如果左边为假则终止右边运算,即短路运算。& 则需要把两边的比较执行完 # 二、int和Integer的区…

智慧校园-资产管理系统总体概述

智慧校园资产管理系统是面向教育机构设计的一体化数字平台,其核心目标在于通过先进的信息技术手段,全面优化校园内部的资产管理流程。该系统致力于提升资产管理的效率与透明度,同时降低成本并确保所有操作符合财务及审计规范,为校…

springboot基于Java的超市进销存系统+ LW+ PPT+源码+讲解

第三章系统分析与设计 3.1 可行性分析 一个完整的系统,可行性分析是必须要有的,因为他关系到系统生存问题,对开发的意义进行分析,能否通过本网站来补充线下超市进销存管理模式中的缺限,去解决其中的不足等&#xff0c…

Cesium 二三维热力图

Cesium 二三维热力图 原理:主要依靠heatmap.js包来实现 效果图:

Vue 前端修改页面标题无需重新打包即可生效

在public文件夹下创建config.js文件 index.html页面修改 其他页面的标题都可以用window.title来引用就可以了!

Java项目:基于SSM框架实现的校园快递代取管理系统【ssm+B/S架构+源码+数据库+毕业论文】

一、项目简介 本项目是一套基于SSM框架实现的校园快递代取管理系统 包含:项目源码、数据库脚本等,该项目附带全部源码可作为毕设使用。 项目都经过严格调试,eclipse或者idea 确保可以运行! 该系统功能完善、界面美观、操作简单、…

关于 Mac 系统 .DS_store 文件的起源

原文:Arno - 2006.10.01 (前排提醒:可以在 .gitignore 中添加 .DS_Store,否则 git 仓库会存储这个和项目无关的文件。) 如果你是 Mac 用户,曾经将文件从 Mac 传输到 Windows,那么可能对 .DS_S…

Hadoop权威指南-读书笔记-02-关于MapReduce

Hadoop权威指南-读书笔记 记录一下读这本书的时候觉得有意思或者重要的点~ 还是老样子~挑重点记录哈😁有兴趣的小伙伴可以去看看原著😊 第二章 关于MapReduce MapReduce是一种可用于数据处理的编程模型。 MapReduce程序本质上是并行运行的&#xff0c…

算法体系-26 第二十六节:第26节:单调栈结构 (5节)

一 单调栈知识讲解 1.1描述 一个数组里面想的到每个位置与他最近的左边和右边比他小的最近的信息 1.2 分析 通过单调栈的特点,for遍历数组中的每个数,当前数来的时候对比单调栈中的数进行每个数的左右判断完满足条件的进行更新到当前i种的 int[][] re…

【鸿蒙学习笔记】Stage模型工程目录

官方文档:应用配置文件概述(Stage模型) 目录标题 FA模型和Stage模型工程级目录模块级目录app.json5module.json5程序执行流程程序基本结构开发调试与发布流程 FA模型和Stage模型 工程级目录 模块级目录 app.json5 官方文档:app.j…

【51单片机入门】数码管原理

文章目录 前言共阴极与共阳极数码管多个数码管显示原理 总结 前言 在我们的日常生活中,数码管被广泛应用于各种电子设备中,如电子表、计时器、电子钟等。数码管的主要功能是显示数字和一些特殊字符。在这篇文章中,我们将探讨数码管的工作原理…

【机器学习】机器学习与自然语言处理的融合应用与性能优化新探索

引言 自然语言处理(NLP)是计算机科学中的一个重要领域,旨在通过计算机对人类语言进行理解、生成和分析。随着深度学习和大数据技术的发展,机器学习在自然语言处理中的应用越来越广泛,从文本分类、情感分析到机器翻译和…

项目部署_持续集成_Jenkins

1 今日内容介绍 1.1 什么是持续集成 持续集成( Continuous integration , 简称 CI )指的是,频繁地(一天多次)将代码集成到主干 持续集成的组成要素 一个自动构建过程, 从检出代码、 编译构建…

【Python】基于KMeans的航空公司客户数据聚类分析

💐大家好!我是码银~,欢迎关注💐: CSDN:码银 公众号:码银学编程 实验目的和要求 会用Python创建Kmeans聚类分析模型使用KMeans模型对航空公司客户价值进行聚类分析会对聚类结果进行分析评价 实…

linux-5.10.110内核源码分析 - Freescale ls1012a pcie host驱动

1、dts pcie设备树 1.1、pcie设备树 pcie1: pcie3400000 {compatible "fsl,ls1012a-pcie";reg <0x00 0x03400000 0x0 0x00100000 /* controller registers */0x40 0x00000000 0x0 0x00002000>; /* configuration space */reg-names "regs", &…

尚硅谷k8s 2

p54-56 k8s核心实战 service服务发现 Service:将一组 Pods 公开为网络服务的抽象方法。 #暴露Deploy,暴露deploy会出现在svc kubectl expose deployment my-dep --port8000 --target-port80#使用标签检索Pod kubectl get pod -l appmy-depapiVersion: v1 kind: Service metad…

Python酷库之旅-第三方库Pandas(006)

目录 一、用法精讲 10、pandas.DataFrame.to_excel函数 10-1、语法 10-2、参数 10-3、功能 10-4、返回值 10-5、说明 10-6、用法 10-6-1、数据准备 10-6-2、代码示例 10-6-3、结果输出 11、pandas.ExcelFile类 11-1、语法 11-2、参数 11-3、功能 11-4、返回值 …

您的私人办公室!-----ONLYOFFICE8.1版本的桌面编辑器测评

随时随地创建并编辑文档&#xff0c;还可就其进行协作 ONLYOFFICE 文档是一款强大的在线编辑器&#xff0c;为您使用的平台提供文本文档、电子表格、演示文稿、表单和 PDF 编辑工具。 网页地址链接&#xff1a; https://www.onlyoffice.com/zh/office-suite.aspxhttps://www…

Zynq系列FPGA实现SDI视频编解码,基于GTX高速接口,提供5套工程源码和技术支持

目录 1、前言工程概述免责声明 2、相关方案推荐本博已有的 SDI 编解码方案本方案在Xilinx--Kintex系列FPGA上的应用 3、详细设计方案设计原理框图SDI 输入设备Gv8601a 均衡器GTX 解串与串化SMPTE SD/HD/3G SDI IP核BT1120转RGB图像缓存视频读取控制HDMI输出RGB转BT1120Gv8500 驱…

Docker 运行Nacos无法访问地址解决方法

参考我的上一篇文章去配置好镜像加速器&#xff0c;镜像加速器不是配置越多越好&#xff0c;重试次数多了会失败 Dockerhub无法拉取镜像配置阿里镜像加速器-CSDN博客 错误的尝试 最开始按照网上的方式去配了一大堆&#xff0c;发现下不下来。 镜像源地址&#xff1a;https:…