一个 pig 脚本可以翻译成多个 MR 作业,我想知道是否有一个界面或方法可以查看整个 PIG 脚本的进度,例如计划、执行了多少作业等。
2 回答
我们在 Twitter 也遇到了同样的问题,因为我们的一些 Pig 脚本启动了数十个 Map-Reduce 作业,有时很难判断其中哪些在做什么,计划效率的原因,了解有多少将并行运行,等等
所以我们创建了 Twitter Ambrose:https ://github.com/twitter/ambrose
它启动了一个小型码头服务器,为您提供了一个漂亮的 Web ui,显示作业 DAG,在作业完成时为节点着色,为您提供有关作业的统计信息,并告诉您每个作业试图计算哪些关系。
有一个命令说明,但它在我的部署中引发异常。所以我使用另一种方法。
您可以通过使用说明命令并查看说明报告末尾的“物理计划”部分来获取有关计划了多少 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”)并记下最后一个作业的名称(已完成作业部分)。提交脚本。刷新 jobtracker 页面并计算有多少正在运行的作业以及在您记录的作业之后完成了多少。现在您可以了解还有多少作业需要执行。单击每个作业并查看其统计数据和进度。
一个更简单的方法是在一个小数据集上运行脚本,记下作业的数量,它会在脚本执行后显示在控制台输出中。由于 pig 不会更改其执行计划,因此与大数据集相同。通过在 Hadoop 的 jobtracker 页面上查看每个作业的统计信息(通过“http://(IP_or_node_name):50030/jobtracker.jsp”),您可以了解每个 MR 作业所花费的时间比例。比您可以使用它来近似地插入大型数据集的执行时间。如果您有偏斜的数据和一些笛卡尔积,执行时间预测可能会变得很棘手。