【问题标题】:Processing logs in Amazon EMR with or without using Hive使用或不使用 Hive 在 Amazon EMR 中处理日志
【发布时间】:2012-12-21 04:43:34
【问题描述】:

我的 EMR 集群中有很多日志文件,路径为“hdfs:///logs”。每个日志条目是多行,但有一个开始和结束标记来区分两个条目。 现在,

  1. 并非日志文件中的所有条目都有用
  2. 有用的条目需要转换,输出需要存储在输出文件中,以便我以后可以有效地查询(使用 Hive)输出日志。

我有一个 python 脚本,它可以简单地获取一个日志文件并执行 a 部分。和 b。上面提到过,但我没有写任何映射器或减速器。

Hive 处理 Mappers 和 Reducers 的查询。请告诉我是否以及如何使用 python 脚本在所有日志上运行它并将输出保存在 'hdfs:///outputlogs' 中?

我是 Map Reduce 的新手,看过一些字数统计示例,但它们都有一个输入文件。在哪里可以找到具有多个输入文件的示例?

【问题讨论】:

    标签: hadoop hive hadoop-streaming emr


    【解决方案1】:

    我看到你有两个问题:

    【讨论】:

      【解决方案2】:

      正如 Amar 所说,长期正确的做法是编写一个 MapReduce 作业来完成它。

      但是,如果这是一次性的事情,并且数据不是太大,那么使用简单的 bash 脚本执行此操作可能是最简单/最容易的,因为您已经有了 python 脚本:

      hadoop fs -text /logs/* > input.log
      python myscript.py input.log output.log
      hadoop fs -copyFromLocal output.log /outputlogs
      rm -f input.log output.log
      

      如果这是一个重复的过程 - 您希望可靠和高效 - 或者如果您只是想学习更好地使用 MapReduce,那么请坚持使用 Amar 的答案。

      【讨论】:

        【解决方案3】:

        如果您已经编写了逻辑,并且希望使用 EMR 和/或普通 Hadoop 进行并行处理 - 您可以使用 Hadoop 流式处理:http://hadoop.apache.org/docs/r0.15.2/streaming.html。简而言之 - 您的脚本将数据输入标准输入并输出到标准输出可以成为映射器。
        因此,您将使用集群在 HDFS 中运行数据处理,而无需重新打包您的代码。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-12-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-03-04
          • 1970-01-01
          • 1970-01-01
          • 2012-07-22
          相关资源
          最近更新 更多