Spark面试题汇总
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