spark学习笔记-spark基本概念与框架理解

来源:互联网 发布:直线制职能制矩阵制 编辑:程序博客网 时间:2024/05/01 04:37

spark架构

master:集群资源管理和调度

worker:单个节点的资源管理

executor:对数据进行并行处理

driver:应用逻辑执行的起点

 

spark构成

clustermanager:standlone模式中为master,即主节点,控制整个集群,监控worker,在yarn模式中为资源管理器。

worker:从节点,负责控制计算节点,启动executor或driver,在yarn模式中为nodemanger,负责计算节点的控制。

driver:运行application的main函数,并且创建sparkcontext。

executor:执行器,是为某个application运行在worker 弄得上的一个进程,启动线程池运行任务,每个application拥有独立的一组executors。

sparkcontext:整个应用的上下文,控制应用的生命周期。

rdd:spark的基本计算单元,一组rdd形成执行的有向无环图rddgraph。

dag scheduler :根据job构建基于stage的dag, 并提交给taskscheduler.

taskscheduler:将task分发给executor执行

sparkenv: 线程级别的上下文,存储运行时的重要组件的引用。

 

client提交应用,master找到一个worker启动driver,driver向master或者资源管理器申请资源,之后将应用转换为rdd graph, dagscheduler将rdd graph转换为stage的有向无环图提交给taskscheduler,由taskschedule提交任务给executor进行执行。任务执行过程中其他组件协同工作确保整个应用顺利执行。

 

 

spark的工作机制

 

spark作业:

  application:用户自定义的spark 程序,用户提交后,spark为APP分配资源将程序转换执行。

         driverprogram:运行application的main函数并且创建sparkcontext。

         rdddag: 当rdd遇到action算子,将之前的所有算子形成一个有向无环图。再在spark中转换为job,提交到集群进行执行。一个APP中可以包含多个job。

         job:一个rdd graph触发的作业,往往是由sparkaction算子触发,在sparkcontext中通过runjob方法向spark提交job。

       stage:每个job会根据rdd 的宽依赖关系被切分成很多stage,每个stage中包含一组相同的task,这一组task也叫taskset。

         task:一个分区对应一个task,task执行rdd中对应stage中所包含的算子,task被封装好后放入executor的线程池中执行。

 

spark运行流程

 spark程序转换

  输入数据块

  根据调度策略执行各个stage的tasks

   输出结果返回

 

 

spark计算模型

   数据结构RDD + 算法(transformation, action)

1 0
原创粉丝点击