Spark应用的结构的学习

关注公众号:分享电脑学习
回复"百度云盘" 可以免费获取所有学习文档的代码(不定期更新)

承接上一篇文档《Standalone集群搭建和Spark应用监控

需要了解的概念

一、Spark应用的结构(Driver + Executors)

(一)、Driver:相当于MapReduce中ApplicationMaster,运行SparkContext上下文、SparkContext进行初始化的地方(JVM)、进行RDD的初始化、Task运行的资源申请、调度的地方,一般认为就是main运行的地方

(二)、Executors:具体的Task运行的地方,一个executor可以运行多个Task任务,一个spark应用可以有多个Executor

Spark应用的结构的学习

 

练习:

1、 local模式下没有启动SparkShell的情况下查看jps

 

Spark应用的结构的学习

 

2、 local模式下启动SparkShell的情况下查看jps

Spark应用的结构的学习

 

Spark应用的结构的学习

 

3、 启动集群模式查看jps

Spark应用的结构的学习

 

Spark应用的结构的学习

 

结论:

1、local模式:driver和executor运行在同一个进程(SparkSubmit),以线程的方式进行区分的。

2、集群模式:

Driver:SparkSubmit

Executor:CoarseGrainedExecutorBackend

 

练习:分别查看spark-shell和spark-submit命令可以找到下面的语句

1、 spark-shell底层运行的是spark-submit

Spark应用的结构的学习

 

2、 spark-submit底层执行的是spark-class

Spark应用的结构的学习

 

 

结论:每运行一个spark-submit,就相当于执行了一个Spark的Application

 

练习:

1、 执行词频统计前十(参考前面的课件)的语句(不执行collect),在浏览器查看ip:4040/jobs

Spark应用的结构的学习

 

Spark应用的结构的学习

 

2、 执行词频统计前十(参考前面的课件)的语句(执行collect),在浏览器查看ip:4040/jobs

Spark应用的结构的学习

 

Spark应用的结构的学习

 

Spark应用的结构的学习

 

 

3、 再执行一次上面的第二步,可以多运行几次查看

 

结论:Application,一个应用包含多个job

 

练习:点击ip:4040/jobs中的多个job,查看里面的信息

Spark应用的结构的学习

 

结论:一个Job里面包含多个Stage

 

练习:点击ip:4040/jobs中的多个Stage,查看里面的信息

Spark应用的结构的学习

 

Spark应用的结构的学习

 

结论:一个Stage里面可以包含多个Task。可以在词频统计前十中调用partition,查看分区个数,分区多数多的话 就可以有多个Task了

 

其中上面的结论补充(详细解释在后面慢慢讲解):

1、RDD的action类型的API一旦触发就会产生一个job,比如collect、take(10)、

2、有shuffle操作就会划分stage

3、Task就是最小的运行单位,是在executor处理对应分区数据的线程