大数据分析工程师面试集锦:Spark 面试指南
作者头像
  • 李武奇
  • 2019-09-05 06:49:21 9

Spark面试指南

Spark作为大数据组件中的执行引擎,具备以下显著优势:

  1. 高效性:Spark在内存计算模式下比MapReduce快100倍。Spark利用先进的DAG调度程序、查询优化程序和物理执行引擎,实现了批处理和流式数据的高性能处理。

  2. 易用性:Spark支持Java、Python和Scala的API,并提供了超过80种高级算法,使用户能够快速构建多样化的应用。

  3. 通用性:Spark提供了一套统一的解决方案,可用于批处理、交互式查询(Spark SQL)、实时流处理(Spark Streaming)、机器学习(Spark MLlib)和图计算(GraphX)。这些不同类型的处理都可以在同一应用中无缝衔接。

  4. 兼容性:Spark可以与许多开源项目兼容使用。例如,Spark可以使用Hadoop的YARN和Apache Mesos作为资源管理和调度器,并且可以读取多种数据源,如HDFS、HBase、MySQL等。对于已经部署Hadoop基础集群的企业,无需进行数据迁移即可快速利用Spark的强大数据处理和计算能力。

可以说,Spark几乎是企业搭建大数据平台不可或缺的组件。数据分析工程师在工作中频繁需要使用Spark来执行程序、调试程序和查询数据,因此对Spark知识的考察变得十分必要。

如何准备Spark面试

对于概念性的知识点,可以在面试前进行突击复习,阅读类似的面试指南。对于代码题或项目题,则需要依靠平时的工作和学习积累,多写代码并加入自己的思考。

精选面试题

