大数据技术思想入门 (五):分布式计算特点

如果你不喜欢阅读文字的话,可以选择滑到最后看 视频讲解 哟~~~

前面我们花了四篇文章详细的探讨了分布式存储,有了分布式存储的概念后,我们就可以基于分布式存储的数据来进行分布式计算了,这篇文章我们来探讨分布式计算的原理。

单机版本的计算

我们可能非常的熟悉在一台机器上的计算,比如,在一台台机器上存储着一个包含有数据的文件,我们现在需要计算这个文件有多少行记录,这个就是一个很简单的计算,这个计算有输入、计算和输出。

输入就是文件,输出就是这个文件的记录数,计算的过程是:

  1. 先打开文件

  2. 初始化一个存储结果的变量 count

  3. 读入文件内容,每读到一行非空的记录,那么 count 就自加 1

  4. 一直到读到文件的结尾,结束

  5. 返回结果 count 即可

以上,我们完成了一个很简单的单机版本的计算。

如果一个文件的大小非常的大,已经超过了一台机器的存储容量,这个时候就需要将文件对应的数据进行分块,然后分布式的存储在多台机器上了。那么这个时候怎么对这个文件进行计算呢?

分布式文件的计算

比如,现在有一个 5PB 大小的文件 /douma/data/text.txt,那么,我们怎么去计算这个文件总共有多少行记录呢?

这个时候的文件被划分成了很多的数据块,我们要计算这个文件有多少行记录,实际上只需要将每一个数据块的行数计算出来,然后将所有的数据块的行数进行累加得到的总行数就是这个文件的总行数了。

那现在的问题就变成了怎么计算每一个数据块的行数了。这个有两种方案可以选择。

数据移向计算

方案一就是将文件对应的所有数据块一块一块的通过网络传输传输到一台专门的服务器上,然后计算每一块数据块的行数,最后将所有数据块的行数累加起来得到整个文件的行数。这个方案有个很大的缺点,那就是太慢了,通过网络传输将数据块移动到另一台服务器上是一个很慢的动作,更何况要移动的数据块的数量非常的大,所以,这个方案肯定是不可取的。

方案一的特点是数据向计算方移动,也就是说计算是固定在一台服务器上的,所有的数据块都移动到计算所在的服务器,这种方案慢的原因就是因为数据量太大,需要通过网络传输移动的数据太多了。

计算移向数据

那如果我们转变下思路,即将计算移动到数据所在的服务器会发生什么呢?

首先,我们需要明确的是计算本质上就是一段代码,一段代码的数据量是很小的,所以网络传输移动一段代码是非常的快的。那也就是说,这个时候,数据块不要动了,我们只需要将计算对应的代码发送到所有数据块所在的服务器上,然后执行这段代码,代码的输入是每个数据块,输出是对应数据块的行数。

每个数据块都对应着一个计算任务,每个计算任务的输出也就是一个整数,也是非常小的数据,最后将所有的计算任务的输出结果再一次发送给发起计算的服务器进行累加,这样就得到了整个文件的行数。

通过计算向数据所在服务器方向移动的方式来进行分布式计算,避免了大量数据的网络传输,可以大幅度的提高计算性能,同时,通过这种方式可以使得不同数据块的计算任务可以并行的执行,从而再次能提高计算性能,降低计算需要的时间。

总结,分布式计算最大的特点就是:移动计算而非移动数据,计算向数据移动,而非数据向计算移动。

大数据技术思想入门(五):分布式计算的特点/Java/Hadoop

 

系统学习大数据技术:大数据高级工程师

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值