Spark之SparkContext

本文深入探讨了SparkContext作为Spark程序核心的重要作用,包括程序的发布、运行调度与资源管理等关键环节,并详细介绍了其内部核心组件如DAGScheduler、TaskScheduler及SchedulerBackend的功能。

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

SparkContext

[睡着的水-hzjs-2016.8.20]

一、SparkContext

---1、Spark 程序在运行的时候分为Driver 和 Executors 两部分;

---2、Spark 的程序编写时基于SparkContext的,集体来说包含两方面:

a) Spark 编程的核心基础RDD,是由SparkContext 来最初创建的(第一个RDD,一定是由SparkContext来创建的); b) Spark 程序的调度优化也是基于SparkContext 的;

---3、Spark程序的注册是通过SparkCount实例化的时候产生的对象来完成的(其实是SchedulerBackend来注册程序)

---4、spark程序运行的时候要通过Cluster Manager 获取具体的计算资源,计算资源的获取也是通过SparkContext产生的对象来申请的(其实是Schedulerbackend来获取计算资源的);

---5、SparkContext 崩溃或者结束的时候,整个Spark程序就结束。

###总结:Spark程序是通过SparkContext发布到Spark集群的;Spark 程序的运行都是在SparkContext为核心的调度器的指挥下进行的;Spark程序的结束是以SparkContext结束作为结束。

二、SparkContext核心

1、构建的三个核心对象:

---DAGScheduler:是面向job的Stage的高层调度器

---TaskScheduler:是一个接口,更具体的Cluster Manager 的不同会有不同的实现,Standalone模式下具体的实现是TaskSchedulerImpl

---SchedulerBackend:是一个接口,更具体的Cluster Manager 的不同会有不同的实现,Standalone模式下具体的实现是SparkDeploySchedulerbackend;

2、从整个程序运行的角度来讲,SparkContext包含滴答核心对象:DAGScheduler

TaskScheduler、SchedulerBackend、MapOutputTrackerMaster.


createTaskScheduler:


在Scheduler.initialize 调用的时候会创建SchedulerPool:


3、SparkDeploySchedulerbackend有三大核心功能:

a、负责与Master连接注册当前程序

b、接收集群中为当前应用程序而分配的计算资源Executor的注册并管理Executors;

c、负责发送Task到具体的Executor执行

补充说明:他是由TaskSchedulerImpl来管理的



----当通过SparkDeploySchedulerbackend注册程序给Master的时候,会把下述command提交给master.master发指令给worker去启动Executor所在的进程的时候会加载mian 方法所在的入口类就是command 中的CoarseGraniedExecutorbackend,当然你可以实现自己的ExecutorBackend.在CoarseGrainedExecutorbackend中启动Executor (Executor是先注册在实例化),再并发线程执行Task


流程图:






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值