2020年最新Spark企业级面试题【上】

article/2025/9/29 14:44:50

前言

         现在距离2021年还有不到一个月的时间了,是不是有的小伙明年不知该怎么复习spark,以及不知道该备战企业中会问到那些问题。好今天他来了总结了20个企业中经常被问到的面题以及会附带一些笔试题哦,编写不易建议收藏

一、 Spark 有几种部署方式?

spark 中的部署模式分为三种 Standalone, Apache Mesos, Hadoop YARN,那他们分别有啥作用那?

  • Standalone: 独立模式, Spark 原生的简单集群管理器, 自带完整的服务,可单独部署到一个集群中,无需依赖任何其他资源管理系统,使用 Standalone 可以很方便地搭建一个集群;

  • Apache Mesos: 一个强大的分布式资源管理框架,它允许多种不同的框架部署在其上,包括 yarn;

  • Hadoop YARN: 统一的资源管理机制,在上面可以运行多套计算框架,如 mapreduce、 storm 等, 根据 driver 在集群中的位置不同,分为 yarn client 和 yarncluster。

二、 Spark 提交作业参数

企业问这个问题基本考验你对有没有是用spark提交过任务,以及是否了解每个参数的含义。合理设置参数也是可以起到优化作用的哦。

  • executor-cores —— 每个executor使用的内核数,默认为1
  • num-executors —— 启动executors的数量,默认为2
  • executor-memory —— executor内存大小,默认1G
  • driver-cores —— driver使用内核数,默认为1
  • driver-memory —— driver内存大小,默认512M

三、简述Spark on yarn的作业提交流程

既然spark是支持yarn调度的那你的调度流程是什么样的那?yarn这边是有两个模式分别为 yarn Clint 和yarn Cluster模式,那我这边分别讲下吧。

yarn Clint模式
yarn Client提交流程图
         在YARN Client模式下,Driver在任务提交的本地机器上运行,Driver启动后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster的功能相当于一个ExecutorLaucher,只负责向ResourceManager申请Executor内存。
         ResourceManager接到ApplicationMaster的资源申请后会分配container,然后ApplicationMaster在资源分配指定的NodeManager上启动Executor进程,Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

yarn Cluster 模式
yarn Cluster提交流程图
         在YARN Cluster模式下,任务提交后会和ResourceManager通讯申请启动ApplicationMaster,随后ResourceManager分配container,在合适的NodeManager上启动ApplicationMaster,此时的ApplicationMaster就是Driver。
Driver启动后向ResourceManager申请Executor内存,ResourceManager接到。
         ApplicationMaster的资源申请后会分配container,然后在合适的NodeManager上启动Executor进程,Executor进程启动后会向Driver反向注册,Executor全部注册完成后Driver开始执行main函数,之后执行到Action算子时,触发一个job,并根据宽依赖开始划分stage,每个stage生成对应的taskSet,之后将task分发到各个Executor上执行。

四、既然有Yarn Client 和Yarn Cluster 那它这两个模式的区别?

如果在面试的时候面试官问到了yarn 的提交流程,你恰好有说了yarn clinet 和 yanr cluster 面试官基本上都会问一下他们的区别,看看大数据老哥是怎么回答的。

  • yarn-cluster是用于生产环境,这种模式下客户端client在提交了任务以后,任务就托管给yarn了,这个时候client就可以断开连接不需要再管后续事情了,这种情况下无法直接查看到application运行的日志,查看日志较为麻烦;
  • 而yarn-client则是主要用于测试时使用,这种模式下客户端client提交任务后,不能直接断开连接,客户端可以看到application运行的实时日志,非常方便开发调试。

五、请列举Spark的transformation算子(不少于5个)

Spark中的算子是非常多的我这里就列举几个我在开发中常用的算字吧。

  • map
  • flatMap
  • filter
  • groupByKey
  • reduceByKey
  • sortByKey

六、请列举Spark的action算子(不少于5个)

尽然有转换算子是不是执行算子也是必不可少上的呀。好那我也分别给大家列举几个常用的执行算子。

  • reduce
  • collect
  • first
  • take
  • aggregate
  • countByKey
  • foreach
  • saveAsTextFile

七、 简述Spark的两种核心Shuffle

Hashshuffle

  • 优化前下游有一个task他就会生成一个对应的文件,有几个task就会有几个文件
    优化后通过复用buffer来优化shuffle过程中产生小文件的数量
  • 2.0版本之后就不用了
    Sortshuffle
  • 当shuffle read task的数量小于等于默认的200个时,并且不是聚合类的shuffle算子,就会启动bypass机制,bypass机制并没有对数据进行sort

