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

Distributed MapReduce如何成为分析http服务器日志的好方法?,distributed,mapreduce,logfile-analysis,Distributed,Mapreduce,Logfile Analysis,我已经研究MapReduce一段时间了,它似乎是实现容错分布式计算的一种非常好的方法。我读了很多关于这个主题的论文和文章,在一系列虚拟机上安装了Hadoop,并做了一些非常有趣的测试。我真的认为我理解地图并减少步骤 但我的问题是:我不知道它如何帮助http服务器日志分析 我的理解是,大公司(比如Facebook)使用MapReduce计算他们的http日志,以加快从这些日志中提取观众统计数据的过程。我工作的公司虽然比Facebook小,但每天都有大量的网络日志需要计算(100Go每月增长5%到1

我已经研究MapReduce一段时间了,它似乎是实现容错分布式计算的一种非常好的方法。我读了很多关于这个主题的论文和文章,在一系列虚拟机上安装了Hadoop,并做了一些非常有趣的测试。我真的认为我理解地图并减少步骤

但我的问题是:我不知道它如何帮助http服务器日志分析

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

以下是我目前无法回答的问题,如有任何帮助,将不胜感激:

  • MapReduce的概念真的可以应用于网络日志分析吗?
  • MapReduce是最聪明的方法吗?
  • 如何在不同的计算实例之间分割web日志文件
谢谢。
尼古拉斯
  • MapReduce的概念真的可以应用于Weblog分析吗
  • 当然。您存储的是什么类型的数据

    • MapReduce是最聪明的方法吗
    它允许您一次跨多台商品机器进行查询,因此是的,它非常有用。或者,你可以试试

    • 如何在不同的计算实例之间分割web日志文件

    通常情况下,您会使用一个数据库分发数据,以便以后可以轻松地添加更多实例。您应该在普通数据库中按主键进行散列。它可以是用户id、ip地址、引用者、页面、广告;无论您的日志主题是什么。

    MapReduce概念真的可以应用于Weblog分析吗?

    您可以将hudge日志文件拆分为10000或1000000行的块(对于您的日志文件类型来说,任何一个块都是好的-对于apache日志文件,我会选择一个更大的数字),将它们提供给一些映射器,这些映射器将从每个日志行提取特定的内容(如浏览器、IP地址、用户名等),然后通过计算每次出现的次数来减少(简化):

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

    FireFox
    FireFox
    FireFox
    IE
    
    然后减少以获得以下结果: FireFox,3 即,1

    MapReduce是最聪明的方法吗?

    这是聪明的,但你需要非常大,以获得任何好处。。。正在拆分数PB的日志

    为了完成这类工作,我更愿意使用消息队列和一致性存储引擎(如数据库),处理客户机从队列中提取工作,执行作业,并将结果推送到另一个队列,在某些时间段内未执行的作业可供其他人处理。这些客户机将是执行特定操作的小型程序

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

    使用Pull:您可以有100或10个客户机工作,多核机器可以有多个客户机运行,客户机完成的任何操作都可以用于下一步。你不需要做任何散列或赋值就可以完成工作。它是100%动态的

    如何在不同的计算实例之间分割web日志文件?

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


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

    首先,很抱歉延迟。非常感谢您高质量的回答。这很有帮助!作为拆分日志文件的替代方法,您可以跨n个内核并行化“日志分析”脚本。如果您要在虚拟化集群(比如96核)上运行此脚本,那么您的代码将在不做任何更改的情况下完美地运行。您需要确定并隔离“最小”的工作单元,这些工作单元没有副作用,并且处理不变的数据。这可能需要您重新设计代码。此外,Hadoop相对来说更难安装(在我居住的地方,更难找到专业知识)。下面是一致性哈希的一个很好的解释:
    FireFox
    FireFox
    FireFox
    IE