Spark重点关键字
Application
|
基于Spark的用户程序。由集群上的Driver program和Executor组成。
|
Application jar
|
一个包含用户的Spark应用程序的jar。在某些情况下,用户将希望创建一个包含其应用程序及其依赖项的“uber jar”。
用户的jar不包含Hadoop或Spark库,但是这些库将在运行时添加。
|
Driver program
|
该进程运行应用程序的main()函数并创建SparkContext
|
Cluster manager
|
用于获取集群上资源的外部服务(例如,standalone manager, Mesos, YARN)
|
Deploy mode
|
区分驱动程序进程的运行位置。在“
cluster”模式下,框架在集群内部启动驱动程序。在“
client”模式下,用户在集群外部启动
driver。
|
Worker node
|
可以在集群中运行应用程序代码的任何节点
|
Executor
|
Worker node上的应用程序启动的进程,该进程运行任务并将数据跨任务存储在内存或磁盘存储中。每个应用程序都有自己的执行程序。
|
Task
|
发送给某个Executor的工作单元
|
Job
|
一种由多个任务组成的并行计算,这些任务对应一些Spark操作(例如
save ,
collect
);可以在Driver
日志中看到job。
|
Stage
|
每个
job 都被分为一些较小的任务集,这些任务集就是
stages(类似于MapReduce中的map和reduce阶段),stage是相互依赖的;
可以在Driver
日志中看到Stage
。
|
想要学习Spark,以上几个关键字是必须要搞懂的,就算不搞懂也要熟知。其中初学Spark最容易混淆或不清楚的就是Executor、Task、Stage、Job的关系,现在我来介绍一下。
重点:一个action对应一个job,一个job多个stage,划分stage的边界是不同节点取数据,到shuffle结束,一个stage对应多个task,task由dirver发送到executor,task运行在executor中,exector运行在worker node上,exector由dirver在worker node上申请资源创建,application包括driver program和executors。
Spark 多线程模型
:
第一步是构建一个可重用的资源池,然后在这个资源池里运行所有的ShuffleMapTask 和ReduceTask,task是线程的,可以并行