屡败屡战的大数据秋招之Spark 面试知识点总结

1. Hadoop 和 Spark的区别说一下?
  • Hadoop的数据处理单位是block,Spark 提供了可供并行处理的数据抽象RDD
  • Hadoop 对数据处理只提供了Map和Reduce 两种操作。Spark 提供了两大类算子transformation 和 action,支持的操作更多。
  • Hadoop 只支持Map->Reduce 的流程。Spark 则依赖DAG 有向无环图的方式来执行Job。速度更快。
  • Spark 提供了Hadoop 所不支持的cache 和 checkpoint 机制。大大的提高了计算速度和程序可靠性。
  • Spark 会对Job 划分Stage。同一个Stage 内的task 可以用流水线机制执行,大大提高了速度。
  • Shuffle 机制:Hadoop 的MapReduce 不支持在线聚合。Spark 采用了类HashMap的结构(三种数据结构)实现了自动聚合功能。Spark 在对Record进行排序的时候可以通过PartitionId 和 key进行排序的方式,Hadoop 只能通过key进行排序
2. 说一下你对RDD 的理解?
  • RDD是针对数据的分布式数据集,在RDD上的操作会在所有节点统一进行。RDD对它内部的元素具有容错机制。
3. Map 是类似于桶数组的形式,类比说一下RDD 的内部结构你觉得是怎么样的?
  • RDD 就像一个分布式数组,每个子part 含有相同类型的元素,但是元素可以分布在不同的机器上。
4. 说一下Spark 中 DAG 是如何形成的?
  • DAG 是有向无环图,其实就是RDD执行的流程。原始的RDD通过一系列的转换操作就形成了DAG有向无环图,任务执行时(执行Action算子时),可以按照DAG的描述,执行真正的计算(数据被操作的一个过程)。一个Spark应用中可以有一到多个DAG,取决于触发了多少次Action。
  • Spark会根据shuffle/宽依赖使用回溯算法来对DAG进行Stage划分,从后往前,遇到宽依赖就断开,遇到窄依赖就把当前的RDD加入到当前的stage/阶段中。
5. 说一下Spark 持久化机制/缓存机制?
  • Spark 的缓存机制是一种空间换时间的方法。使用场景为:数据会被多次重复使用。数据量较小可以放在内存空间的情况下可以对RDD 进行缓存。
  • Spark提供了不同的缓存级别。因为ci'pan
6. 说一下Spark 的checkpoint 机制?
  • Checkpoint 是Spark 提供的容错机制。适用场景为:应对job 执行失败的情况,应对软硬件故障造成的数据丢失问题。具体的过程是Spark 将RDD 持久化到了分布式文件系统上。
  • Checkpoint 会切断lineage 血缘关系。既然RDD 都被持久化到HDFS上了,该RDD 不需要通过重新计算再次得到,也就没有必要保存其lineage 了。
7. Spark 持久化机制和checkpoint 机制你觉得区别在哪里?
  • 目的不同:cache 是为了加速计算,也就是加速后续的job。checkpoint 则是为了在job 运行失败的时候能够快速恢复!
  • 存储位置不同:cache 主要使用内存,偶尔使用磁盘存储。checkpoint 为了可靠读写主要采用HDFS 作为存储空间
  • 对lineage 影响不同:cache 对lineage无影响。缓存的RDD 丢失后可以通过lineage 重新计算。如果对RDD 进行 checkpoint,HDFS 因为是可靠存储哎,所以不需要再保存lineage了
  • 应用场景不同:cache 机制适用于会被多次读取,占用空间不是特别大的RDD。checkpoint 机制则是适用于数据依赖关系特别复杂,重新计算代价高的RDD,比如某RDD关联的数据过多、计算链过长、被多次重复使用。

8. 说一下Spark 架构。由哪几个部分构成?
  • Master 节点、Worker 节点、Executor 执行器、Task 计算任务
  • Master 节点上常驻Master 进程,该进程负责管理所有的Worker 节点。(分配任务、收集运行信息、监控worker的存活状态)
  • Worker 节点常驻Worker进程,该进程与Master 节点通信,还管理Spark 任务的执行。(启动Executor,监控任务运行状态)
  • Executor 执行器。Executor 是一个JVM 进程,是Spark 计算资源的单位。可以运行多个计算任务。
  • Task Spark 应用会被拆分为多个计算任务,分配给Executor 执行。Task 以线程的方式运行在Executor 中。
9.Spark 和  Flink 和 Storm 的区别说一下?
10. Spark 如何让50台机器,每台运行一个task?


#秋招##大数据开发工程师#
全部评论
总结的太好了,感谢分享啊
点赞 回复 分享
发布于 2022-09-27 09:49 陕西
感觉这些问题挺基础的,昨天同程2面,问我 sparkcore中,debug有什么思路?   spark中 10000个用户怎么管理线程? 节点负载过高怎么进行配置?  我tm..... 直接坐牢半个小时
点赞 回复 分享
发布于 2022-09-27 12:52 重庆

相关推荐

one_t:硕还是本?什么岗
点赞 评论 收藏
分享
15 73 评论
分享
牛客网
牛客企业服务