我正在研究 hadoop。我有 100k Zip 文件并使用 mapreduce 处理文件 但是现在我有一项任务需要跟踪一些日志。
1.Zip文件处理 2. zip文件需要处理 3. 进程状态,如错误或成功
我是用下面的方法来做的
catch (Exception Ex)
{
System.out.println("Killing task ");
runningJob.killTask((TaskAttemptID)context.getTaskAttemptID(), true);
}
像这样。但是现在我需要把它存放在一个公共(public)的地方
我该怎么做
我想将它存储在 Hbsae 中。欢迎提出想法 请帮助我
最佳答案
这里有一些想法:
使用自定义任务计数器。 http://lintool.github.io/Cloud9/docs/content/counters.html它们非常轻巧,是跟踪小值的好方法。
如果您需要记录更多细节。有两种方法可以做到这一点。首先,您可以只输出日志语句作为 map 作业的一部分。然后使用两个简单的过滤器(映射作业)拆分管道。第一个过滤器将获取您的 zip 处理的输出并将插入您的管道的其余部分,第二个过滤器将获取日志语句并将它们保存到单独的位置,以供进一步分析。
使用 HBase 也可以,但会带来额外的复杂性并在集群上使用更多资源。除非您已经将 HBase 作为管道的一部分。
关于hadoop - 记录hadoop map进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20426844/