我已经使用过HADOOP 1.2.1服务器,并在那里执行许多猪作业。 最近,我考虑将我的Hadoop服务器更改为HADOOP 2.2.0。 所以我在HADOOP 2.2.0中尝试了一些猪工作,就像我在HADOOP 1.2.1版本中所做的那样。
但在YARN MR2中我很难理解的一件事是,只有一个减少了每个工作岗位上的工作。
第一次,我认为确定,reduce比mr1快,因为资源管理器通过仅在一台服务器中处理来有效地安排减少作业。
但是,在每个大型工作中,YARN MR2每次只分配一次减少工作。
以下是Extream案例。
Kind Total Tasks(successful+failed+killed) Successful tasks Failed tasks Killed tasks Start Time Finish Time Setup 1 1 0 0 27-Jan-2014 18:01:45 27-Jan-2014 18:01:46 (0sec) Map 2425 2423 0 2 27-Jan-2014 18:01:26 27-Jan-2014 19:08:58 (1hrs, 7mins, 31sec) Reduce 166 163 0 3 27-Jan-2014 18:04:35 27-Jan-2014 20:40:15 (2hrs, 35mins, 40sec) Cleanup 1 1 0 0 27-Jan-2014 20:40:16 27-Jan-2014 20:40:17 (1sec)
需要2小时38分钟。
Job Name: PigLatin:DefaultJobName User Name: hduser Queue: default State: SUCCEEDED Uberized: false Started: Tue Jan 28 16:09:41 KST 2014 Finished: Tue Jan 28 21:47:45 KST 2014 Elapsed: 5hrs, 38mins, 4sec Diagnostics: Average Map Time 41sec Average Reduce Time 3hrs, 48mins, 23sec Average Shuffle Time 1hrs, 36mins, 35sec Average Merge Time 1hrs, 27mins, 38sec ApplicationMaster Attempt Number Start Time Node Logs 1 Tue Jan 28 16:09:39 KST 2014 awdatanode2:8042 logs Task Type Total Complete Map 1172 1172 Reduce 1 1 Attempt Type Failed Killed Successful Maps 0 1 1172 Reduces 0 0 1
需要5小时38分钟。
虽然My Old Hadoop服务器资源不足,但它比New Hadoop要快得多。因为减少分配的工作。 另一方面,HADOOP 2.2.0服务器拥有丰富的资源,并且map比旧系统快得多,但减少需要非常长的时间。
Hadoop 2.2内存配置为Map(4G,堆空间3G)和Reduce(8G,堆空间6G)。 我尝试了各种配置。但结果总是一个减少工作。
所以我检查了猪源代码。
My Pig作业始终使One减少作业的原因是InputSizeReducerEstimator类无法访问hdfs文件系统。
// InputSizeReducerEstimator.java的第79行 列出poLoads = PlanHelper.getPhysicalOperators(mapReduceOper.mapPlan,POLoad.class);
结果poLoads总是0大小。
所以我的减少工作总是估计为一个。
答案 0 :(得分:1)
我通过重建pig-0.12.1-h2.jar build来解决这个问题。
我问过猪用户组......他们修补了