28 | MapReduce:如何通过集群实现离线计算?
陶辉
该思维导图由 AI 生成,仅供参考
你好,我是陶辉。
接下来的 2 节课我将介绍如何通过分布式集群优化计算任务。这一讲我们首先来看对于有边界静态数据的离线计算,下一讲再来看对无边界数据流的实时计算。
对大量数据做计算时,我们通常会采用分而治之的策略提升计算速度。比如单机上基于递归、分治思想实现的快速排序、堆排序,时间复杂度只有 O(N*logN),这比在原始数据集上工作的插入排序、冒泡排序要快得多(O(N2))。然而,当单机磁盘容量无法存放全部数据,或者受限于 CPU 频率、核心数量,单机的计算时间远大于可接受范围时,我们就需要在分布式集群上使用分治策略。
比如,大规模集群每天产生的日志量是以 TB 为单位计算的,这种日志分析任务单台服务器的处理能力是远远不够的。我们需要将计算任务分解成单机可以完成的小任务,由分布式集群并行处理后,再从中间结果中归并得到最终的运算结果。这一过程由 Google 抽象为MapReduce 模式,实现在 Hadoop 等分布式系统中。
虽然 MapReduce 已经有十多个年头的历史了,但它仍是分布式计算的基石,这种编程思想在新出现的各种技术中都有广泛的应用。比如当在单机上使用 TensorFlow 完成一轮深度学习的时间过久,或者单颗 GPU 显存无法存放完整的神经网络模型时,就可以通过 Map 思想把数据或者模型分解给多个 TensorFlow 实例,并行计算后再根据 Reduce 思想合并得到最终结果。再比如知识图谱也是通过 MapReduce 思想并行完成图计算任务的。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
MapReduce是一种用于在分布式集群中进行离线计算的编程模型,通过分而治之的策略提升计算速度。文章介绍了MapReduce的基本原理和应用。首先,分析了在分布式系统中如何使用分治策略进行批量计算,以及MapReduce模式在大规模数据排序等任务中的应用。其次,讨论了SQL语言如何简化MapReduce模式,通过聚合、连接和统计函数实现数据分析。最后,指出MapReduce适用于静态数据,而对于实时、不断增长的无边界数据流则无能为力。总的来说,MapReduce模式在分布式计算中具有重要意义,尤其适用于静态数据的离线处理。 MapReduce模式在分布式计算中具有重要意义,尤其适用于静态数据的离线处理。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《系统性能调优必知必会》,新⼈⾸单¥59
《系统性能调优必知必会》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(2)
- 最新
- 精选
- J.Smile能够使用mapreduce思想处理的任务是可以分解且子任务之间没有依赖关系,最后可以做合并的类型。
作者回复: 是的
2020-07-237 - Run多看看算法,数据结构是没错的
作者回复: 是的,单机算法与分布式算法有许多共性基础,多了解下,可以让知识体系更健壮
2020-07-311
收起评论