Spark基础 - 名词汇总及集群模式概述

news2024/9/21 12:43:03

原文地址: Spark基础 - 名词汇总及集群模式概述

本文档内容参考Spark官方文档:Cluster Mode Overview

一. Glossary(术语)

TermMeaningcomment
ApplicationUser program built on Spark. Consists of a driver program and executors on the cluster.构建在Spark上的用户程序。
包含1个dirver和多个executor。
Application jarA jar containing the user’s Spark application. In some cases users will want to create an “uber jar” containing their application along with its dependencies. The user’s jar should never include Hadoop or Spark libraries, however, these will be added at runtime.包含用户Spark应用的Jar包。
用户的Jar包不要包含Hadoop和Spark的依赖,因为这些依赖会在运行的时候添加。
Driver programThe process running the main() function of the application and creating the SparkContext运行在main函数里的程序,并且创建了SparkContext。
直白的说就是用户的代码。
Cluster managerAn external service for acquiring resources on the cluster (e.g. standalone manager, Mesos, YARN, Kubernetes)用于获取集群资源的外部服务。
最常见的例如YARN、k8s。
Deploy modeDistinguishes where the driver process runs. In “cluster” mode, the framework launches the driver inside of the cluster. In “client” mode, the submitter launches the driver outside of the cluster.区分diver程序运行在哪里,有两种模式:clusterclient

cluster: 在集群内启动程序。
client: 在集群外启动程序。
Worker nodeAny node that can run application code in the cluster集群内运行应用程序的节点。
ExecutorA process launched for an application on a worker node, that runs tasks and keeps data in memory or disk storage across them. Each application has its own executors.一个启动在Worker node上的进程,它用来运行tasks,并且把运行时的数据保存在内存或磁盘。每一个application拥有自己的executors。
TaskA unit of work that will be sent to one executor一个Executor的可执行的逻辑单元
JobA parallel computation consisting of multiple tasks that gets spawned in response to a Spark action (e.g. save, collect); you’ll see this term used in the driver’s logs.以action算子为边界,一个action触发一个job。
StageEach job gets divided into smaller sets of tasks called stages that depend on each other (similar to the map and reduce stages in MapReduce); you’ll see this term used in the driver’s logs.一个job会被分成1个或多个stage,一个stage是有一组并行的task构成。

二. Cluster Mode Overview(集群模式概述)

通过下面文档能够简单的理解Spark所涉及的相关组件是如何在Spark集群上运行。

1. Components(组件)

Spark应用程序由 主程序(driver program) 中的SparkContext对象协调,然后作为集群上独立的进程集运行。

在集群上运行Spark程序时,SparkContext能够连接多种类型的cluster manager(例如Spark自己的standalone集群、Mesos、YARN或者k8s)来申请应用程序所需的资源。

和相关cluster manager连接后,Spark在集群的节点上能够执行多个 executor (执行业务逻辑的计算和存储业务逻辑中的数据)。

然后,Cluster Manager把application code发送给executor.

最后,SparkContext把task交给executor来运行。

总结:SparkContext通过Cluster Manager在Cluster Manager对应类型的集群上申请资源并启动多个Executor。申请到资源后,SparkContext把需要执行的Spark任务发送到Executor内进行运行。
Spark架构
这套体系里,有以下几处需要注意:

  1. 每个应用程序都有自己的executor进程,这些进程在整个应用程序执行期间保持运行,并在多个线程中运行任务。这样做的好处是在scheduling端(每个驱动程序调度自己的任务)和executor端(来自不同应用程序的任务运行在不同的jvm中)将应用程序彼此隔离。然而,这也意味着如果不将数据写入外部存储系统,就不能在不同的Spark应用程序(SparkContext实例)之间共享数据;

  2. Spark对cluster manager是无感知的。只要Spark能获取executor processes,并且executor process之间是可以相互通信的,这就会使得Spark更容易的运行在其它类型的cluster manager上(例如 Mesos/YARN/Kubernetes);

  3. Driver程序在其整个存活期间必须监听并接受来自它的executor的连接(比如:请参见 spark.driver.port in the network config section )。因此,driver程序必须与worker节点之间网络是可连接的;

  4. 因为driver程序在集群上调度任务,所以driver程序应该靠近worker node运行的机器,最好是在同一个局域网上。如果需要向远程集群提交任务,最好在driver上开启RPC,并让开启RPC服务的driver就近提交这屋,而不是在远离worker node的地方运行driver。

