猪脚本可以被翻译成多个MR作业,我想知道是否有一个界面或方法来查看整个PIG脚本的进度,例如计划,执行了多少个作业等等。
答案 0 :(得分:5)
我们在Twitter上遇到了同样的问题,因为我们的一些Pig脚本会启动数十个Map-Reduce工作,有时很难分辨出哪些是做什么的,有关计划效率的原因,了解有多少会运行并行等等。
所以我们创建了Twitter Ambrose:https://github.com/twitter/ambrose
它旋转了一个小码头服务器,它给你一个很好的web ui,显示作业DAG,在作业完成时为节点着色,给你关于作业的统计数据,并告诉你每个作业试图计算哪些关系。
答案 1 :(得分:3)
有一个命令 说明 ,但它会在我的部署中引发异常。所以我用另一种方法。
您可以使用 说明 命令并查看解释报告末尾的物理计划部分,获取有关计划了多少MR作业的信息。要获取脚本的MR作业数,请执行以下操作:
./pig -e 'explain -script ./script_name.pig' > ./explain.txt
grep MapReduce ./explain.txt | wc -l
现在我们计划了MR工作的数量。要监视脚本执行,在运行之前,需要访问Hadoop的jobtracker页面(通过“http://(IP_or_node_name):50030 / jobtracker.jsp”)并记下上一个作业的名称(Completed Jobs部分)。提交脚本。刷新jobtracker页面并计算有多少正在运行的作业以及在您注意到的作业之后完成的作业数量。现在,您可以了解要执行的作业数量。 单击每个作业并查看其统计信息和进度。
更简单的方法是在小型数据集上运行脚本,记下作业数量,在脚本执行后显示在控制台输出上。由于猪不会改变其执行计划,因此它与大数据集相同。通过查看Hadoop的jobtracker页面上每个作业的统计信息(通过“http://(IP_or_node_name):50030 / jobtracker.jsp”),您可以了解每个MR作业所用的时间比例。您可以使用它来近似插入大型数据集上的执行时间。如果您有数据偏差和一些笛卡尔积,那么执行时间预测可能会变得棘手。