大数据科普系列(二) 如何处理大数据?
2019-10-30阅读 1549

前面我们已经知道了什么是大数据,那么,如何处理大数据呢?

我们有两种选择,一是向上扩张,即提升单台电脑的硬件水平,比如内存不够我们加内存条,存储不够我们加硬盘,计算速度不行,我们换更高频的CPU,但这治标不治本,总有一个上限,而且成本过于昂贵。还有一种方式就是向外扩张,即一台电脑不够,我们用两台,还不够就继续加。“实力不够,人头来凑!”处理大数据就是采用的第二种方式,即分布式集群。

什么是分布式集群呢?说白了就是利用N台电脑的力量(存储和计算资源),大家一起协作共同完成某个任务。这N台电脑就组成了一个分布式集群。

我们先来看看分布式存储的原理:

假设有一个很大的文件,大到1台电脑的硬盘装不下,比如硬盘是1T ,而这个文件大小是2T,那么我们可以把它切分成3小块或更多,每小块分别储存在1台电脑上:

2-1.png

这样,我们要读取原来的文件内容时,只需要把3台电脑上的3个文件块按红黄绿的顺序组合起来,就能得到原文件内容。这样貌似解决了存储的问题。但是假如某个时刻,其中一台电脑死机了(比如图中电脑2),那么我们就无法得到红黄绿3个块了,原文件部分数据就丢失了,这就导致了数据的不安全。

2-2.png

    那么,分布式系统是如何解决上述问题的呢?答案就是做冗余备份:将每个数据块复制备份,然后将同一个块的不同备份分别存储在不同的电脑上,这样当某台电脑死机了,它上面所储存的数据块能在别的电脑上找到相同的备份,也能完整的还原的原始数据。

2-3.png


当然,要想将文件还原,我们还得知道这个文件被分成了哪些块、这些块的先后顺序及这些数据块分别存放在哪些电脑上。分布式集群是一个主从架构,记录上述元数据信息的电脑叫做主节点(master),而真正存储数据块的电脑叫做从节点(slave)。我们对分布式系统的读写都是通过主节点来协调完成的。

2-4.png

    一句总结分布式存储原理:分散存储冗余备份

    接下来,我们再来看看分布式计算的原理:

    考虑这样一个需求,假如有1000个整数,要找出其中最大的那个数,常规方式就是遍历这1000个数的数组,没问题!假设现在有1000亿个整数,要找出其中最大的那个数,那我们还是来遍历这1000亿个数的数组? 1000亿个整数占用内存大概是400GB,要遍历数组,首先得有这么大的内存!其次,考虑时间复杂度为O(n),就算有那么大的内存,遍历完这1000亿个数用的时间也会长的让你怀疑人生!

所以,我们换一种思路,假如我们把这1000亿个数均分成1000份,那么每份大概就是400MB,然后我们同时分别求出这1000份中的最大值,这是可行的。最后,我们只需要在找到这1000个数中的最大值,就找到了这1000亿个数中的最大值!


2-5.png

    一句话总结分布式计算原理:大而化小,分而治之并行处理汇总结果

    其实,古人早就用到了大数据的计算思路:有图有真相!!!

2-6.jpg