2. Cluster Manager Types(集群管理器的类型)

目前支持以下几种Cluster Manager

  • Standalone:Spark中内置的一个简单的Cluster Manager,可以很容易地建立集群环境。

  • Apache Mesos:一个通用的集群管理器,也可以运行Hadoop MapReduce和服务应用程序。(弃用)

  • Hadoop YARN:Hadoop 2 和 Hadoop 3中的resource manager。

  • Kubernetes:一个用于自动化部署、扩展和管理容器化应用程序的开源系统。

3. Submitting Applications(提交应用程序)

可以使用spark-submit脚本将应用程序提交到任何类型的集群。应用程序提交指南中详细描述了如何做到这一点。

4. Monitoring(监控)

通常情况下,在 http://:4040上,显示着有关tasks、executors和storage usage相关的信息。

更多监控相关的信息:Monitoring and Instrumentation

5. Job Scheduling(作业调度)

Spark可以通过在应用外(集群管理水平)和应用里(如果在同一个SparkContext中有多个计算指令)进行资源分配的控制。 作业调度概述 中更加详细的描述了相关内容。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Springboot应用整合Sentinel实现限流、熔断、降级笔记

可以使用官方的sentinel 也可使用进行持久化改造后的Sentinel ,本文基于此进行记录。Sentinel持久化到Nacoshttps://blog.csdn.net/chenjian723122704/article/details/130098896 Sentinel版本为 1.8.6 Nacos版本为 2.2.0 关于网关限流、限流和熔断,我…

【Step1】Linux Kernel -基础

《Linux内核设计与实现.第3版》1-2章学习笔记 1. 获取内核源码 http://www.kernel.org 2. 内核版本命名规则 内核的版本号主要有四个数字组成。 从版本号: 偶数表示稳定版(可用于企业级环境),奇数表示开发版; 修订…

ack应答机制

ACK在 Kafka 中,ack(Acknowledgment)机制是指用于确认生产者发送的消息已经被成功写入到 Kafka 分区中的一种机制。生产者可以通过 ack 参数来控制这个机制,以便根据自己的需求进行设置。 ACK应答级别0:生产者发送过来…

手机号码归属地 API 实现个性化推荐的思路分析

前言 随着移动互联网和智能手机的普及,越来越多的人使用手机上网和购物,移动营销已成为企业获取用户和提升品牌知名度的重要手段。手机号码归属地 API 作为移动营销的关键工具,具有广阔的应用前景。 本文将探讨如何利用手机号码归属地 API …

IDEA配置MAVEN_OPTS

IDEA配置MAVEN_OPTS​ 解决问题 maven MAVEN_OPTS设置 maven编译优化 maven编译速度慢 maven打包编译很慢 maven多线程编译打包 IDEA Maven配置教程​​测试环境:Win10(64位) i7-7700HQ 16GB​​ 参考文章: ​​ ​JVM参数MetaspaceSize的误解​​ Java HotSpot™ 64-Bit Ser…

【AI浪潮下的挑战和机遇】许多职业即将消失,AI 即将战胜人类了吗?

文章目录前言一、人类科技发展史二、 AI浪潮下的挑战1. 数据安全和隐私保护问题2. 带来新的伦理和道德问题3. 版权和知识产权问题三、对传统行业和就业的冲击1.传统文本编辑行业受到冲击2.就业岗位的变化3.工作流程的变化4.创意版权问题四、AI浪潮下的机遇1.提高效率和创意性2.…

【软考备战·希赛网每日一练】2023年4月12日

