大数据分析工程师面试37题 ◀ Spark

本文深入探讨了为何Spark在大数据处理中扮演关键角色,列举了Spark的主要优势,包括高效性、易用性、通用性、兼容性和可扩展性。文章还介绍了Spark面试中常见的问题,涵盖了基本概念、执行过程、编程模型、容错机制、存储级别、组件功能等多个方面,旨在帮助数据分析工程师更好地理解和准备Spark面试。
摘要由CSDN通过智能技术生成

为什么考察Spark?

Spark作为大数据组件中的执行引擎,具备以下优势特性。

(《Spark一文读懂》:https://blog.csdn.net/sinat_26811377/article/details/100046929

  1. 高效性。内存计算下,Spark 比 MapReduce 快100倍。Spark使用最先进的DAG调度程序、查询优化程序和物理执行引擎,实现批量和流式数据的高性能。
  2. 易用性。Spark支持Java、Python和Scala的API,还支持超过80种高级算法,使用户可以快速构建多样的应用。
  3. 通用性。Spark提供了统一的解决方案。Spark可以用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一个应用中无缝使用。这对于企业应用来说,就可使用一个平台来进行不同的工程实现,减少了人力开发和平台部署成本。
  4. 兼容性。Spark能够跟很多开源工程兼容使用。如Spark可以使用Hadoop的YARN和Apache Mesos作为它的资源管理和调度器,并且Spark可以读取多种数据源,如HDFS、HBase、MySQL等。对于任何一家已经部署好Hadoop基础集群的企业来说,在不需要进行任何数据迁移和处理的情况下,就可以快速使用上Spark强大的数据处理和计算能力。

 

可以说Spark几乎是企业搭建大数据平台必备组件,作为数据分析工程师在工作中执行程序、调试程序、查询数据都会和Spark打交道,所以对Spark知识的考察也就顺理成章了。

怎么去准备Spark的面试?对于概念类的知识点可以在面试前突击一下,阅读类似本文的面试指南,对于代码类的或者涉及项目类的考题更多的是需要平时工作和学习的积累,多写一些代码并加上自己的思考。

 

精选考题

基本概念

 

1、Spark支持的编程语言有哪几种? 

Spark 同时支持Scala、Python、Java 、R四种应用程序API编程接口和编程方式。

 考虑到大数据处理的特性,一般会优先使用Scala进行编程。

 

2、Spark有什么特点,处理大数据有什么优势?

1.Spark为我们提供了一个全面、统一的框架,能够适用于各种各样原先需要多种不同的分布式平台的场景,包括批处理、迭代算法、交互式查询和流处理。  

2.Spark相比于MapReduce的运行速度提升几十到几百倍。  

3.Spark提供了丰富的开箱即用算子工具,让开发者可以快速的用Java、Scala或Python编写程序。它本身自带了一个超过80个的高阶操作符集合。 

 

3、Spark中Worker的主要工作是什么?

主要功能:管理当前节点内存和CPU的使用状况,接收master分配过来的资源指令,通过ExecutorRunner启动程序分配任务,worker就类似于包工头,管理分配新进程,做计算的服务,相当于process服务。

需要注意的是:

1)worker不会汇报当前信息给master。worker心跳给master的只有workid,它不会发送资源信息给master。

2)worker不会运行代码,具体运行的是Executor。worker可以运行具体appliaction写的业务逻辑代码,操作代码的节点,它不会运行程序的代码的。

 

4、Spark中Driver的功能是什么?

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

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

 

5、Spark是如何容错的?

一般来说,分布式数据集的容错性有两种方式:数据检查点和记录数据的更新。 

面向大规模数据分析,数据检查点操作成本非常高。这种方式需要通过数据中心的网络连接在机器之间复制庞大的数据集,但是网络带宽往往比内存带宽低得多,同时还需要消耗很多其它的存储资源,因此Spark选择记录更新的方式。

可是,假设更新粒度太细太多,那么记录更新成本也不低。故RDD仅仅支持粗粒度转换,即仅仅记录单个块上运行的单个操作,然后将创建RDD的一系列变换序列(每一个RDD都包括了他是怎样由其它RDD变换过来的以及怎样重建某一块数据的信息。因此RDD的容错机制又称“血统(Lineage)”容错)记录下来,以便恢复丢失的分区。 

Lineage本质上非常相似于数据库中的重做日志(Redo Log),只是这个重做日志粒度非常大,是对全局数据做相同的重做进而恢复数据。

 

6、说说SparkContext和SparkSession有什么区别和联系?

SparkContext是使用Spark功能的入口点。SparkSession是Spark2.x后引入的概念。

在2.x之前,对于不同的功能,需要使用不同的Context,比如

  1. 创建和操作RDD时,使用SparkContext
  2. 使用Streaming时,使用StreamingContext
  3. 使用SQL时,使用SQLContext
  4. 使用Hive时,使用HiveContext

在2.x中,为了统一上述的Context,引入SparkSession,实质上是SQLContext、HiveContext、SparkContext的组合。

 

7、Hadoop和Spark的都是并行计算,那么他们有什么相同和区别?(优势在哪里,只写区别)

1.两者都是用mr模型来进行并行计算,但机制不同。hadoop的一个作业称为job,job里面分为map task和reduce task,每个task都是在自己的进程中运行的,当task结束时,进程也会结束。

spark用户提交的任务称为application,一个application中存在多个job,每触发一次action操作就会产生一个job。这些job可以并行或串行执行,每个job中有多个stage,stage是shuffle过程中DAGSchaduler通过RDD之间的依赖关系划分job而来的,每个stage里面有多个task,组成taskset,由TaskSchaduler分发到各个executor中执行,executor的生命周期是和application一样的,即使没有job运行也是存在的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值