gpt4 book ai didi

hadoop - 使用 Hadoop MapReduce 按月份和 IP 对日志条目进行分组

转载 作者:可可西里 更新时间:2023-11-01 14:54:52 25 4
gpt4 key购买 nike

我是 Apache Hadoop 的新手。但我想学习如何使用它来汇总我的机器日志。实际上它不够大 (GB),我可以解析它并等待几个小时。但我认为学习 Hadoop 可能会有用。

所以,我有一个格式如下的日志条目。

Location, Date, IP Address

例如

New York, 2011-11-31 10:50:59, 1.1.1.1
New York, 2011-11-31 10:51:01, 1.1.1.2
Chicago, 2011-11-31 10:52:02, 1.1.1.1
Los Angeles, 2011-11-31 10:53:04, 1.1.1.4

我想按位置聚合它,按月分组,然后按 IP 地址。下面是我心目中的样子。

  Location, Month, IP,   Count
+ New York
| +-- November 2011
| | +---- 1.1.1.1 5
| | +---- 1.1.1.2 2
| | +---- 1.1.1.3 7
| +-- December 2011
| | +---- 1.1.1.1 6
| | +---- 1.1.1.4 6
| +-- January 2012
| +---- 1.1.1.1 10
+ Chicago
| +-- November 2011
| | +---- 1.1.1.1 20
| | +---- 1.1.1.2 1
| | +---- 1.1.1.3 10
(so on)

我的问题是:

  1. 我可以使用 Hadoop 执行此操作还是有更好的方法来执行此操作?
  2. 使用 Hadoop 执行此操作的常用方法是什么?

感谢您提供指向链接或文章或示例代码的指针。

最佳答案

can I do this using Hadoop or is there a better way to do it?

您绝对可以为此使用 Hadoop,如果您只有几 Gb,则可能没有那么必要,但是使用 Hadoop 执行此操作的好处是您将能够轻松扩展,假设明天您必须在 500Gb 上执行相同的操作,您可能无需更改代码,只需更改硬件和配置。

what is the common way to do this using Hadoop?

我认为没有所谓的“通用方式”,Hadoop 是一个封装多个项目的框架,您可以在 Map/Reduce、Hive、Pig 等中做到这一点

我认为您的用例非常适合使用 Hive 来执行此操作,因为您想要进行聚合并具有可以轻松将其放入表中的结构,如果您是 Hadoop 的新手,您可以熟悉 SQL,所以这里有一些提示。

  1. 将这些日志上传到 HDFS。这是第一步,无论您希望如何进行处理,HDFS 是一个分布式文件系统,因此您的日志将在整个集群中分成 block 并进行复制。

    hadoop fs -put /path/to/your/log/directory /user/hive/warehouse/logs
  2. 在 Hive 中创建一个表。您必须将其设置在您将日志放入 HDFS 的位置外部(并指定文件中的分隔符):

    hive -e "create external table logs(location string, day string, ip string) row format delimited fields terminated by ',' location /user/hive/warehouse/logs"
  3. 现在您可以对您的数据进行一些查询了!在您的示例中,您应该执行以下操作:

    hive -e "select location, month(day), ip, count(*) from logs group by location, month(day), ip order by location, month, ip"

    请注意,我在当天调用 MONTH() 来为聚合增加当天的月部分,这就是 Hive 调用的 UDF

即使您正在编写 SQL 查询,这也会在后台生成将在您的集群上运行的 Map/Reduce 作业,因此您的作业将根据集群的大小进行扩展。

我希望这是有道理的,如果您想了解有关 Hive 的更多详细信息,我想将您重定向到 the Hive DDL description以及the official project page .

关于hadoop - 使用 Hadoop MapReduce 按月份和 IP 对日志条目进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14329900/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com