Spark高频面试题总结

1. Spark高频面试题总结

1.1 Spark有几种部署方式?请分别简要论述

  1. Local:运行在一台机器上,通常是练手或者测试环境。

  2. Standalone:构建一个基于Mster+Slaves的资源调度集群,Spark任务提交给Master运行。是Spark自身的一个调度系统。

  3. Yarn: Spark客户端直接连接Yarn,不需要额外构建Spark集群。有yarn-client和yarn-cluster两种模式,主要区别在于:Driver程序的运行节点。

  4. Mesos:国内大环境比较少用。

1.2 Spark任务使用什么进行提交,javaEE界面还是脚本

Shell 脚本。

1.3 Spark提交作业参数

  1. 在提交任务时的几个重要参数

- 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个),并简述功能

  1. map(func):
  • 返回一个新的RDD,该RDD由每一个输入元素经过func函数转换后组成.
  1. mapPartitions(func):
  • 类似于map,但独立地在RDD的每一个分片上运行,因此在类型为T的RD上运行时,func的函数类型必须是Iterator[T] => Iterator[U]。假设有N个元素,有M个分区,那么map的函数的将被调用N次,而mapPartitions被调用M次,一个函数一次处理所有分区。
  1. reduceByKey(func,[numTask]):
  • 在一个(K,V)的RDD上调用,返回一个(K,V)的RDD,使用定的reduce函数,将相同key的值聚合到一起,reduce任务的个数可以通过第二个可选的参数来设置。
  1. aggregateByKey (zeroValue:U,[partitioner: Partitioner]) (seqOp: (U, V) =>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值