分布式策略:一起干活力量大

顾名思义,大数据就是面向大规模数据进行计算处理的应用技术,大数据技术的概念在过去十几年间的热度几乎没有下降。而最近,随着“公有云”“数据中台”等新潮词汇的大力宣传推广,大数据几乎成了大中型企业进行数字化转型的技术标配。

那么,大数据技术,是如何实现高效率的呢?这里面的基本原理又是什么?

计算机在分析处理数据的时候,由于硬件设备的中央处理器(CPU)和内存的容量是非常有限的,所以数据通常是一点一点地进行计算的。毕竟,饭要一口一口地吃才行。而当数据量大了,饭也就吃不完了!高配计算机可以一口气多吃点,而普通计算机本来就“笨”,再随着设备老化,“吃饭”的速度就会越来越慢。

于是,我们可以非常直接地想到使用高品质计算机来解决大数据计算的问题。然而在面对互联网场景下产生的如此惊人数量的数据时,这种高品质计算机需要达到超级计算机的性能才行。这里所说的超级计算机其实就是算力超级强大的单体计算机主机,比如我国非常有名的“神威·太湖之光”和“天河二号”。那么问题来了,数字化这件事每个企业都得面对,各位老板们也要买超级计算机吗?

一台“天河二号”的造价是25亿元,每天光耗电费用就超过60万元。所以,看着研究成果还可以,但可能大部分企业真付不起这个钱!

那怎么办呢?既然买一台这么高精尖的计算机来处理大数据是不现实的,倒不如找多台普通的计算机一起干活比较靠谱。一个人胃口小一些没关系,大家一人一口总能吃完!多台普通计算机的成本肯定会比单台高性能计算机的成本低很多,这种技术策略使得处理海量数据成为一般企业“消费得起”的技术项目。

多台普通计算机代替一台“超级计算机”的方案,技术圈也有个比较专业的名字,叫作“分布式架构”。这些计算机在一起工作的时候,需要互相连成网络,实现信息的即时通信,从而达到工作任务的配合。看到了吧,互联网技术再次发挥了作用,只要有网络,就有了连接,就有了提供信息的渠道。

一个重要的事实再次印证了,无论是人还是机器,只要被连接在一起,就会产生更多的创意并提高效率!

“分布式架构”在现实场景中,具体是怎么解决大数据的“疑难杂症”的呢?

例如,分析某个区域一天之内发生的1亿笔在线支付交易记录,并使用某个计算机算法来自动找到其中所有的可能诈骗交易。在使用单台普通计算机计算的时候,处理这么多数据需要花费1个月,要是用超级计算机来计算,那么只要2分钟就可以。但是超级计算机我买不起,我只有普通计算机,也不想等太久,毕竟领导催得紧,我该怎么办?有同事出了个主意,找300多台计算机一起工作,每台计算机处理30多万条数据,只需要等2小时就好了。

用这种方法,每台计算机在自己的那份数据中把诈骗交易找到,然后汇总到某台计算机上,最后把结果一起输出,任务就完成了!

随着个人PC成本的逐渐降低,Google公司的工程师率先提出了上面这个“分布式架构”的具体实现方法,并提出了其中两个特别重要的技术架构:GFS(分布式的数据存储架构)和MapReduce(分布式的数据计算架构)。其中,GFS解决了大规模数据的存储问题,而MapReduce解决了大规模数据的计算问题。

关于“分布式”理念的提出和技术实现这里还有一个小插曲:Google在提出“分布式”技术时只公开了理论上的方法,这个方法后来被一个名为Doug Cutting的软件工程师“苦哈哈”地用了2年业余时间把代码实现了,并非常“善良地”公开给所有的程序员免费使用,这些“免费”的代码也就是非常知名的Hadoop项目。Doug Cutting成全了自己的“情怀”,坑了Google,因为盈利点没了!

Hadoop项目提供了大量可以简单调用的应用程序接口,程序员们在设计并实现软件应用的时候,如果需要使用多台计算机的大数据存储能力或大数据计算能力,就不用自己再重复“造轮子”实现这些基础功能了。Hadoop让“高大上”的大数据技术走下“神坛”,走进各个软件公司的工作室。大数据因此变成了一种“即插即用”的亲民技术。