Hadoop MapReduce 流式传输 - 确保我已处理所有日志文件的最佳方法

Posted

技术标签:

【中文标题】Hadoop MapReduce 流式传输 - 确保我已处理所有日志文件的最佳方法【英文标题】:Hadoop MapReduce streaming - Best methods to ensure I have processed all log files 【发布时间】:2014-09-03 09:26:02 【问题描述】:

我正在开发用 Perl 编写的 Hadoop MapReduce 流作业,以处理 Hadoop 中的大量日志。新文件不断添加到数据目录中,目录中有 65,000 个文件。

目前我在目录上使用ls 并跟踪我处理了哪些文件,但即使ls 也需要很长时间。我需要尽可能接近实时地处理文件。

使用ls 跟踪似乎不太理想。是否有任何工具或方法可以跟踪在这样的大目录中未处理哪些日志?

【问题讨论】:

你能用更详细的方式解释这个问题吗?有一些格式可以理解。如果问题已经回答,请发布解决方案。 最后,我不得不与负责将日志处理到 Hadoop 中的团队合作。他们创建了一个简单的数据库来跟踪传入的日志,然后可以使用该数据库来确定哪些日志尚未处理。 【参考方案1】:

您可以在程序处理后重命名日志文件。

For example:
    command: hadoop fs -mv numbers.map/part-00000 numbers.map/data

重命名后,您可以轻松识别已处理的和尚未处理的。

认为这会解决您的问题。

【讨论】:

好主意,但我不是文件的所有者,其他团队依赖命名约定,因此在这种情况下它不是一个真正的选择。

以上是关于Hadoop MapReduce 流式传输 - 确保我已处理所有日志文件的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

Hadoop pig latin 无法通过 python 脚本流式传输

Hadoop - 将来自 HTTP 上传 (PUT) 的数据直接流式传输到 HDFS

使用私有 python 解释器的 Hadoop 流式传输

Hadoop核心组件之MapReduce

Strom简单介绍

大数据之Hadoop(MapReduce):Hadoop序列化