Spark学习

《Learning Spark》第七章:Spark集群运行

2020-07-11  本文已影响0人  VChao

2020/07/11 -

引言

本章节属于对Spark的运行架构进行简单介绍的部分,通过对其底层的运行基础进行讲解,这部分讲解可以对底层的运行原理有更深入的理解,后续进行调优会更方便。比如说,我之前一直纠结的(其实,当时也学会了,但是没有记录,所有还是都忘了),worker在执行过程中的身份,然后资源如何分配会更好,这些内容。
(当前2020年,spark已经到了3.0版本,是否这本书的内容已经过期,或者部分不适用,暂时不清楚,需要进一步了解)

运行架构

在分布式运行的模式下,spark采用主从的架构,由driver作为中心协调的角色,驱动(driver)和执行器共同组成了一个spark应用。同时还有一个外部服务来辅助,就是集群管理,例如yarn,mesos,或者spark自带的standalone模式。

驱动器(driver)

驱动器是用户模式下的程序,也是用户与应用进行交互的入口,例如spark-shell启动之后,就是一个driver。driver的任务主要是接受用户的命令,然后将这些命令转化为相应的任务,然后在执行器上进行调度任务。用户可以执行的操作就是之前提到的那些,创建RDD,进行转化,数据留存等。他主要负责两个任务:

其实这里由一个疑问,我一直以为这些工作都是cluster manager来做的,但是这里说白了,其实是driver在做。

执行器

执行器也是两个工作目的,1)执行任务,task作为最小单位 2)缓存RDD

Spark应用的运行过程

1)用户提交应用(spark-submit)
2)spark-submit启动驱动程序并且执行用户的操作
3)driver程序与机器管理器进行沟通资源情况来启动执行器
4)集群管理器代表驱动程序启动执行器(这里跟我理解的不一样)
5)driver将用户的程序转化为最终的task单位,并将其发往执行器
6)执行器执行任务,并返回结构
7)如果driver的main停止,或者调用了sc.stop(),这个应用也就结束了,然后释放资源。

这完整的执行过程了;了解了这些之后,对后续进行调优等内容才能更轻松。

上一篇下一篇

猜你喜欢

热点阅读