猪步执行细节
Posted
技术标签:
【中文标题】猪步执行细节【英文标题】:Pig step execution details 【发布时间】:2013-03-15 06:04:38 【问题描述】:我是猪的新手。
我在 pig 中编写了一个小脚本,其中我首先从两个不同的表中加载数据并进一步右外连接这两个表,然后我还有下一个连接表以用于两个不同的 st 数据。它工作正常.但我想看看 执行的步骤,比如我的数据是在哪一步加载的,我可以记下时间 需要加载数据加入步骤的后续详细信息,例如需要多少时间 获取这些要加入的记录。
基本上我想知道我的猪脚本的哪一部分需要更长的时间才能运行,所以 这样我可以进一步优化我的猪脚本。
无论如何我们都可以在脚本中 println 并找出执行了哪些步骤已经开始执行。
通过 jobtracker 详细信息链接,我无法获得太多信息,只能看到 mapper 正在运行且 reducer 正在运行,但理想情况下,mapper 无法找到正在运行的脚本部分。
例如,对于 hive 作业运行,我们可以在 jobtracker 详细信息链接中查看当前正在执行哪个步骤。
任何信息都会很有帮助。
提前致谢。
【问题讨论】:
【参考方案1】:我建议你看看以下内容:
猪的Progress Notification Listener Penny :这是一个监控工具,但我担心它最近没有更新(例如:除非你做一些代码更改,否则它不会为 Pig 0.12.0 编译) Twitter 的 Ambrose 项目。 https://github.com/twitter/ambrose另一方面,在执行脚本后,您可以看到关于每个别名执行时间的详细统计信息(参见:Job Stats (time in seconds))。
【讨论】:
【参考方案2】:看看EXPLAIN
operator。这不会在代码执行时为您提供实时统计信息,但它应该为您提供有关脚本生成的 MapReduce 计划的足够信息,以便您能够将 MR 作业与脚本中的步骤相匹配。
此外,当您的脚本运行时,您可以检查 Hadoop 作业的配置。查看变量“pig.alias”和“pig.job.feature”。这些分别告诉您,您的哪些别名(表/关系)涉及该作业以及正在使用哪些 Pig 操作(例如,JOIN
步骤的 HASH_JOIN,ORDER BY
步骤的 SAMPLER 或 ORDER BY,以及很快)。完成后输出到控制台的作业统计信息也提供此信息。
【讨论】:
非常感谢以上所有内容。我将进一步尝试处理上述选项。 我不敢相信我以前没有找到 EXPLAIN 运算符!另请参见 ILLUSTRATE 命令。 pig.apache.org/docs/r0.14.0/test.html以上是关于猪步执行细节的主要内容,如果未能解决你的问题,请参考以下文章
Java 并发编程线程池机制 ( 线程池执行任务细节分析 | 线程池执行 execute 源码分析 | 先创建核心线程 | 再放入阻塞队列 | 最后创建非核心线程 )