大数据面试题_Spark篇

本文详细探讨了Spark与Hadoop的区别、Spark的容错机制、RDD持久化原理及检查点机制、Spark组件及工作原理、主备切换、部署模式及其特点,以及Spark比MapReduce快的原因。此外,还深入分析了Spark的优化方法,包括平台、应用和JVM层面的调优,以及数据本地性、RDD的弹性特性和缺陷。最后,讲解了Shuffle过程、Join操作优化和Spark on Yarn的优点,并阐述了Container的理解以及Parquet文件格式在Spark中的优势。
摘要由CSDN通过智能技术生成

一、大数据面试题_Spark篇

(一)SparkCore

1、hadoop 和 spark 的相同点和不同点?

  • Hadoop 底层使用 MapReduce 计算架构,只有 map 和 reduce 两种操作,表达能 力比较欠缺,而且在 MR 过程中会重复的读写 hdfs,造成大量的磁盘 io 读写操 作,所以适合高时延环境下批处理计算的应用;

  • Spark 是基于内存的分布式计算架构,提供更加丰富的数据集操作类型,主要分 成转化操作和行动操作,包括 map、reduce、filter、flatmap、groupbykey、 reducebykey、union 和 join 等,数据分析更加快速,所以适合低时延环境下计算 的应用;

  • spark与hadoop最大的区别在于迭代式计算模型。基于mapreduce框架的Hadoop 主要分为 map 和 reduce 两个阶段,两个阶段完了就结束了,所以在一个 job 里 面能做的处理很有限;spark 计算模型是基于内存的迭代式计算模型,可以分为 n 个阶段,根据用户编写的 RDD 算子和程序,在处理完一个阶段后可以继续往下 处理很多个阶段,而不只是两个阶段。所以 spark 相较于 mapreduce,计算模型 更加灵活,可以提供更强大的功能。

  • 但是 spark 也有劣势,由于 spark 基于内存进行计算,虽然开发容易,但是真正 面对大数据的时候,在没有进行调优的轻局昂下,可能会出现各种各样的问题, 比如 OOM 内存溢出等情况,导致 spark 程序可能无法运行起来,而 mapreduce 虽然运行缓慢,但是至少可以慢慢运行完。

2、 spark 如何保证宕机迅速恢复?

  1. 适当增加 spark standby master
  2. 编写 shell 脚本,定期检测 master 状态,出现宕机后对 master 进行重启操作

3、RDD 持久化原理?

spark 非常重要的一个功能特性就是可以将 RDD 持久化在内存中。

调用 cache()和 persist()方法即可。cache()和 persist()的区别在于,cache()是 persist() 的一种简化方式,cache()的底层就是调用 persist()的无参版本 persist(MEMORY_ONLY),将数据持久化到内存中。

如果需要从内存中清除缓存,可以使用 unpersist()方法。RDD 持久化是可以手动 选择不同的策略的。在调用 persist()时传入对应的 StorageLevel 即可。

具体可参考文章:Spark中RDD的持久化

4、checkpoint 检查点机制?

  • 应用场景:当 spark 应用程序特别复杂,从初始的 RDD 开始到最后整个应用程序 完成有很多的步骤,而且整个应用运行时间特别长,这种情况下就比较适合使用 checkpoint 功能。

  • 原因:对于特别复杂的 Spark 应用,会出现某个反复使用的 RDD,即使之前持久 化过但由于节点的故障导致数据丢失了,没有容错机制,所以需要重新计算一次 数据

Checkpoint 首先会调用 SparkContext 的 setCheckPointDIR()方法,设置一个容错的 文件系统的目录,比如说 HDFS;然后对 RDD 调用 checkpoint()方法。之后在 RDD 所处的 job 运行结束之后,会启动一个单独的 job,来将 checkpoint 过的 RDD 数 据写入之前设置的文件系统,进行高可用、容错的类持久化操作。

检查点机制是我们在 spark streaming 中用来保障容错性的主要机制,它可以使 spark streaming 阶段性的把应用数据存储到诸如 HDFS 等可靠存储系统中,以供 恢复时使用。具体来说基于以下两个目的服务:

  • 控制发生失败时需要重算的状态数。Spark streaming 可以通过转化图的谱系 图来重算状态,检查点机制则可以控制需要在转化图中回溯多远。
  • 提供驱动器程序容错。如果流计算应用中的驱动器程序崩溃了,你可以重启 驱动器程序并让驱动器程序从检查点恢复,这样 spark streaming 就可以读取 之前运行的程序处理数据的进度,并从那里继续。

具体可参考文章:Spark中checkpoint检查点机制

5、spark 有哪些组件?

master:管理集群和节点,不参与计算。
worker:计算节点,进程本身不参与计算,和 master 汇报。
Driver:运行程序的 main 方法,创建 spark context 对象。
spark context:控制整个 application 的生命周期,包括 dagsheduler 和 task scheduler 等组件。
client:用户提交程序的入口。

6、spark 工作机制?

用户在 client 端提交作业后,会由 Driver 运行 main 方法并创建

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值