*对分布式计算的定义:分布式计算是一种把需要进行大量计算的工程数据分割成小块,由多台计算机分别计算,在上传运算结果后,将结果统一合并得出数据结论的科学。即:把一个需要计算的大问题分解成若干个小问题,分给多台计算机分别处理,然后再合并运算结果。
目前常见的分布式计算项目都是一些很庞大,需要惊人的计算量,仅仅由单个的电脑或是个人在一个能让人接受的时间内计算完成是决不可能的。在我们的工作中,虽然没有遇见如此庞大的问题,但是需要运行很长时间(单台计算机运行半天一天的问题是到处可见的),我们也可以利用其思想来减少运算时间或者减轻某台服务器的压力。
场景:
某网站有若干台服务器,专门用来收集PV日志信息,每台服务器的PV日志每10分钟1个文本文件,每个文本文件的大小六七十兆。PV日志包含信息:
Host--域名,通常一个大型的网站都有若干个子域名,如www.****.com;forum.****.com;news.****.com等
PageUrl--访问地址
UID:访问者ID
SessionID:会话ID
UserAccount--用户帐号,如果是登录用户,则为用户帐户,非登录用户则为空
以及其他一些信息。。。
现需要统计每天的访问信息(PV数,登录用户数,独立用户数等信息。。。)
传统的做法:
先将所有服务器的日志转移到一台服务器上,将数据导入到PV表中,以天为单位,一天一个表(数据量单位是:亿,具体数字不详),然后对PV表进行各方面的运算,如:PV数,登录用户PV数。
由于数据量太大,这样做的问题,每天需要花很长时间才能运算出昨天的数据,每增加一个应用都会加大运算时间,及给服务器带来很大的压力。
改进:
利用分布式计算的思想,先在那些日志服务器上用LogParser进行一些运算,得出中间结果,然后再汇总,流程图如下:
需要注意的几个问题:
1.各服务器的服务运行是否成功的控制
2.数据同步的问题