【问题标题】:Why multiple MapReduce jobs for one pig / Hive job?为什么一个 pig / Hive 工作需要多个 MapReduce 工作?
【发布时间】:2015-11-24 12:24:57
【问题描述】:
我正在使用 Pig 来运行我的 hadoop 作业。当我运行 pig 脚本然后导航到 YARN 资源管理器 UI 时,我可以看到为同一个 Pig 作业创建了多个 MapReduce 作业?我相信 Hive 工作也是如此。
谁能告诉我这背后的原因?在什么基础上将一项猪作业拆分为多个 mapreduce 作业?其中之一恰好是 TempletonControllerJob。
谢谢
【问题讨论】:
标签:
hadoop
hive
apache-pig
【解决方案1】:
Templeton 控制器作业就像一个父作业,它将调用另一个子 map-reduce 作业。基本上就是控制执行。
在执行之前,Pig 基本上会提出一个执行计划——它会扫描 pig 脚本中的所有步骤,并将可以在单个作业中执行的步骤组合起来。当 pig 脚本中有两个步骤无法在单个作业中计算时,它会将其拆分为两个。一旦完成此组合并计算每个作业中的作业数和步骤数以得出最终结果,它就会开始执行。