八、简述SparkSQL中RDD、DataFrame、DataSet三者的区别与联系

RDD :
         优点:
         - 编译时类型安全
         - 编译时就能检查出类型错误
         - 面向对象的编程风格
         - 直接通过类名点的方式来操作数据
         缺点:
         - 序列化和反序列化的性能开销
         - 无论是集群间的通信, 还是 IO 操作都需要对对象的结构和数据进行序列化和反序列化。
         - GC 的性能开销,频繁的创建和销毁对象, 势必会增加 GC

DataFrom:

  • DataFrame 引入了 schema 和 off-heap(堆外内存)
  • schema : RDD 每一行的数据, 结构都是一样的,这个结构就存储在 schema 中。 Spark 通过 schema 就能够读懂数据, 因此在通信和 IO 时就只需要序列化和反序列化数据, 而结构的部分就可以省略了。

DataSet:

  • DataSet 结合了 RDD 和 DataFrame 的优点,并带来的一个新的概念 Encoder。
  • 当序列化数据时, Encoder 产生字节码与 off-heap 进行交互,能够达到按需访问数据的效果,而不用反序列化整个对象。

九、Repartition和Coalesce关系与区别

关系:
两者都是用来改变RDD的partition数量的,repartition底层调用的就是coalesce方法:coalesce(numPartitions, shuffle = true)
reparationd底层源码

区别:

  1. repartition一定会发生shuffle,coalesce根据传入的参数来判断是否发生shuffle
  2. 一般情况下增大rdd的partition数量使用repartition,减少partition数量时使用coalesce

十、RDD有多少种持久化方式?

MEMORY_ONLY 以非序列化的 java 对象的方式持久在 JVM 内存中,如果内
存无法完成存储 RDD 所有的 partition,那么那些没有持久化的 partition 就会在
下一次使用它的的时候,重新计算
MEMORY_AND_DISK 同上,但是当某些 partition 无法存储在内存中的时
候,会持久化到硬盘中。下次使用这些 partition 时,需要从磁盘上读取
MEMORY_ONLY_SER 同 MEMORY_ONLY ,但是会使用 java 序列化方式,将
java 对象序列化后进行持久化。可以减少内存开销,但是需要进行反序列化,
因此会加大 CPU 开销。

总结

         以上10个企业中经常被问到的Spark面试题,也希望没有找到工作的小朋友找都自己满意的工作,我这边也会粉丝们带来我在自己在学习spark中整理的脑图和文档 微信搜索公众号【大数据老哥】回复【回复spark面试题】,我们下期见~~~

微信公众号搜索【大数据老哥】可以获取 200个为你定制的简历模板、大数据面试题、企业面试题…等等。

spark面试题获取


http://chatgpt.dhexx.cn/article/DvRLLHAT.shtml

相关文章

spark相关面试题总结

(根据博客总结并不断增加自己的内容) 1.spark中的RDD是什么,有哪些特性? 答:RDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一…

spark面试题

1.spark中的RDD是什么,有哪些特性? 答:RDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可以并行计…

Spark面试

场景描述:这是一个Spark的面试题合集。是我自己作为面试者和作为面试官都会被问到或者问到别人的问题,这个总结里面有大量参考了网上和书上各位老师、大佬的一些原文答案,只是希望可以给出更好的回答,一般上我都会把原文链接贴上&…

还有多少人搞不懂这 40 道 Spark 灵魂面试题?

大家好,我是峰哥~ 最近看到了各大厂裁员的消息,没办法,到了毕业季,大家总有一天会各奔东西,今天给分享一些面试题,希望大家能拿到更好的offer! 来源:大数据真好玩 1、spark的有几种部…

关于Spark的面试题,你应该知道这些!

之前分享过一篇博客,👉不会这20个Spark热门技术点,你敢出去面试大数据吗?,那一篇确实是非常精华,提炼出了非常重要同样非常高频的Spark技术点,也算是收到了一些朋友们的好评。本篇博客,博主打算…

史上最全的spark面试题——持续更新中

1.spark中的RDD是什么,有哪些特性? 答:RDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可以并行计算的集合 Dataset:就是一个集合,用于存放数据的 Destributed:分布式,可以并行在集群计算 …

spark 面试题汇总

