spark题目整理

1、driver的功能是什么?

1)一个Spark作业运行时包括一个Driver进程,也是作业的主进程,具有main函数和SparkContext的实例,是程序的人口点

2)功能:负责向集群申请资源,向master注册信息,负责了作业的调度,负责作业的解析、生成Stage并调度Task到Executor上。包括DAGScheduler,TaskScheduler。

2、spark的有几种部署模式,每种模式特点?

1) 本地模式2) standalone 模式3) spark on yarn 模式4) mesos模式

3、Spark为什么比mapreduce快?

1)基于内存计算,减少低效的磁盘交互;2)高效的调度算法,基于DAG;3)容错机制Linage,精华部分就是DAG和Lingae

5、RDD宽依赖和窄依赖?缺陷?

窄依赖就是一个父( 或多个)RDD分区对应一个子RDD分区,如co-partioned join
宽依赖是一个父RDD分区对应(非)全部的子RDD分区,如groupByKey,ruduceByKey
缺陷:1不支持细粒度的写和更新操作,粗粒度写:批量写入数据,但读数据细粒度的 2不支持增量迭代计算,Flink支持。

11、rdd有几种操作类型?算子 

1)transformation,rdd由一种转为另一种rdd 2)action, 3)cronroller,crontroller是控制算子,cache,persist

Transformation和action算子有什么区别?举例说明

Transformation 变换/转换:延迟计算:也就是说从一个RDD 转换生成另一个 RDD 的转换操作不是马上执行,需要等到有 Action 操作的时候才会真正触发运算

Action 行动算子:这类算子会触发 SparkContext 提交 Job 作业。

1,spark的工作机制

用户在客户`端提交作业后,会由Driver运行main方法并创建SparkContext上下文,SparkContext向资源管理器申请资源, 启动Execotor进程, 并通过执行rdd算子,形成DAG有向无环图,输入DAGscheduler, 然后通过DAGscheduler调度器, 将DAG有向无环图按照rdd之间的依赖关系划分为几个阶段,也就是stage, 输入task scheduler, 然后通过任务调度器taskscheduler将stage划分为task set分发到各个节点的executor中执行。

2 你所理解的 Spark 的 shuffle 过程?

Spark shuffle 处于一个宽依赖,可以实现类似混洗的功能,将相同的 Key 分发至同一个 Reducer上进行处理。

3数据倾斜

某一部分的数据显著多于其它部分(木桶效应)。大量不相同的 Key 对应的数据被分配到了同一个 Task 上
1. 调整并行度分散同一个 Task 的不同 Key:
2. 自定义Partitioner:将原本被分配到同一个 Task 的不同 Key 分配到不同 Task
3. 将 Reduce side(侧) Join 转变为 Map side(侧) Join: 通过 Spark 的 Broadcast 机制,将 Reduce 侧 Join 转化为 Map 侧 Join,避免 Shuffle 从而完全消除 Shuffle 带来的数据倾斜。可以看到 RDD2 被加载到内存中了。
4. 为 skew 的 key 增加随机前/后缀 ;5. 大表随机添加 N 种随机前缀,小表扩大 N 倍

4 Spark有哪些聚合类的算子,我们应该尽量避免什么类型的算子?

在我们的开发过程中,能避免则尽可能避免使用 reduceByKey、join、distinct、repartition 等会进行 shuffle 的算子,尽量使用 map 类的非 shuffle 算子。这样的话,没有 shuffle 操作或者仅有较少 shuffle 操作的 Spark 作业,可以大大减少性能开销。

6 Spark为什么快,Spark SQL 一定比 Hive 快吗

Spark SQL 比 Hadoop Hive 快,是有一定条件的,而且不是 Spark SQL 的引擎比 Hive 的引擎快,相反,Hive 的 HQL 引擎还比 Spark SQL 的引擎更快。其实,关键还是在于 Spark 本身快。

消除了冗余的 HDFS 读写: 读写 IO 时间
消除了冗余的 MapReduce 阶段: Hadoop 的 shuffle 操作一定连着完整的 MapReduce 操作,冗余繁琐。而 Spark 基于 RDD 提供了丰富的算子操作,且 reduce 操作产生 shuffle 数据,可以缓存在内存中。
JVM 的优化: 启动一次 JVM

Spark streamning工作流程是怎么样的,和Storm比有什么区别

streamning笔记:https://juejin.im/post/5a40b76a6fb9a045263bd279

Spark 的几个优势

  1. 性能快、内存 ;2、API 3、与Hadoop 兼容 4方便下载安装。shell交互式的学习。 5架构使精力放到计算

其他:https://runzhliu.github.io/posts/

其他参考

https://www.cnblogs.com/feiyudemeng/p/9056772.html(精华)

https://zhuanlan.zhihu.com/p/49169166 (2Spark面试题)

https://blog.csdn.net/zuolixiangfisher/article/details/88973159(常见题目)

发布了156 篇原创文章 · 获赞 28 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/serenysdfg/article/details/104678539