1.1.2 分布式计算

更新于 2026年10月10日 版权声明
1.1.2 分布式计算

将数据分布式地存储在多台服务器上后,如何分布式地在这些由多台服务器组成的文件系统上进行数据并行计算分析呢?

首先,什么是分布式计算?简单理解就是将大量的数据分割成多个小块,由多台计算机分工计算后对结果进行汇总。这些执行分布式计算的计算机就叫集群。

为什么需要分布式计算?因为“大数据”来了,单个计算机不够用了,即数据量远远超出单个计算机的处理能力范围。有时候是单位时间内的数据量大,比如在12306网上买票,每秒可能有数以万计的访问;也有可能是数据总量大,比如百度搜索引擎,要在服务器上检索数亿的中文网页信息。

实现分布式计算的方案有很多,在大数据技术出现之前就已经有科研人员在研究,但一直没被广泛应用,直到2004年Google公布了MapReduce之后才大热了起来。MapReduce是分布式计算在大数据领域的应用。

下面从一个新闻门户网站数据分析来看看分布式计算思想。

假设一个新闻门户网站,每天可能有上千万用户涌入进来看新闻,那么他们会怎样看新闻呢?其实很简单,首先他们会点击一些板块,比如“体育板块”和“娱乐板块”。然后,点击一些新闻标题,比如“20年来最刺激的一场比赛即将拉开帷幕”,接着还可能会发表一些评论,或者点击对某个好的新闻进行收藏。也就是说,在网站或者App上,用户一定会进行各种操作,这些操作行为统称为“用户行为”。

现在,该新闻门户网站的boss想要增加一个功能,就是在网站里每天做一个排行榜,统计出每天每个板块被点击的次数,并在网站系统的后台里产生一些报表来汇总不同编辑撰写的文章的点击量,做一个编辑的绩效排名。

这些工作就是基于用户行为数据来进行分析和统计,从而产出各种各样的数据统计分析报表和结果,供网站的用户、管理人员查看和使用,这就叫“用户行为分析”。

要分析用户行为,需要收集这些用户行为的数据。比如说有个用户点了一下“体育”板块,这时,在网页前端或者是App上立马发送一条日志到后台,清楚记录“id为117的用户点击了一下id为003的板块”,这些记录称为“用户行为日志”。

我们来计算一下,这些用户行为如果采用日志的方式收集,每天大概会产生多少条数据?

假设每天1 000万人访问这个新闻网站,平均每人做出30个点击、评论以及收藏等行为,那么就是3亿条用户行为日志。

假设每条用户行为日志的大小是100个字节,因为可能包含了很多的字段,比如他是在网页上点击的,还是在手机App上点击的,手机App用的是什么操作系统,Android还是iOS。类似的字段有很多,每天大概就会产生28 GB的数据,一共包含约3亿条。(https://www.daowen.com)

对这3亿条数据,假设我们编写一个Java程序,从一个超大的28 GB的大日志文件里一条一条读取日志来统计分析和计算,一直到把这3亿条数据都计算完,你觉得会花费多少时间?也许需要花费几十个小时。显然,这样长的计算分析时间用户是无法接受的。

一种有效解决方案就是:分布式存储+分布式计算。

首先,如图1⁃2所示,采用分布式存储的方式,把3亿条数据分散存放到比如30台机器上,每台机器大概就放1 000万条数据,大概就1 GB的数据量。

图示

图1⁃2 数据分布式存储

接着,把统计分析数据的计算任务拆分成30个计算任务,每个计算任务都分发到一台机器上去运行,如图1⁃3所示。也就是说,每台机器就专门针对本地的1 GB数据(1 000万条数据)进行分析和计算。用户就可以依托30台机器的资源,并行地进行数据统计和分析,这也就是所谓的分布式计算了。

图示

图1⁃3 数据分布式计算

分布式计算一般是针对大数据集的计算分析,首先需要将超大数据集拆分成很多数据块,分散在多台机器上进行分布式存储,然后把计算任务分发到各个机器上去,利用多台机器的CPU、内存等计算资源进行计算。

正是基于超大数据集分布式计算可以提升几十倍甚至几百倍的效率,分布式计算技术也成为大数据技术的一项核心技术。

↑上一章 ↓下一章
关注公众号获取验证码
复制内容需要验证码(7.99元/天)