大数据面试题汇总 大数据面试题汇总 - 简书 spark 资源调优 1、列式存储和行式存储的区别 行存储,数据行存储,一个文件可表达一个二维表。适用于一般的业务场景如CSV文件,文本文件 因为这里的行结构是固定的,每一行都一样&…

Spark面试问题整理(持续更新中......)

Spark应用转换流程 1、 spark应用提交后,经历了一系列的转换,最后成为task在每个节点上执行 2、 RDD的Action算子触发Job的提交,生成RDD DAG 3、 由DAGScheduler将RDD DAG转化为Stage DAG,每个Stage中产生相应的Task集合 4、 Task…

大数据知识面试题-Spark(2022版)

序列号内容链接1大数据知识面试题-通用(2022版)https://blog.csdn.net/qq_43061290/article/details/1248190892大数据知识面试题-Hadoop(2022版)https://blog.csdn.net/qq_43061290/article/details/1248222933大数据知识面试题-…

Spark面试,Spark面试题,Spark面试汇总

Table of Contents 1、你觉得spark 可以完全替代hadoop 么? 2、Spark消费 Kafka,分布式的情况下,如何保证消息的顺序? 3、对于 Spark 中的数据倾斜问题你有什么好的方案? 4、你所理解的 Spark 的 shuffle 过程? 5、Spark有…

Spark高频面试题总结

1. Spark高频面试题总结 1.1 Spark有几种部署方式?请分别简要论述 Local:运行在一台机器上,通常是练手或者测试环境。 Standalone:构建一个基于MsterSlaves的资源调度集群,Spark任务提交给Master运行。是Spark自身的一个调度系统。 Yarn: …

【大数据面试题】(八)Spark 相关面试题

1.spark中的RDD是什么,有哪些特性? 答:RDD(Resilient Distributed Dataset)叫做分布式数据集,是spark中最基本的数据抽象,它代表一个不可变,可分区,里面的元素可以并行计…

spark面试题总结

文章目录 一、你是怎么理解Spark,它的特点是什么?二、Spark有几种部署方式,请分别简要论述三、Spark提交作业的参数四、简述Spark的作业提交流程五、你是如何理解Spark中血统(RDD)的概念?它的作用是什么?六、简述Spark的宽窄依赖…

Spark高频面试题(建议收藏)

一、你是怎么理解Spark,它的特点是什么? Spark是一个基于内存的,用于大规模数据处理(离线计算、实时计算、快速查询(交互式查询))的统一分析引擎。 它内部的组成模块,包含SparkCore&…

Spark面试题汇总及答案(推荐收藏)

一、面试题 Spark 通常来说,Spark与MapReduce相比,Spark运行效率更高。请说明效率更高来源于Spark内置的哪些机制?hadoop和spark使用场景?spark如何保证宕机迅速恢复?hadoop和spark的相同点和不同点?RDD持久化原理&am…

日报日报!Spark综合面试题总结

Spark 什么是Spark 基于内存的,用于大规模数据处理(离线计算、实时计算、快速查询(交互式查询))的统一分析引擎。 Spark特点 快: Spark计算速度是MapReduce计算速度的10-100倍 易用:&#x…

大数据面试杀招——Spark高频考点,必知必会!

前面两篇文章分别为大家介绍了大数据面试杀招 关于Hive 与 Hadoop 的内容,收到读者朋友们一致的好评和赞赏。嘿嘿,本篇文章我们就继续来研究,关于Spark的面试热点,又有哪些~ 一、你是怎么理解Spark,它的特点是什么&…

Spark常见20个面试题(含大部分答案)

1、什么是宽依赖,什么是窄依赖?哪些算子是宽依赖,哪些是窄依赖? 窄依赖就是一个父RDD分区对应一个子RDD分区,如map,filter 或者多个父RDD分区对应一个子RDD分区,如co-partioned join 宽依赖是一…

MATLAB实现Lagrange插值函数

MATLAB实现Lagrange插值函数 首先我们绘制Lagrange基函数 首先给出一个Lagrange基函数比较复杂的设法: function ylagrange(x0,y0,x) nlength(x0);mlength(x); for i1:mzx(i);s0.0;for k1:np1.0;for j1:nif j~kp p*(z-x0(j))/(x0(k)-x0(j));endendsp*y0(k)s;endy…

MATLAB----数据插值

本篇参考于:中国大学慕课,专题五,“5.3数据插值” 1.一维数据插值interp1() 2.二维数据插值interp2() 1.一维数据插值 调用格式:interp1(X,Y,X1.method)。根据X,Y的值,计算函数在X1处的值。其中X,Y为已知…