我已经用过hadoop1.2.1服务器,在那里执行了很多pig任务。最近,我考虑将hadoop服务器改为hadoop2.2.0。所以我在hadoop2.2.0中尝试了一些Pig的工作,就像在hadoop1.2.1版本中一样。
但有一件事我很难理解在纱mr2,是只有一个减少工作安排在每个先生的工作。
第一次,我认为reduce比mr1快,因为资源管理器只在一台服务器上处理reduce作业,从而有效地调度了reduce作业。
但在每个大尺寸mr作业中,yarn mr2每次只分配一个reduce作业。
下面是extream案例。
我以前的hadoop(版本1.2.1)服务器由1个jobtracker和2个tasktracker组成(每个4芯,32g)
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分钟。
我的新hadoop(版本2.2.0)服务器由1个资源管理器和8个节点管理器组成(每个4核,32g)(新系统更好)
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分钟。
虽然我以前的hadoop服务器资源不足,但它比新的hadoop快得多。因为减少了分配的工作。另一方面,hadoop2.2.0服务器拥有丰富的资源,map比旧系统快得多,但是reduce需要很长的时间。
hadoop2.2内存配置为map(4g,堆空间3g)和reduce(8g,堆空间6g)。我试过各种配置。但结果总是减少一份工作。
所以我检查了Pig的源代码。
我的pig作业总是生成一个reduce作业的原因是inputsizereducerestimator类无法访问hdfs文件系统。
//inputsizereducerestimator.java list poloads=planhelper.getphysicaloperators(mapreduceoper.mapplan,poload.class)的第79行;
结果总是0大小。
所以我的工作总是估计为一个。
1条答案
按热度按时间wi3ka0sx1#
我通过重建pig-0.12.1-h2.jar构建来解决这个问题。
我问Pig用户组。。。他们在
https://issues.apache.org/jira/browse/pig-3512