大规模数据并行算法:分布式计算的精髓

由于经常面对海量数据编程,对大规模数据下的算法设计有一点心得,分享其中的一个点:并行思想。

1. 什么是并行计算

近年来流行大数据,神乎其神的,说白了就是数据量太多了,多到 GB,TB 的数据存储,单机根本没法存储,也没法处理。单机能搞定的数据与算法,我们姑且认为是小数据,搞不定的就是大数据。那么单机存储不了,自然而然的就想到了分散到多机存储与处理,当一件事情只需要靠叠加机器就能解决的时候,问题就解决了一半了,剩下的就是如何去协调多机的数据,以及处理算法了,这种多机器的操作,简单认为就是分布式的操作吧。

因此这里又衍生出了两个方向,一个是多机存储数据,一个是多机处理数据,这里只讲一下多机处理数据:分布式计算。

2. 分布式计算

分布式计算的一个特点除了因为数据本身是分散到不同机器上外,还有一个更重要的特点,那就是多机可以同时计算,这一特点也是分布式算法设计当中最需要关注的一个点。当然使用这一特点是需要条件的:那就是机器之间在处理数据阶段本身是互相独立的,这一点非常重要。

举个例子,有 10GB 的文本数据,分布在 10 台机器上,现在要统计文本里面不同单词出现的次数,该问题也是大数据的基本问题 worldcount。由于统计次数这个操作本身可以相互独立,因此解决的方法也很简单,先各个机器分别自己统计自己的那部分文本结果,待全部处理了,在将所有机器的结果进行合并得到整个结果。可以发现,各机器自己统计这一步是完全独立的,不依赖其他机器的数据,因此可以并行化计算,分布式计算之所以快的原因也就在于此;合并不同机器结果这一步就不算是分布式了,必须要等到各机器都就绪了才能进行。

  • 分享于 · 2020.05.09 08:21 · 阅读 · 272

[版权声明] :本文系网友分享,仅以非商业性的交流和科研为目的,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本网( friends@stuch.cn )联系!我们将协调给予处理。阅读原文(请登录)..

0 条评论

请先 登录 后评论
猜猜我是谁
孟云

10
提问
2
回答
5
文章
注册推广