当前位置:  开发笔记 > 编程语言 > 正文

MapReduce如何成为分析http服务器日志的好方法?

如何解决《MapReduce如何成为分析http服务器日志的好方法?》经验,为你挑选了1个好方法。

我一直在研究MapReduce,它似乎是实现容错分布式计算的一种非常好的方法.我阅读了很多关于该主题的论文和文章,在一系列虚拟机上安装了Hadoop,并做了一些非常有趣的测试.我真的认为我理解Map和Reduce步骤.

但这是我的问题:我无法弄清楚它如何帮助http服务器日志分析.

我的理解是大公司(例如Facebook)使用MapReduce来计算他们的http日志,以便加快从中提取受众统计数据的过程.我工作的公司,虽然比Facebook小,但每天都有大量的网络日志需要计算(100Go每月增长5%到10%).现在我们在一台服务器上处理这些日志,它运行得很好.但是,作为一种即将有用的优化,可以立即想到分发计算工作.

以下是我现在无法回答的问题,非常感谢任何帮助:

MapReduce概念能否真正应用于网络日志分析?

MapReduce是最聪明的做法吗?

您将如何在各种计算实例之间拆分Web日志文件?

谢谢.
萨科



1> Osama Al-Maa..:

MapReduce概念能否真正应用于网络日志分析?

是.

您可以将您的hudge日志文件拆分为10,000或1,000,000行的块(对于您的日志文件类型而言,无论什么都是很好的块 - 对于apache日志文件我需要更大的数量),将它们提供给一些可以提取特定内容的映射器(比如每个日志行中的浏览器,IP地址,...,用户名,...),然后通过计算每个日志出现的次数(简化)来减少:

  192.168.1.1,FireFox x.x,username1
  192.168.1.1,FireFox x.x,username1
  192.168.1.2,FireFox y.y,username1
  192.168.1.7,IE 7.0,username1

您可以使用map操作提取浏览器,忽略版本以获取此列表:

FireFox
FireFox
FireFox
IE

然后减少得到这个:FireFox,3 IE,1

MapReduce是最聪明的做法吗?

它很聪明,但你需要非常大才能获得任何好处......分割原木的PETABYTES.

要做这种事情,我宁愿使用消息队列和一致的存储引擎(如数据库),处理客户端从队列中拉出工作,执行作业,并将结果推送到另一个队列,而不是在某个时间框架内执行,可供其他人处理.这些客户端将是执行特定操作的小程序.

您可以从1个客户端开始,然后扩展到1000 ...您甚至可以在LAN上的所有PC上运行作为屏幕保护程序的客户端,并在8核服务器上运行8个客户端,在双核PC上运行2个客户端...

使用Pull:您可以有100个或10个客户端正在运行,多核计算机可以运行多个客户端,无论客户端完成什么,都可以用于下一步.而且您不需要为要完成的工作进行任何散列或分配.这是100%动态.

http://img355.imageshack.us/img355/7355/mqlogs.png

您将如何在各种计算实例之间拆分Web日志文件?

按元素或行数,如果它是基于文本的日志文件.

为了测试MapReduce,我想建议您使用Hadoop.

推荐阅读
黄晓敏3023
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有