【发布时间】:2014-02-20 20:45:28
【问题描述】:
我用过HADOOP 1.2.1服务器,在那里执行了很多pig作业。 最近,我考虑将我的 Hadoop 服务器更改为 HADOOP 2.2.0。 所以我在 HADOOP 2.2.0 中尝试了一些猪作业,就像我在 HADOOP 1.2.1 版本中所做的那样。
但我在 YARN MR2 中几乎不明白的一件事是,每个 mr 作业中只有一个 reduce 作业安排。
第一次,我认为好吧,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 分钟。
虽然我的旧 Hadoop 服务器资源很差,但它比新 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 大小。
所以我的减少工作总是估计为一个。
【问题讨论】:
-
我的 pig 作业总是安排 ONE Reduce Job ... 的原因是 Pig 0.12.1(h2) 的 InputSizeReducerEstimator 类无法计算输入文件大小。
-
还有其他人在 Hadoop 2 中成功完成多个 reduce 工作吗?
-
您的节点有多少内存?你能告诉我们你的 mapred-site.xml 吗?在你的工作代码中或者通过
-D mapreduce.job.reduces=2在命令行中设置reducer的数量怎么样? -
感谢您的回答。是的,我做到了,结果是一样的。可能是0.12.0-h2 pig版本的bug...我从maven pig-0.12.0-h2.jar版本试过了。
标签: hadoop apache-pig reduce hadoop-yarn