看到这里,恭喜你,结束了分布式存储模块的内容,愿此刻你已经把前面的章节都看透了,但是即便如此也还是不要松懈,接下来还有一个大模块的内容。因为大数据的技术基本都是计算与存储分离,各司其职,所以我们需要继续来看分布式计算模块的内容,让我们大数据面试的知识点更加完善。
第一篇写的是分布式计算界的中流砥柱,Spark。Spark 在实现上和 MapReduce 计算框架类似,但是它在内存的使用上更“贪婪”,也减少了数据磁盘持久化的频率,这使它成为了一个高效的大数据处理引擎。Spark 能解决大数据领域很多的问题,万金油一样的存在,离线处理、实时流处理、机器学习、交互式查询等等,所以 Spark 相关的内容在大数据面试中也占据了很大的比例,本专栏也会用比较多的篇幅来详细梳理 Spark 的内容,覆盖到尽可能多面试题。
本篇面试内容划重点:shuffle,checkpoint,RDD
Spark 的重要概念
为了便于理解,讲概念之前我们结合下图一个最简单的 wordcount 的实例来说说 Spark 的数据处理流程。首先 Spark 从 HDFS 读 log.txt 文件,log.txt 存储在 HDFS 中被分成了三个块,Spark 会起了三个 Task 去读每个 Block 的数据,读到数据后 Spark 会按照算子的逻辑在 Task 内对每一条数据做相关操作(如图的 flatMap 和 map),如果遇到 shuffle 类算子(如图的 reduceByKey),会把数据打散,然后相同 key 的数据汇聚到同一个节点做聚合,另外下游 Stage 的计算会在上游 Stage 所有 Task 都完成之后。