Spark任务提交后的流程

只要能说出来sparkContext, DAG, Stage, Executor 就大致上应该了解些。

详细答案参考:

(1)构建Spark Application的运行环境(启动SparkContext),SparkContext向资源管理器(可以是Standalone、Mesos或YARN)注册并申请运行Executor资源;

(2)资源管理器分配Executor资源并启动StandaloneExecutorBackend,Executor运行情况将随着心跳发送到资源管理器上;

(3)SparkContext构建成DAG图,将DAG图分解成Stage,并把Taskset发送给Task Scheduler。Executor向SparkContext申请Task

(4)Task Scheduler将Task发放给Executor运行同时SparkContext将应用程序代码发放给Executor。

(5)Task在Executor上运行,运行完毕释放所有资源。

spark工作机制如下:

用户在client端提交作业后,会由Driver运行main方法并创建spark context上下文。执行add算子,形成dag图输入dagscheduler,按照add之间的依赖关系划分stage输入task scheduler。task scheduler会将stage划分为taskset分发到各个节点的executor中执行


Spark的API有哪两大类?分别解释一下和举个例子?

Transformation & Action.Transformations是转换操作,如map, filter, union, groupByKey, reduceByKey等,Actions是执行操作,如count, collect, reduce, saveAsXXX等


Spark中的union属于宽依赖还是窄依赖? 有无shuffle?

属于窄依赖,无shuffle