大数据开发高频面试题:Spark与MapReduce解析

一、Spark vs MapReduce

1.数据处理方式:Spark基于内存处理数据,可以将计算的中间结果保存到内存中反复利用,提高了处理效率。相比之下,MapReduce基于磁盘处理数据,将中间结果保存到磁盘中,这减轻了内存的压力,但 sacrificed the computational performance.2.计算模型:Spark构建了有向无环图(DAG),可以减少数据shuffle和落地磁盘的次数。其DAG计算模型是Spark快于MapReduce的主因。如果计算过程中涉及数据交换,Spark也会把shuffle的数据写入磁盘。3.资源申请方式:Spark采用粗粒度资源申请,在提交作业时就会申请完所有需要的资源。而MapReduce相比之下是细粒度资源申请,每个Task任务需要自己申请资源,自身运行程序,然后自己释放资源。4.执行单元:Spark的任务执行单元是线程,创建销毁的开销较小;而MapReduce的Task执行单元是进程,相应的开销较大。

二、Spark:优劣势

优势

1.高效迭代:Spark可以将中间数据缓存到内存中,使得反复迭代的运算效率较高。2.高容错性:Spark通过RDD(Resilient DistributedDataset)实现了高度的容错性,可以通过“血统”(即源自数据衍生过程)对丢失的数据部分进行重建。3.通用性强:Spark提供了丰富的数据集操作类型,包括样本、分组、联合、连接等多种操作类型,极大增强了其处理复杂业务场景的能力。

劣势

1.内存问题:由于Spark需要将大量数据缓存在内存中,因此其对内存资源的消耗较大,如果内存资源有限,可能会影响其运行效率。2.性能问题:Spark因为需要管理大量的内存与线程,同时还需要处理JVM的垃 示回收,有时可能出现性能不稳定的问题。

三、MapReduce:优劣势

优势

1.编程易用性:MapReduce的设计初衷就是使得编程人员可以容易地编写出分布式计算程序,并能够在大量的廉价设备上运行。2.扩展性强:MapReduce可以通过直接增加更多的机器来水平扩展其计算能力。3.高容错性:MapReduce采用了故障转移机制,当一台机器出现故障时,其上的任务可以被转移到其他节点上执行,确保了任务的持续运行。4.大数据处理能力强:MapReduce可以处理PB级别以上的海量数据,适合大规模与复杂的离线数据处理任务。

劣势

1.实时计算能力弱:由于MapReduce的计算模型限制,它不擅长毫秒级或者秒级的实时计算任务。2.不支持流式计算:MapReduce的输入数据集必须是静态的,无法处理动态变化的流式数据。3.不支持DAG计算:在处理有依赖关系的多个应用程序时,MapReduce需要将每个作业的输出结果都写入磁盘,这会造成大量的磁盘IO,降低处理效率。

#晒一晒我的offer##视觉/交互/设计百问百答##华为开奖那些事##视觉/交互/设计工作体验##24秋招避雷总结#

解决职场真实面试问题,分享同学真实成功案例,欢迎订阅关注!

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 10:46
点赞 评论 收藏
分享
点赞 评论 收藏
分享
有工作后先养猫:太好了,是超时空战警,我们有救了😋
点赞 评论 收藏
分享
点赞 9 评论
分享
牛客网
牛客企业服务