18 | Spark:别忘了内存比磁盘快多少
徐文浩
你好,我是徐文浩。
过去几讲里,无论是 Hive 这样基于 MapReduce 的系统,还是 Dremel 这样抛开 MapReduce 的系统,其实都已经反映了 MapReduce 这个大数据处理的计算模型,在 2010 年这个时间节点已经有一些“落后”了。来自 Facebook 的 Hive 选择了在 MapReduce 上优化改良,仍然基于 MapReduce 的模型。而 Google 自家的 Dremel 则是另起炉灶,用一个新的底层架构来支持 OLAP 的数据分析。
不过,在工业界之外,学术界一样不会在整个大数据飞速发展的时代里缺席。2010 年,来自 Berkeley 的博士生Matei Zaharia发表了一篇论文《Resilient Distributed Datasets: A Fault-Tolerant Abstraction for In-Memory Cluster Computing》。伴随着这篇论文的,是一个开源系统,也就是 Spark。在之后的几年里,Spark 不仅逐步侵蚀了 Hadoop 的市场份额,成为大数据分析的第一选择,也在实时数据处理,以及大规模机器学习里占据了重要的地位。
Spark 的计算模型,其实可以看作一个是支持多轮迭代的 MapReduce 模型。不过它在实现层面,又和稍显笨拙的 MapReduce 完全不同。通过引入 RDD 这样一个函数式对象的数据集的概念,Spark 在多轮的数据迭代里,不需要像 MapReduce 一样反反复复地读写硬盘,大大提升了处理数据的性能。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
Spark通过引入RDD的概念,充分利用内存来优化大规模数据处理,避免了频繁读写硬盘的性能瓶颈。相比MapReduce的简单设计,Spark的系统设计并不复杂,却在大数据分析和机器学习领域取得了巨大成功。文章指出,Spark通过利用内存来避免数据重复读取的问题,提升了数据处理性能和效率。RDD的设计充分体现了“弹性”+“分布式”+“数据集”的特点,实现了惰性求值和类似数据库视图的功能。通过具体示例,文章展示了Spark在分布式逻辑回归等任务中的应用,以及RDD的优势所在。整体而言,Spark通过简洁而精妙的设计,充分利用内存的优势,提升了大数据处理的性能和效率。 Spark的RDD设计思想并不复杂,源自函数式编程,记录了输入数据和对应的计算输入数据的函数,解决了容错问题。RDD的弹性体现在数据存储上,支持内存缓存和多种持久化方式,以及选择性地将数据输出到硬盘上。此外,Spark通过优化宽依赖关系和检查点,实现了对数据计算的中间结果的持久化存储,平衡了性能和容错需求。相较于MapReduce,Spark在多轮迭代算法中的性能提升明显,成为大数据分析和机器学习领域的主流工具。 在思考题中,文章提到了自定义RDD分区对存储优化的作用,例如对两个需要Join操作的数据集进行相同的哈希分区。这种做法有助于提高数据处理效率,减少数据传输和计算成本,从而优化存储和应用层面的性能。 总的来说,Spark通过其灵活的RDD设计和内存优化,以及对宽依赖关系和检查点的优化,实现了在大数据处理中性能和容错的平衡,成为了大数据分析和机器学习领域的主流工具。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《大数据经典论文解读》,新⼈⾸单¥59
《大数据经典论文解读》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(8)
- 最新
- 精选
- Lebron我对思考题的回答是两个输入数据源进行Join两边的数据采用相同的分区方式相比于不同的分区方式,可将宽依赖转为窄依赖。2021-12-2611
- 纳兰残德按照这个描述感觉和tez比 差异不大2021-11-182
- CRT相同的哈希分区可以变宽依赖为窄依赖,具体应用为分桶表2021-11-171
- 何进财回答思考题,相同的哈希分区可以避免大量的数据经过网络传输。2021-11-101
- Eternal还是要拥抱开源,封闭后脑子太死板了2023-03-23归属地:重庆
- Geek_f1c6e5回答文章末尾问题,优化的是shuffle磁盘读写和文件数量。作者论文也和MPP架构计算引擎做了对比,spark确实会慢,但优势血缘和cp,所以要稳定,这也造就了使用场景的区别,究竟业内如何区别使用?我也卖个关子2022-09-06归属地:上海
- 火云邪神霸绝天下这哥们怎么想出来的?因为和工业界联系多?2022-04-22
- 核桃spark的内容其实并没有那么简单,现在使用的spark优化了很多东西,包括RDD的算子方面,这里提供了很多灵活的高度算法,同时还有spark stream和spark mllib的出现,spark算是同时具备流式和批处理两者的结合,这几年很火的flink也大有说取代spark的趋势~2022-02-222
收起评论