Spark任务执行者之Executor

Executor是Spark在Worker节点上的进程,负责执行任务。启动Executor的过程包括:SparkContext初始化时调用taskScheduler.start(),接着在Master的调度下,Worker启动ExecutorRunner线程。CoarseGrainedExecutorBackend与DriverActor通信完成Executor的注册和创建。每个Task由Executor内的线程池执行。
摘要由CSDN通过智能技术生成

        这次讲的是Executor,啥是Executor呢?Executor是干什么的?

       当我们在生产环境中提交spark作业时,用spark-submit shell脚本里,往往需要指定一个参数:--num-executors,你可以指定为3,5。。。这难道是随便指定的?爱设多少就设多少?很显然,答案是no,首先你得根据你集群的资源情况来设定。那我们就有必要来弄清楚这个是什么。Executor是Worker节点上的进程,用来执行程序任务的。咳咳,注意了,下面开始画今天的重点:


   1.怎么启动Executor进程的;

   2.Executor是怎么进行任务调度的。


        首先,来个概览图,以下我们讲的都是Standalone模式。1.CoarseGrainedExecutorBackend线程起来后会向driver发RegisteredExecutor消息,告诉driver我这边即将要起Executor进程啦,好让driver上有记录在哪个worker上起了Executor进程;driver注册成功后,会返回RegisteredExecutor消息,告诉说你可以起Executor了;

2.CoarseGrainedExecutorBackend线程接受到RegisteredExecutor消息,就会创建executor对象;

3.Driver内taskScheduler会向CoarseGrainedExecutorBackend线程发送lauchTask消息,就是调用executor的lauchTask方法启动一个TaskRunner线程,这个就是更细粒度的,其实真正执行任务的就是这些线程啦;

4.然后每来一个task就从线程池里拿出一个线程运行。




可以先稍微整理一下,感兴趣的可以继续往下看,从源码角度一步步跟踪下去。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值