我想了解MapReduce是否可能是我遇到的特定问题的好工具。我需要搜索数百个日志文件,以查找来自几个特定IP地址的特定命中,并记录时间,IP地址和URL路径。
我看到的与日志分析相关的MapReduce的所有示例似乎都在计算单个指标,例如每小时点击次数。它似乎是一个过于简化的示例,总是发出一个IntWritable为1.
在我的情况下,我并没有真正计算任何东西 - 它更像是一个过滤器。地图如何减少步骤以输出我正在搜索的特定地址的时间戳,IP地址和URL路径?
我也可能想要做一些分析来计算几个不同的指标,而不是单个“每小时点击次数”。为了计算几个不同的指标,通常是通过多个工作完成的,还是单个工作可以计算多个指标?
感谢您的建议!
答案 0 :(得分:0)
基本上你的问题是令人尴尬的并行。您只想并行对不同的输入数据执行相同的操作。
这正是地图的作用。它将您的输入划分为多个拆分,然后在每个拆分上执行相同的代码。完成。你不关心减少步骤。
您还可以使用Hadoop-streaming作为映射器执行二进制或shell脚本。您很可能已经拥有过滤数据的命令。你只需要并行化它。
现在Hadoop是适合您的工具吗?这取决于。 Hadoop是一个掌握,部署,管理的野兽,但它带来了可扩展性和安全性。容错是因为范式非常有限。您的用例也可以通过许多其他工具来解决,我相信这里的关键是:
我也可能想要做一些分析来计算几个不同的指标,而不是单个“每小时点击次数”。为了计算几个不同的指标,通常是通过多个工作完成的,还是单个工作可以计算多个指标?
有时它可以,但如果没有更多细节我就无法回答。尝试阅读一些关于地图/减少设计模式的材料。