Spark学习笔记之运行流程

感恩博主扎心了,老铁

Spark中的基本概念

  • Application: 表示某个应用程序
  • Driver: main()函数,创建SparkContext。由SparkContext与ClusterManager通信,进行资源的申请,任务的分配和监控等。在程序执行完毕之后关闭SparkContext。
  • Excuter: 某个Application运行在一个节点的一个进程,负责运行某些Task,并将数据存在内存或者磁盘上。在Spark on Yarn模式下,其进程名称为 CoarseGrainedExecutor Backend,一个CoarseGrainedExecutor Backend进程有且仅有一个executor对象,它负责将Task包装成taskRunner,并从线程池中抽取出一个空闲线程运行Task,这样,每个CoarseGrainedExecutorBackend能并行运行Task的数据就取决于分配给它的CPU的个数。
  • Worker: 集群中可以运行Application的节点,在Spark on Yarn模式下指DataNode。
  • Task: task是被提交到executor上的work单元,每一个stage都有一些task,一个task对应一个partition。
  • Job: Job是由一系列tasks组成的并行计算任务,它是由action类型的函数激活的,换言之没有action,job不会被提交。
  • Stage: 每一个job都被划分为几个小的set,这些set被称之为stages,它们之间是相互依赖的。
  • DAGScheduler: 根据Job构建基于Stage的DAG,并提交Stage给TaskScheduler,其划分Stage的依据是RDD之间的依赖关系
  • TaskScheduler: 将TaskSet提交给集群(worker)运行。

Spark的基本流程