基本概念

  1. Spark支持哪些编程语言?

    Spark同时支持Scala、Python、Java和R四种编程语言。通常情况下,考虑到大数据处理的特性,优先选择Scala进行编程。

  2. Spark有哪些特点?在处理大数据时有何优势?

    1. Spark提供了一个全面、一致的框架,适用于各种分布式平台场景,包括批处理、迭代算法、交互式查询和流处理。
    2. Spark相比MapReduce,运行速度提高了数十到数百倍。
    3. Spark提供了丰富的开箱即用算子工具,使开发者可以快速用Java、Scala或Python编写程序,自带超过80种高级操作符。
  3. Spark中的Worker主要负责什么?

    主要职责是管理当前节点的内存和CPU使用情况,接收来自Master的资源指令,通过ExecutorRunner启动任务并分配工作。Worker类似于包工头,负责管理和分配新进程。

    注意:

    • Worker不会向Master报告当前信息,只会发送心跳信号。
    • Worker不运行代码,具体执行的是Executor。
  4. Spark Driver的主要功能是什么?

    1. Driver进程是作业的主进程,持有SparkContext实例,是程序的入口点。
    2. 功能包括向集群请求资源、向Master注册信息、调度作业、解析作业并生成Stage和Task。
  5. Spark如何实现容错?

    分布式数据集的容错一般有两种方式:数据检查点和记录数据的更新。对于大规模数据分析,数据检查点的成本很高,因此Spark采用记录更新的方式。然而,如果更新粒度太细,记录更新成本也不低。因此,RDD仅支持粗粒度转换,即记录单个块上的操作,从而通过“血缘”机制(Lineage)恢复丢失的分区。

  6. SparkContext和SparkSession有何区别和联系?

    SparkContext是使用Spark功能的入口点。SparkSession是在Spark 2.x版本后引入的概念,旨在统一不同类型的Context。在2.x之前,需要根据不同功能使用不同的Context,如SparkContext用于RDD操作、StreamingContext用于流处理、SQLContext用于SQL查询、HiveContext用于Hive操作。而在2.x中,SparkSession整合了SQLContext、HiveContext和SparkContext的功能。

  7. Hadoop和Spark在并行计算方面有何异同?

    1. Hadoop和Spark都使用MR模型进行并行计算,但机制不同。Hadoop的Job分为Map Task和Reduce Task,每个Task都在各自的进程中运行。Spark的应用称为Application,一个Application包含多个Job,每个Job可以并行或串行执行。
    2. Hadoop的Job只有Map和Reduce操作,而Spark提供了丰富的算子,可以完成各种数据处理操作。
    3. Spark的迭代计算都在内存中进行,提供了良好的容错机制。
  8. Spark有哪些组件?每个组件的功能是什么?对应的应用场景是什么?

    1. Spark Core:Spark的核心组件,包含有向无环图、RDD、血缘关系、缓存、广播等功能。
    2. Spark Streaming:流式处理系统,可以处理多种数据源,如Kafka、Flume、Twitter等。
    3. Spark SQL:支持关系表和RDD的一致处理,便于进行SQL查询和复杂数据分析。
    4. SparkR:R语言包,提供分布式DataFrame支持。
    5. MLBase:Spark生态系统的一部分,简化机器学习的使用。
    6. GraphX:用于图和图并行计算。
  9. Spark有哪些部署形式?每种形式的特点是什么?

    1. Local(本地模式):常用于本地开发测试,分为单线程和多线程模式。
    2. Standalone(集群模式):典型的Master/Slave架构,支持ZooKeeper实现Master HA。
    3. On Yarn(集群模式):在Yarn资源管理器框架上运行,由Yarn管理资源,Spark负责任务调度和计算。
    4. On Mesos(集群模式):在Mesos资源管理器框架上运行,由Mesos管理资源,Spark负责任务调度和计算。
    5. On Cloud(集群模式):例如AWS EC2,方便访问Amazon S3,支持多种分布式存储系统,如HDFS和S3。
  10. Spark有哪些存储级别?

    1. MEMORY_ONLY:数据保存在内存中,内存不足时数据可能不会持久化。
    2. MEMORYANDDISK:数据优先保存在内存中,内存不足时存到磁盘。
    3. MEMORYONLYSER:与MEMORY_ONLY相似,但数据会被序列化,节省内存。
    4. MEMORYANDDISKSER:与MEMORYAND_DISK相似,但数据会被序列化,节省内存。
    5. DISK_ONLY:数据全部写入磁盘文件。
    6. MEMORYONLY2、MEMORYANDDISK_2:数据有副本保存在其他节点上,用于容错。
  11. RDD的优势是什么?

    1. 高效容错机制:RDD没有Checkpoint的开支,只需根据血缘关系还原数据,基本不需要重计算。
    2. 数据本地性:任务可以根据数据本地性分配,优先分配到数据存储的节点,提高性能。
    3. 优雅降级:读取数据最快的方式是从内存中读取,内存不足时,RDD会将大分区溢出到磁盘,仍能提供并行计算的能力。
  12. DataFrame的特性是什么?

    1. 大数据量级:支持从KB到PB级的数据量。
    2. 多种数据源:支持多种数据格式和存储系统。
    3. 代码优化:通过Catalyst优化器进行高级优化。
    4. 通用性:与主流大数据工具和基础设施无缝集成。
    5. 多种开发语言:支持Python、Java、Scala和R语言。
  13. RDD中的转换(Transformation)和动作(Action)的区别是什么?

    转换操作会产生新的RDD,但不会触发计算;动作操作会触发计算并将结果返回给程序。

  14. RDD中有哪几种依赖?作用是什么?

    有窄依赖(Narrow Dependencies)和宽依赖(Wide Dependencies)。窄依赖是指父RDD的每个分区只被子RDD的一个分区使用,而宽依赖是指父RDD的分区被多个子RDD的分区使用。窄依赖用于划分Stage。

  15. RDD有哪几种操作类型?

    1. Transformation:将RDD转换为另一种RDD。
    2. Action:触发具体的作业并对RDD执行最终操作。
    3. Cache/Persist:用于提高性能和容错。
  16. Cache和Persist的区别是什么?

    Cache是Persist的一种特殊形式,缓存级别为MEMORY_ONLY。Persist可以设置不同的缓存级别。

  17. RDD、DataFrame和DataSet的区别是什么?

    RDD全称Resilient Distributed Dataset,是Spark的基本数据结构,支持弹性分布和只读分区集合。DataFrame在RDD基础上增加了Schema,支持更多数据处理操作。DataSet是DataFrame API的扩展,提供强类型支持。

希望以上内容对您有所帮助,如有任何疑问,请随时提问!

    本文来源:图灵汇
责任编辑: : 李武奇
声明:本文系图灵汇原创稿件,版权属图灵汇所有,未经授权不得转载,已经协议授权的媒体下载使用时须注明"稿件来源:图灵汇",违者将依法追究责任。
    分享
面试数据分析集锦工程师指南Spark
    下一篇