Spark学习笔记(五):Spark运行模式原理 刺骨的言语ヽ痛彻心扉 2021-10-25 12:16 384阅读 0赞 # 基本概念 # 1. RDD:是Resillient Distributed Dataset (弹性分布式数据集)的简称,是分布式内存的一个抽象概念,提供了一种高度受限的共享内存模型 2. DAG:是Directed Acyclic Graph (有向无环图)的简称,反映RDD之间的依赖关系 3. Executor:是运行在工作节点(WorkerNode)的一个进程,一个Worker会启动多个Executor,负责运行Task 4. Application:用户编写的Spark应用程序 5. Driver:Application的驱动程序(如main方法) 6. Task:运行在Executor上的工作单元,一个Executor会启动多个线程来执行Task 7. Job: —个Job包含多个RDD及作用于相应RDD上的各种操作,**按照是否返回scala集合或对象进行划分,即以action操作来切分** 8. Stage:是Job的基本调度单位,一个Job会分为多组Stage,**按照是否shuffle操作进行划分**,一个Stage会分为多组Task,**代表了一组关联的(同个分区)、相互之间没有Shuffle依赖关系的任务组成的任务集,task的个数由stage中最后一个RDD的分区数来决定** ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70] 如下图: 蓝色框代表一个Stage,黄色框代表一个Task ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70 1] # 运行架构 # •Spark运行架构包括集群资源管理器(Cluster Manager)、运行作业任务的工作节点(Worker Node)、每个应用的任务控制节点(Driver)和每个工作节点上负责具体任务的执行进程(Executor) •资源管理器可以自带或Mesos或YARN与Hadoop MapReduce计算框架相比,Spark所采用的Executor有两个优点: 1. 是利用多线程来执行具体的任务,减少任务的启动开销 2. 是Executor中有一个BlockManager存储模块,会将内存和磁盘共同作为存储设备,有效减少IO开销 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70 2] •一个Application由一个Driver和若干个Job构成,一个Job由多个Stage构 成,一个Stage由多个没有Shuffle关系的Task组成 •当执行一个Application时,Driver会向集群管理器申请资源,启动 Executor,并向Executor发送应用程序代码和文件,然后在Executor上执行Task,运行结束后,执行结果会返回给Driver,或者写到HDFS或者其他数据库中 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70 3] # 运行流程 # (1) 首先为应用构建起基本的 运行环境,即由Driver创建一个 SparkContext,进行资源的申请 、任务的分配和监控 (2) 资源管理器为Executor分 配资源,并启动Executor进程 (3) SparkContext根据RDD的依赖关系构建DAG图,DAG图 提交给DAGScheduler解析成 Stage,然后把一个个TaskSet提 交给底层调度器TaskScheduler 处理;Executor 向 SparkContext 申请Task,Task Scheduler将 Task发放给Executor运行,并提供应用程序代码 (4) Task在Executor上运行, 把执行结果反馈给 TaskScheduler,然后反馈给 DAGScheduler,运行完毕后写入数据并释放所有资源 ![在这里插入图片描述][watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70 4] 总体而言,Spark运行架构具有以下特点: (1) 每个Application都有自己专属的Executor进程,并且该进程在Application运行期间一直驻留。Executor进程以多线程的方式运行Task (2) Spark运行过程与资源管理器无关,只要能够获取 Executor进程并保持通信即可 (3) Task采用了数据本地性和推测执行等优化机制 欢迎关注同名公众号:“我就算饿死也不做程序员”。 交个朋友,一起交流,一起学习,一起进步。![在这里插入图片描述][20200430114134867.jpg] [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70]: /images/20211025/b8c3764d56c54dbc9a5c716c5928c051.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70 1]: /images/20211025/bff3c1d601164e3ebf31a202248286f8.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70 2]: /images/20211025/4255a67f739d4ea6bd17423c80f0b736.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70 3]: /images/20211025/6519b05baaf64a4ba085055d771f5db5.png [watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3NneXVhbnNoaQ_size_16_color_FFFFFF_t_70 4]: /images/20211025/bd54330f602946429e6cb553ca73c72c.png [20200430114134867.jpg]: /images/20211025/8c43cf49cc304c2b817e594a39bb6c41.png
还没有评论,来说两句吧...