如何调试作业提交后被困的猪

时间:2014-07-07 12:57:42

标签: apache-pig elastic-map-reduce

我有一个用Pig编写的map-reduce作业正在执行以下操作。

给出一组表示访问网站上某个资源的apache日志文件

  • 清除机器人和不需要的日志行中的日志
  • 生成日志中的元组(ip,resource_id)

例如这个日志:
1.1.1.1 - [14/Jun/2014:06:26:27 +0000] "GET /path/to/resource/<resource_id>" "Agent"

将被转换为(如果它不是机器人):
(1.1.1.1, <resource_id>)

这是通过一个简单的UDF完成的,该UDF使用正则表达式+库来解析日志以进行机器人检测 从此步骤开始,脚本将继续执行一些额外的map-reduce操作。

问题如下:

  • 我能在当地完成猪的工作。
  • 我将脚本上传到Amazon Elastic Map Reduce,需要处理5GB的日志。
  • 我用10 m1.large个实例运行了1个小时的脚本。
  • 工作没有完成,我终止了它。

已经生产的hadoop日志没有显示出太大的进展,似乎陷入了前面描述的初始准备阶段。

2014-07-07 06:31:17,609 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - detailed locations: M: pre1[4,7],pre2[-1,-1],pre3[7,7],pre4[8,7],r2[13,5] C: R: r5[-1,-1] 2014-07-07 06:31:17,661 [main] INFO org.apache.pig.backend.hadoop.executionengine.mapReduceLayer.MapReduceLauncher - 0% complete

您如何建议从此处开始调试问题?
您认为给定数据大小的机器数量是否合理? 我真的希望能在这段时间内完成这项工作。

谢谢

1 个答案:

答案 0 :(得分:0)

如果你有大量的日志文件,我可以想象处理可能会很慢。在这种情况下,您可以在将它们放在HDFS上之前将它们组合起来。对于这种硬件上的简单解析脚本,一般5GB的数量应该不是问题。

这种情况的一般下一步是使问题变小。

  1. 如果您只是提供一些小文件而不是5 GB,那么它是否适用于亚马逊。
  2. 如果是这样,如果你首先给它1%,然后2%,然后是10%,运行时如何增加呢?
  3. 如果它不起作用,如果你使解析功能变得微不足道,或者完全跳过它会发生什么?