spark概念理解

1. Application:Spark 的应用程序,用户提交后,Spark为App分配资源,将程序转换并执行,其中Application包含一个Driver program和若干Executor

2. SparkContext:Spark 应用程序的入口,负责创建dagSchduler,TaskScheduler,SchedulerBackend,在实例化的过程中register当前程序给Master;在运行过程中负责调度各个运算资源,协调各个 WorkerNode 上的Executor。

3. Driver Program:运行Application的main()函数并且创建SparkContext

4. Executor:是为Application运行在Worker node上的一个进程,通过线程池并发执行和线程复用的方式,负责具体task的执行;并且负责将数据存在内存或者磁盘上。每个Application都会申请各自的Executor来处理任务

5. Master:接收用户提交的程序并发送指令给Worker为当前程序分配计算资源

6. Worker的解释

a. 接受Master的指令,启动或者杀掉Executor (通过一个Proxy为Executor Runner的对象实例来远程启动ExecutorBackend进行,ExecutorBacnend进程里面有Executor,实际在工作的时候,会通过TaskRunner来封装Task,然后从ThreadPool中获取一条线程执行Task,执行完成后线程被回收复用)

b. 接受Master的指令,启动或者杀掉Driver

c. 报告Executor/Driver的状态到Master

7. 算子:对RDD的操作。分为:

1)输入算子

举例(parallelize、makeRDD、textFile、hadoopFile、wholeTextFiles)

2)transformation算子

3)action算子,会触发一次作业的提交,为客户端输出一个结果或者保存到外部文件系统

举例  (count、collect、reduce、take、first、fold、saveAsTextFile、saveAsHadoopFile) 

或者数据库系统中(判断依据是底层调用sc.runjob代码)

4)控制算子(persist、checkpoint(切断RDD之前的依赖关系))

8. job: rdd的一系列操作算子构成一个job,在excutor中执行。

        action算子决定一个job的界限, 一个Job被拆分成若干个Stage,每个Stage执行一些计算,产生一些中间结果,最终生成这个Job的计算结果。

9. Stage:每个Job会根据RDD的宽依赖关系被切分很多Stage, 每个Stage中包含一组相同的Task, 这一组Task也叫TaskSet

10.  Task:一个分区对应一个Task,Task执行RDD中对应Stage中包含的算子。Task被封装好后放入Executor的线程池中执行

11. DAGScheduler:根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler

12. TaskScheduler:将Taskset提交给Worker node集群运行并返回结果

    原文作者:西门无忌
    原文地址: https://www.jianshu.com/p/04ec732970b6
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