猪步执行细节

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 源码分析 | 先创建核心线程 | 再放入阻塞队列 | 最后创建非核心线程 )

JVM垃圾回收的实现算法和执行细节

[Java] JVM垃圾回收的实现算法和执行细节

go协程并发和swoole协程并发底层执行细节

JavaScript 常见大坑与细节