spark的执行流程

本文详细介绍了Spark集群的执行流程,包括Master的角色职责,如管理集群资源、接收Driver注册及资源调度;Worker上的Executor如何执行Task;以及Driver程序的作用与初始化过程。此外,还提供了spark-submit命令的具体使用示例。

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

spark的执行流程:
spark的集群 :
master:
1/管理集群,start-all.sh,启动集群,让worker去master 发心跳,上报自己状态,告诉master自己有多少资源(cpu,内存)
2/接受driver的注册。你的程application运行之后,会在driver端,向master进行注册。
3/资源调度,spark程序可以同时的运行很多个application,每个application都需要一定的资源,举例:集群的资源是有限的(64g内存,32核),有很多的程序需要运行,
资源调度就是资源相对有限,需求不止一个的情况。不止一个意味着需要分配,master就是来分配的,里面有两种分配策略,1,尽量打散,2.尽量集中
master 本身并不提供资源,worker提供资源,worker提供的资源就会被封装到executor
worker-executor :
1/ 是分布式程序的执行者,执行的是task,在一个executor可以有很多个task,executor里面封装了资源(cpu,内存),问题:一个executor 有多个task,这些task是怎么执行的??
举例:这个executor(2个cpu,4g内存) 有 10个task,他们怎么执行的??

driver:1/我们写的程序,会为main方法,在集群里面启动一个进程,这个进程就是driver程序。driver主要做初始化(过程很复杂)
2/ driver向master注册(告诉master有一个什么样的程序需要你调度,同时告诉你我需要多少资源)

spark-submit  
--executor-cores  
--executor-memory 
....
在提交任务的时候,需要多少资源 

spark-submit --class com.talkingdata.dmp.spark.job.label.statistics.AppAlgorithm \
--master yarn-cluster \
--queue default \
--name tagMerge_update_statidtics \
--num-executors 24 \   ## 需要多少个executor
--driver-memory 4g \   ## driver程序的内存需要多大
--executor-memory 4g \ ## 每个executor分配的内存有多大
--executor-cores 2 \   ## 每个executor的cpu核(逻辑核)
--conf spark.akka.timeout=200 \
--conf spark.shuffle.io.maxRetries=5 \
--conf spark.yarn.executor.memoryOverhead=3000 \
--conf spark.shuffle.consolidateFiles=true \
--conf spark.shuffle.memoryFraction=0.3 \
--conf spark.storage.memoryFraction=0.5 \
--jars $DependJars \
$LOCAL_JAR $appinput $taginput $out


这个程序需要多少核:
24 * 2  + 1  = 49 核
需要多少内存:
24*4 + 4 = 100g


--conf 都是一些运行时候的参数,这些参数也可以不设置,不设置就是默认值,为了优化 
参数调优的主要作用:
1,为了充分利用现有资源,让程序运行更稳当,快速
2,可能程序目前不起来,但是通过参数调优之后,程序就能够运行起来了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值