文章目录一、今日成绩二、错题总结第一题三、知识查缺题目及解析来源:2023年04月12日软件设计师每日一练 一、今日成绩 二、错题总结 第一题 解析: 依据题目画出PERT图如下: 关键路径长度(从起点到终点的路径中最长的一条&#x…

使用MybatisPlus时注意点的记录

在 MyBatis-Plus 中,默认情况下,实体类的主键属性名必须为 "id",如果实体类主键属性名为 其他比如"nbid",则需要进行显式的用FileId配置或者在.XML中配置。 在使用MybatisPlus时,如果主键名是id 实体类属性…

Django REST Framework(DRF)框架之视图类(视图基类、Mixin扩展类、子类视图)

DRF框架之视图类的使用视图类概述视图基类Mixin扩展类子类视图类视图基类APIViewGenericAPIViewMixin扩展类ListModelMixinCreateModelMixinRetrieveModelMixinUpdateModelMixinDestroyModelMixin子类视图ListAPIViewCreateAPIViewRetrieveAPIViewDestoryAPIViewUpdateAPIViewL…

联想集团ESG与社会价值论坛召开,首次发布《联想集团2022社会价值报告》

对企业而言,ESG不再是选择题,而是必答题。 联想集团是ESG的先行者、领军者。 2023年4月11日,“联想集团ESG与社会价值论坛暨《联想集团2022社会价值报告》发布会”在京召开,会议由中国社会责任百人论坛、联想集团联合主办&#xf…

【图像】协议:常见的图像格式协议对比

1. 背景 不知不觉已经大半年没有写博客了。换了工作之后突然变忙了许多,紧张的项目节点一个接一个,高优先级的事一件接一件,让人兴奋的同时也变得很多时候没有时间去复盘去反思去沉淀。 最近在整理产品的feature list,各种各样的…

Yum方式安装Nginx

前言:使用Nginx源码进行安装过程比较繁琐,需要提前下载安装GCC编译器、PCRE兼容正则表达式库、zlib压缩库和OpenSSL安全通信的软件库包,然后才能进行Nginx的安装。采用Yum最简单的安装方式能自动解决这些安装依赖,默认情况Centos7…

C++面试指南——类常用知识点概念总结

构造函数 构造函数可以抛出异常,可以重载,如果在实例化时在类名后面加个括号,只是创建了一个匿名的对象。构造不能是虚函数,因为此时虚函数表还没有初始化。new对象会调解构造函数。没有定义拷贝构造时,IDE会自动生成…

关于编译的重要概念总结

文章目录什么是GNU什么是GCC / Ggcc / g编译的四个阶段gcc和g的主要区别MinGW-w64C语言版本C 98C 11C 14C 17C 20Makefilecmake回想初学编程的时候,大部分人都是从C语言开始学起的,除了一些常见的语法和思想,一些基础知识常常被人们忽略&…

智能汽车进入3.0时代,双目立体视觉「打通」智驾与底盘

每一次软硬件技术更迭,都在重构智能化。 2016年7月,上汽集团与阿里巴巴合作开发的互联网汽车荣威RX5正式上市,这被视为中国乘用车市场首次规模化引入互联网生态,第一次在软件层面实现对传统燃油车的升级。几个月后,英特…

python机器学习数据建模与分析——数据预测与预测建模

文章目录前言一、预测建模1.1 预测建模涉及的方面:1.2 预测建模的几何理解1.3 预测模型参数估计的基本策略1.4 有监督学习算法与损失函数:1.5 参数解空间和搜索策略1.6 预测模型的评价1.6.1 模型误差的评价指标1.6.2 模型的图形化评价工具1.6.3 训练误差…

“绿菜单”2.0发布 数据中心液冷生态建设进入加速期

近年来,随着数字化社会对算力需求的不断增长,数据中心能耗与散热问题日益凸显。液冷作为更加高效、低能耗的制冷技术,逐渐成为了数据中心建设的热门选择。对此,产业上下游企业热情高涨,液冷产品与方案纷纷亮相&#xf…

【Java】数据类型与变量

一、java中的数据类型 Java中数据类型主要分为两类:基本数据类型和引用数据类型。 1.与c语言相同的数据类型 short,int,double,float均与c语言保持相同。 2.与c语言不同的数据类型 byte--字节类型 char--字符类型 java中,byte类型只占一个字节&#xff…

手写简易 Spring(二)

文章目录手写简易 Spring(二)1. 扩展 BeanFactory 接口2. 实现资源加载器,从 Spring.xml 解析和注册 Bean 对象1. 核心实现类 XmlBeanDefinitionReader3. 实现应用上下文,自动识别、资源加载、扩展机制1. 应用上下文2. 核心实现类…

虚幻图文笔记:Character Creator 4角色通过AutoSetup For Unreal Engine插件导入UE5.1的过程笔记

在UE5端安装AutoSetup For Unreal Engine插件 AutoSetup For Unreal Engine是Reallusion官方提供的免费插件,官方下载地址,下载到的是一个可执行文件,点击安装,记住安装的位置⬇ 看装完毕后会打开一个文件夹,这里就是对…