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 脚本流式传输