💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、星火、月之暗面及文生图 广告
:-: ![](https://img.kancloud.cn/b3/f1/b3f195aac9b63c112c0d4194f5478e5c_596x286.png) Spark运行架构 <br/> **1. SparkContext作用** SparkContext 是连接 Driver、Worker以及 Cluster Manager(Master)的桥梁。<mark>作为 Spark 应用程序的核心、编程入口</mark>。 <br/> **2. SparkContext主要工作** SparkContext 主要完成了如下工作。 :-: ![](https://img.kancloud.cn/bd/4c/bd4cab18adf9670b468627d303d83739_982x468.png) SparkContext主要工作 (1)RDD graph:生成 RDD 依赖关系图 DAG。SparkContext 会根据用户提交的计算逻辑(Application)中的 RDD 的转换和动作来生成 RDD 之间的依赖关系,同时这个计算链也就生成了逻辑上的 DAG。 <br/> (2)DAGScheduler:为高级的、基于 Stage 的调度器, 负责创建 Job,将 DAG 中的 RDD 划分到不同的 Stage,并将 Stage 作为 Tasksets 提交给底层调度器TaskScheduler 执行。 <br/> (3)TaskScheduler:为 Spark 的任务调度器,Spark 通过他提交任务并且请求集群调度任务。因其调度的 Task 由 DAGScheduler 创建,所以 DAGScheduler 是TaskScheduler 的前置调度。 <br/> (4)SchedulerBackend:是一个 trait(特质),作用是分配当前可用的资源。具体即向当前等待分配计算资源的 Task 分配计算资源(即 Executor)。 <br/> (5)ListenerBus:SparkContext 中的事件总线,可以接收各种使用方的事件,并且异步传递 Spark 事件监听与 SparkListeners 监听器的注册。 <br/> (6)BlockManager:属于 SparkEnv 组件中的成员,一个嵌入在 spark 中的key-value 型分布式存储系统(类似 HDFS)。 SparkEnv 是 SparkContext 中非常重要的类,它维护着 Spark 的执行环境,所有的线程都可以通过 SparkContext 访问到同一个 SparkEnv 对象。SparkEnv 还包括 ShuffleManger、SecurityManager、CacheManger 等。 <br/> **3. Spark编程时的SparkContext入口程序** ```scala import org.apache.spark.{SparkConf, SparkContext} val conf:SparkConf = new SparkConf().setMaster("local[2]") .setAppName("appName") val sc = SparkContext.getOrCreate(conf) ```