Spark运行架构

1、构建Spark Application运行环境;
在Driver Program中新建SparkContext(包含sparkcontext的程序称为Driver Program);
Spark Application运行的表现方式为:在集群上运行着一组独立的executor进程,这些进程由sparkcontext来协调
2、SparkContext向资源管理器申请运行Executor资源,并启动StandaloneExecutorBackend,executor向sparkcontent申请task;
集群通过SparkContext连接到不同的cluster manager(standalone、yarn、mesos),cluster manager为运行应用的Executor分配资源;一旦连接建立之后,Spark每个Application就会获得各个节点上的Executor(进程);每个Application都有自己独立的executor进程;Executor才是真正运行在WorkNode上的工作进程,它们为应用来计算或者存储数据;
3、SparkContext获取到executor之后,Application的应用代码将会被发送到各个executor
4、SparkContext构建RDD DAG图,将RDD DAG图分解成Stage DAG图,将Stage提交给TaskScheduler,最后由TaskScheduler将Task发送给Executor运行
5、Task在Executor上运行,运行完毕后释放所有资源;
 
 
 
Spark运行架构特点:
1、每个Application获取专属的executor进程,该进程在Application运行期间一直驻留,并以多线程方式运行tasks;这种Application隔离机制优势在于,无论是从调度角度看(每个Driver调度它自己的任务),还是从运行角度看(来自不同Application的Task运行在不同的JVM中)。当然,这也意味着Spark Application不能跨应用程序共享数据,除非借助于外部存储系。比如:Tachyon、SharkServer;
2、spark并不关心底层用什么cluster manager在运作,它只关心是否能拿到executor并能保持相互通信即可,因为最终的Task是运行在executor上;
3、让你的driver program尽量靠近worker(运行executor节点),最好在同一个机架中。因为Application运行过程中SparkContext和Executor之间有大量信息交互;如果想在远程集群中运行,最好采用RPC将Application提交给集,不要远离worker运行application;
4、Task采用了数据本地性和推测执行的优化机制;
 
 
详见  http://spark.apache.org/docs/latest/cluster-overview.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值