1. Spark高频面试题总结
1.1 Spark有几种部署方式?请分别简要论述
-
Local:运行在一台机器上,通常是练手或者测试环境。
-
Standalone:构建一个基于Mster+Slaves的资源调度集群,Spark任务提交给Master运行。是Spark自身的一个调度系统。
-
Yarn: Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。
-
Mesos:国内大环境比较少用。
1.2 Spark任务使用什么进行提交,javaEE界面还是脚本
Shell 脚本。
1.3 Spark提交作业参数
- 在提交任务时的几个重要参数
- executor-cores —— 每个executor使用的内核数,默认为1,官方建议2-5个,我们企业是4个
- num-executors —— 启动executors的数量,默认为2
- executor-memory —— executor内存大小,默认1G
- driver-cores —— driver使用内核数,默认为1
- driver-memory —— driver内存大小,默认512M
2) Spark on local,本地模式
./bin/spark-submit \
--master local[5] \
--driver-cores 2 \
--driver-memory 8g \
--executor-cores 4 \
--num-executors 10 \
--executor-memory 8g \
--class PackageName.ClassName XXXX.jar \
--name "Spark Job Name" \
InputPath \
OutputPath
3) Spak Standalone模式
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master spark://207.184.161.138:7077 \
--executor-memory 20G \
--total-executor-cores 100 \
/path/to/examples.jar \
1000
4)Spark on Yarn Cluster模式(生产环境常用此种模式)
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--executor-memory 20G \
--num-executors 50 \
/path/to/examples.jar \
100
5)Spark on Yarn Client 模式
./bin/spark-submit \
--class org.apache.spark.examples.SparkPi \
--master yarn \
--deploy-mode cluster \
--executor-memory 20G \
--num-executors 50 \
/path/to/examples.jar \
100
1.4 简述Spark的架构与作业提交流程(画图讲解,注明各个部分的作用)

1.5 如何理解Spark中的血统概念(RDD)(笔试重点)
RDD在Lineage依赖方面分为两种Narrow Dependencies与Wide Dependencies用来解决数据容错时的高效性以及划分任务时候起到重要作用。
1.6 简述Spark的宽窄依赖,以及Spark如何划分stage,每个stage又根据什么决定task个数? (笔试重点)
Stage:根据RDD之间的依赖关系的不同将Job划分成不同的Stage,遇到一个宽依赖则划分一个Stage。
Task:Stage是一个TaskSet,将Stage根据分区数划分成一个个的Task。
1.7 请列举Spark的transformation算子(不少于8个),并简述功能
- map(func):
- 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成.
- mapPartitions(func):
- 类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]。假设有N个元素,有M个分区,那么map的函数的将被调用N次,而mapPartitions被调用M次,一个函数一次处理所有分区。
- reduceByKey(func,[numTask]):
- 在一个(K,V)的RDD上调用,返回一个(K,V)的RDD,使用定的reduce函数,将相同key的值聚合到一起,reduce任务的个数可以通过第二个可选的参数来设置。
- aggregateByKey (zeroValue:U,[partitioner: Partitioner]) (seqOp: (U, V) =>

最低0.47元/天 解锁文章
2749

被折叠的 条评论
为什么被折叠?



