文章目录

  • 1.应用程序运行关键词
  • 2.作业执行关键词


1.应用程序运行关键词

  • Application(应用程序):是指用户编写的spark应用程序,包含驱动程序(Driver)和分布在集群中多个节点上运行的Executor代码,在执行过程中有一个或多个作业组成。
  • Driver(驱动程序):Spark中的Driver即运行上述Application的main函数并创建SparkContext,其中创建SparkContext的目的是为了准备Spark程序的运行环境。在Spark中由SparkContext负责与ClusterManager通信,进行资源申请,任务分配和资源监控,当Executor部分执行完之后,Driver负责将SparkContext关闭。通常用SparkContext代表Driver。
  • ClusterManager(集群资源管理器):是指在集群上获取资源的外部服务,有Standalone yarn mesos等几种。
  • Worker(工作节点):集群中任何可以运行Application代码的节点,类似yarn中的NodeManager节点。
  • Master(总控进程):Spark Stabdalone运行模式下面的主节点,负责管理和分配集群资源来运行Spark Application。
  • Executor(执行进程):Application运行在Worker节点上的一个进程,该进程负责运行Task,并负责将数据存在内存或磁盘上,每个Application都有各自独立的一批Executor。在yarn模式下,其进程名称为CoarseGrainedExecutorbackend,类似mapReduced的YarnChild。一个CoarseGrainedExecutorbackend仅有一个Executor对象,他负责将task包装成taskRunner,并从线程池中抽取空闲线程来运行task。每个CoarseGrainedExecutorbackend能并行运行的task的数量取决于分配给他的cpu的个数。

2.作业执行关键词

  • Job(作业):RDD中由行动操作所产生的一个或多个调度阶段;有多少个行动操作就会产生多少个Job。
  • Stage(调度阶段):每个作业因为RDD的依赖关系被拆分成多组任务集合,称之为调度阶段,也叫任务集(TaskSet);遇到一个宽依赖则划分一个stage。调度阶段的划分是由DAGScheduler来划分的,调度阶段有Shuffle Map StageResult Stage两种。
  • Task(任务):分发到Executor上的工作任务,是Spark实际执行的最小单元;任务又有Shuffle Map TaskResult Task两种。一个task一次只处理一个分区里面的数据,在同一个stage中有多少个分区就会产生多少个task。
  • DAGScheduler:是面向阶段的调度器,负责接收Spark应用提交的作业,根据RDD的依赖关系划分调度阶段,并提交给TaskScheduler;在同一个stage内,RDD之间都属于窄依赖。
  • TaskScheduler:面向任务的调度器,接受DAGScheduler提交的调度阶段,然后将任务提交到Worker节点运行,由Worker节点的Executor来运行任务。