Spark面试题及答案(11道常见必考题解析)

Spark面试题及答案(11道常见必考题解析)-mikechen

在Java面试的时候会涉及Spark面试,下面给大家总了常见的Spark面试题及答案。

什么是Spark?

Spark是由美国加州伯克利大学实验室开发,基于内存计算的大数据并行计算框架,Spark是专为大规模数据处理而设计的快速通用的计算引擎。

 

Spark有哪些特点?

Spark主要有以下4大特点:

Spark面试题及答案(11道常见必考题解析)-mikechen

1.计算速度快

由于Spark是基于内存的分布式计算引擎,因此其运算效率很快。

2.易用性

Spark编程支持Java、Scala、Python和R等编程语言,简洁的API设计有助于用户轻松构建并行程序。

3.通用性

Spark提供了完整而强大的技术栈,包括:SQL查询、流式计算、机器学习和图算法组件等。

 

Spark架构

Spark运行架构,如下图所示:

Spark面试题及答案(11道常见必考题解析)-mikechen

Spark运行架构包括:

  1. 集群资源管理器(Cluster Manager);
  2. 运行作业任务的工作节点(Worker Node);
  3. 每个应用的任务控制节点(Driver);
  4. 每个工作节点上负责具体任务的执行进程(Executor);

 

Spark运行原理

Spark运行流程,如下图所示:

Spark面试题及答案(11道常见必考题解析)-mikechen

首先:为应用构建起基本的运行环境,即由Driver创建一个SparkContext,进行资源的申请、任务的分配和监控;

其次:资源管理器为Executor分配资源,并启动Executor进程;

再次:SparkContext根据RDD的依赖关系构建DAG图,DAG图提交给DAGScheduler解析成Stage,然后把一个个TaskSet提交给底层调度器TaskScheduler处理;

最后:Task在Executor上运行,把执行结果反馈给TaskScheduler,然后反馈给DAGScheduler,运行完毕后写入数据并释放所有资源。

 

Spark和Hadoop的区别

Spark和Hadoop的区别,如下:

Hadoop虽然已成为大数据技术的事实标准,但其本身还存在诸多缺陷,最主要的缺陷是其MapReduce计算模型延迟过高,无法胜任实时、快速计算的需求,因而适用于离线批处理的应用场景。

Spark在借鉴Hadoop MapReduce优点的同时,很好地解决了MapReduce所面临的问题。

Spark和Hadoop 的根本差异是多个作业之间的数据通信问题 : Spark 多个作业之间数据通信是基于内存,而 Hadoop 是基于磁盘

 

Spark 中的 RDD 是什么?

RDD(Resilient Distributed Datasets)是 Spark 中最基本的数据抽象,它是一种可以并行计算的不可变分布式数据集。

RDD 可以存储在内存或磁盘上,并在多个计算节点上进行操作,RDD 的特点是弹性容错、分区计算和依赖关系跟踪。

 

Spark 中的 Shuffle 是什么?

Shuffle 是将数据重新分配和排序的过程,它通常发生在数据的重新分区和聚合阶段。

Shuffle 过程是非常昂贵的,因为它需要将大量的数据从一个节点传输到另一个节点,并且需要排序和合并操作。

 

Spark 中的 Transformation 和 Action 的区别是什么?

Transformation 是指将一个 RDD 转换为另一个 RDD 的操作,例如 :map、filter 和 groupByKey 等;

Action 是指触发计算并返回结果的操作,例如: count、collect 和 saveAsTextFile 等,Action 将触发 Spark 作业的执行,并将计算结果返回给客户端。

 

Spark 中的广播变量是什么?

广播变量是 Spark 中一种高效地在多个计算节点之间共享值的机制。

广播变量可以在多个任务之间共享只读数据,例如数据集、共享变量和配置信息等。使用广播变量可以避免将大量数据重复传输到每个任务中的问题,从而提高性能。

 

Spark 中的 DAG 是什么?

DAG(Directed Acyclic Graph)是 Spark 中用于表示数据处理流程的图形模型。

Spark 会根据用户代码生成一个 DAG,该 DAG 包含了所有的 Transformation 和依赖关系,Spark 会根据 DAG 来执行计算,并且会尽可能地复用已经计算过的数据。

 

Spark和Flink应用场景区别

Spark和Flink的区别,如下:

1.Spark 适合于吞吐量比较大的场景,数据量非常大而且逻辑复杂的批数据处理,并且对计算效率有较高要求,比如:用大数据分析来构建推荐系统进行个性化推等。

2.Flink 主要用来处理要求低延时的任务,实时监控,实时报表,比如:阿里双11实时交易额,实时仓库的场景。

以上就是常见的Spark面试题及答案,更多的Java面试题及答案,请查看:1000+Java面试题及答案详解

陈睿mikechen

10年+大厂架构经验,资深技术专家,就职于阿里巴巴、淘宝、百度等一线互联网大厂。

关注「mikechen」公众号,获取更多技术干货!

后台回复面试即可获取《史上最全阿里Java面试题总结》,后台回复架构,即可获取《阿里架构师进阶专题全部合集

评论交流
    说说你的看法