记录hadoop映射过程

时间:2013-12-06 14:51:18

标签: hadoop

我正在研究hadoop。我有100k Zip文件和使用mapreduce处理文件 但是现在我有一项任务需要跟踪一些日志。

1.Zip文件已处理   2. Zip文件需要处理   3.流程状态,如错误或成功

我是通过使用以下方法

来完成的
catch (Exception Ex)
        {
            System.out.println("Killing task ");
            runningJob.killTask((TaskAttemptID)context.getTaskAttemptID(), true);

        }

喜欢这个。但现在我需要把它存放在一个公共场所

我该怎么做

我将它存放在Hbsae中。欢迎提出想法 请帮助我

2 个答案:

答案 0 :(得分:1)

这里有一些想法:

  1. 使用自定义任务计数器。 http://lintool.github.io/Cloud9/docs/content/counters.html它们非常轻巧,是跟踪小值的好方法。

  2. 如果您需要记录更多详细信息。有两种方法可以做到这一点。首先,您可以输出日志语句作为地图作业的一部分。然后使用两个简单的过滤器(地图作业)拆分管道。第一个过滤器将获取zip处理的输出并将插入到管道的其余部分,第二个过滤器将获取日志语句并将它们保存到单独的位置,以供进一步分析。

    使用HBase也会起作用,但会带来额外的复杂性并在群集上利用更多资源。除非你已经将HBase作为管道的一部分。

答案 1 :(得分:1)

计数器确实是最好的解决方案,但是,不要过度使用它们,因为它们也有很大的开销。

您可以考虑聚合任务中的计数器,并且只是不时刷新它们。

请注意,如果您使用手动机制来跟踪这些统计信息,那么您必须考虑多次运行的任务(由于各种错误,或者由于推测性执行)