Spark的运行架构

Spark application由一组独立进程构成,通过SparkContext在集群上协调运行。它连接到Cluster Manager,如Spark自带、Mesos或YARN,申请executor资源。Executor进程负责计算和数据存储,且每个application有自己的executor,生命周期内独立运行。tasks由driver program调度并发送到executor执行,executor以多线程运行tasks,实现任务隔离。driver必须监听executor连接,建议与worker节点在同一网络环境下运行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原官网。http://spark.apache.org/docs/latest/cluster-overview.html

术语含义
Application基于spark构建的用户程序代码。由集群上的一个driver program 和多个executor
Application jar一个包含用户Spark应用的Jar
Driver program这是一个进程,运行我们application里的main()方法,并创建SparkContext()
Cluster manager集群管理器,这是一个外部的服务,为了在集群上申请资源(e.g. standalone manager,Mesos,YARN),就是通过CM在YARN,Mesos…上申请资源,所以叫集群管理器
Deploy mode部署模式,决定了你的driver跑在哪里。–deploy-mode “client” (本地)or “cluster”(集群)
Worker node一个运行我们应用程序代码的节点 ,对于YARN来说就是nodemanager
Executor这是一个在worker上启动的一个进程,如果用YARN,那我们的Executor就跑在Container里面,一个executor能够运行多个task,能够存数据,放在内存或者磁盘上面。每一个应用程序有它自己Executor。
Task一个工作的最基本的单元,会被发送到executor上面执行
Job这是一个并行的计算,一个计算里面包含了多个task,只要遇到一个action就是一个Job。
Stage每个作业被分成较小的任务组,称为阶段,彼此依赖(类似于MapReduce中的map和reduce阶段); 你会在驱动程序的日志中看到这个术语。

Spark application是运行在集群上的一组独立的进程,通过主程序(叫做驱动程序)里的sparkcontext对象协调。
具体来说,为了在集群上运行,SparkContext可以连接到集中Cluster manager (spark自己独立的集群管理器,或者是Mesos,或者是YARN),CM去申请资源,一旦申请并连接成功,spark会在集群上面executor,这些executor进程能够进行计算并存储我们的数据。然后,它(Driver programm)将你的应用程序的代码传到executor上面去。最终,SparkContext将你的tasks发送到executors上面去执行。
在这里插入图片描述
关于这种架构有几点有用的注意事项:
1、每一个application有它自己的executor进程,独立于其他application,这些进程存在于整个作业的生命周期并以多线程的形式运行我们的tasks(一个executor能够运行多个task)。这样可以在调度方(driver)(每个驱动程序调度自己的任务)和执行方(executor)(在不同JVM中运行的不同application中的tasks)之间隔离应用程序。然而,这意味着不同application之间无法分享数据,除非你将数据写在一个外部存储系统(alluxio框架,一个分布式内存的数据框架)
2、Spark与底层集群管理器(CM)无关。只要它可以获取执行executor进程,并且这些进程相互通信,即使在支持其他应用程序的集群管理器(例如Mesos / YARN)上运行它也相对容易。
3、drvier program必须在其生命周期内监听并接受来自其executor的传入连接。因此,驱动程序必须是来自工作节点的网络可寻址的。
4、因为driver在集群上调度任务,所以它应该靠近work节点运行,最好是在同一局域网上运行。如果您想远程向群集发送请求,最好向driver打开RPC并让它从附近提交操作,而不是远离工作节点运行驱动程序。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值