Spark运行流程及架构设计

server/2024/10/18 22:31:48/
  • spark中一个应用程序application会在任务控制节点上启动一个Driver程序,并且这个Driver程序会创建一个SparkContext对象(类似于mapreduce中的applicationManager)。该对象有三个任务,1是向资源管理器clusterManager注册(类似mapreduce中的resourcemanager),2是向资源管理器clusterManager申请运行资源,3是根据应用程序RDD间的依赖关系构建多个DAG对象(多个作业job,作业是Spark中实际执行的计算任务,而DAG则是表示这些计算任务执行计划的数据结构),通过DAG调度器得到多个阶段(任务集),再通过任务调度器得到多个任务。刚才SparkContex向资源管理器申请了资源,该资源不会直接分给SC,而是会直接分配资源给工作节点上的executor进程并启动该进程,executor进程同样两项任务,1是通过心跳告知资源管理器自己的运行状况(就像mapreduce中nodemanager会向resourcemanager报告自己的运行状况。),2是向sparkcontex申请任务并将执行结果返回给SC。
  • application构成:1个任务控制节点+n个工作job(DAG)
  • 运行架构:任务控制节点Driver、工作节点、进程executor、集群管理器clusterManager
  • 对以上内容总结如下:
  1. Driver程序和SparkContext
    • Spark应用程序确实会在任务控制节点(通常是集群中的某个节点)上启动一个Driver程序。
    • Driver程序会创建一个SparkContext对象,这是Spark应用程序的入口点。
  2. 注册与资源申请
    • SparkContext首先会向资源管理器(如YARN的ResourceManager或Spark Standalone的Master)注册,这样资源管理器就知道这个应用程序已经启动并且需要资源。
    • 接着,SparkContext会向资源管理器申请资源来启动Executor进程。这些资源通常包括CPU核数和内存大小。
  3. DAG(Directed Acyclic Graph)构建与调度
    • 根据应用程序中的RDD操作,Spark会构建一个或多个DAG(有向无环图),这些DAG表示了RDD之间的依赖关系。
    • DAG调度器(DAGScheduler)会将DAG切分成多个阶段(Stages),每个阶段包含一组可以并行执行的任务(Tasks)。
    • 任务调度器(TaskScheduler)会负责将任务分配给Executor进程来执行。
  4. Executor进程
    • Executor进程是在工作节点(Worker Nodes)上启动的,它们负责执行具体的计算任务。
    • Executor进程通过心跳(Heartbeat)机制与Driver程序通信,告知自己的状态,如资源使用情况、任务执行进度等。
    • Executor进程会向Driver程序请求任务,并在完成后将结果返回给Driver程序。

**一个应用程序通过单个SparkContext与集群交互,它向clustermanager申请资源后,资源管理器会启动n个工作结点上的多个executor进程,这些进程向sparkcontext申请任务来执行,这些任务来自不同的job的不同阶段,所以说job之间是并行计算的。


http://www.ppmy.cn/server/28185.html

相关文章

kubectl_入门_Pod控制器

Pod控制器 在k8s中,按照pod的创建方式可以将其分为两类 自主式pod:k8s直接创建出来的pod,这种pod删除后就没有了,也不会重建控制器创建的pod:通过控制器创建的pod,这种pod删除了之后还会自动重建 1. 什么…

AI图书推荐:AI驱动增长—ChatGPT和Bard 用于企业流程自动化

这本书《AI驱动增长—ChatGPT和Bard 用于企业流程自动化》(ChatGPT and Bard for Business Automation: Achieving AI-Driven Growth)由Tom Taulli撰写,主要探讨了ChatGPT和Bard两种人工智能技术在商业自动化中的应用,以及如何通过…

Redux数据流架构

Redux的难点是理解它对于数据修改的规则, 下图动态展示了在整个数据的修改中,数据的流向 Redux代码被分为三个核心的概念,三个概念分别是: state: 一个对象 存放着我们管理的数据action: 一个对象 用来描述你想怎么改数据reducer: 一个函数 根据action的…

Linux 文件管理命令dc expr strings xargs

文章目录 2.Linux 文件管理命令2.54 dc:任意精度的计算器案例练习 2.25 expr:求表达式变量的值案例练习 2.56 strings:显示文件中的可打印字符案例练习 2.57 xargs:从标准输入读入参数案例练习 2.Linux 文件管理命令 2.54 dc&…

感染了后缀为.rmallox勒索病毒如何应对?数据能够恢复吗?

导言: 在网络安全的世界里,勒索病毒如同狡猾的猎人,不断寻找着新的猎物。最近,一款名为.rmallox的勒索病毒悄然崭露头角,其独特的攻击手法和防御难度,引起了业界的广泛关注。本文将为您揭示.rmallox勒索病…

windows驱动开发-电源管理

驱动程序收到的电源IRP的主功能码是IRP_MJ_POWER 以及四个次要代码: IRP_MN_POWER_SEQUENCE 驱动程序将此 IRP 作为优化发送,以确定其设备是否实际进入了特定的电源状态。 对此 IRP 的支持是可选的。 若要发送此 IRP,驱动程序必须调用 IoAllocateIrp …

Linux:http配置用户登录认证访问网页

Linux:http配置用户登录认证访问网页 创建账户认证文件 # 第一次需要加-c(创建create)-m(修改) [rootserver100 ~]# htpasswd -cm /etc/nginx/.htpasswd shanxin New password: Re-type new password: Adding passwo…

MATLAB 数据导入

MATLAB 数据导入(ImportData) 在MATLAB中导入数据意味着从外部文件加载数据。该importdata功能允许加载不同格式的各种数据文件。它具有以下五种形式 序号 功能说明 1 A importdata(filename) 从filename表示的文件中将数据加载到数组A中。 2 A i…