1

我一直在使用 HADOOP 1.2.1 服务器,并在那里执行了许多猪作业。最近,我考虑将我的 Hadoop 服务器更改为 HADOOP 2.2.0。所以我在 HADOOP 2.2.0 中尝试了一些猪作业,就像我在 HADOOP 1.2.1 版本中所做的那样。

但是我在 YARN MR2 中几乎不明白的一件事是,每个 mr 作业中只有一个减少作业。

第一次,我认为 ok,reduce 比 mr1 快,因为资源管理器通过仅在一台服务器中处理它来有效地调度 reduce 作业。

但是在每一个 big size 的 mr 作业中,YARN MR2 每次都只分配一个 Reduce 作业。

下面是Extream案例。

我的旧 HADOOP(1.2.1 版)服务器由 1 个 jobtracker 和 2 个 tasktracker 组成。(每个4核,32G)

种类 Total Tasks(successful+failed+killed) 成功任务 失败任务 杀死任务 开始时间 完成时间
设置 1 1 0 0 2014 年 1 月 27 日 18:01:45 2014 年 1 月 27 日 18:01:46(0 秒)
地图 2425 2423 0 2 2014 年 1 月 27 日 18:01:26 2014 年 1 月 27 日 19:08:58(1 小时 7 分钟 31 秒)
减少 166 163 0 3 2014 年 1 月 27 日 18:04:35 2014 年 1 月 27 日 20:40:15(2 小时 35 分钟 40 秒)
清理 1 1 0 0 2014 年 1 月 27 日 20:40:16 2014 年 1 月 27 日 20:40:17(1 秒)

耗时 2 小时 38 分钟。

我的新 HADOOP(2.2.0 版)服务器由 1 个资源管理器和 8 个节点管理器组成。(每个 4 核,32G)(新系统要好得多)

职位名称:PigLatin:DefaultJobName
用户名:hduser
队列:默认
状态:成功
优步化:假
开始时间:2014年1月28日星期二16:09:41 KST
完成时间:2014 年 1 月 28 日星期二 21:47:45 KST
已用时间:5 小时 38 分钟 4 秒
诊断:    
平均地图时间 41 秒
平均减少时间 3 小时 48 分钟 23 秒
平均随机播放时间 1 小时 36 分钟 35 秒
平均合并时间 1 小时 27 分钟 38 秒
应用大师
尝试次数开始时间节点日志
1 月 28 日星期二 16:09:39 KST 2014 awdatanode2:8042 日志
任务类型总计完成
地图 1172 1172
减少 1 1
尝试类型失败杀死成功
地图 0 1 1172
减少 0 0 1

耗时 5 小时 38 分钟。

虽然 My Old Hadoop server 的资源很差,但它比 New Hadoop 快得多。因为减少分配的工作。另一方面,HADOOP 2.2.0 server 资源丰富,map 比旧系统快很多,但是reduce 耗时很长。

Hadoop 2.2 内存配置为 Map(4G,堆空间 3G)和 Reduce(8G,堆空间 6G)。我尝试了各种配置集。但结果总是一项减少工作。

所以我检查了猪源代码。

My Pig 作业总是使 One reduce 作业的原因是 InputSizeReducerEstimator 类无法访问 hdfs 文件系统。

// InputSizeReducerEstimator.java 列表第 79 行 poLoads = PlanHelper.getPhysicalOperators(mapReduceOper.mapPlan, POLoad.class);

结果 poLoads 始终为 0 大小。

所以我的减少工作总是估计为一个。

4

1 回答 1

1

我通过重建 pig-0.12.1-h2.jar 构建解决了这个问题。

我问了猪用户组......他们在

https://issues.apache.org/jira/browse/PIG-3512

于 2014-02-09T02:18:47.317 回答