Taiwan Hadoop Forum http://forum.hadoop.tw/ |
|
奇怪的問題 http://forum.hadoop.tw/viewtopic.php?f=7&t=38308 |
第 1 頁 (共 1 頁) |
發表人: | TeaLover [ 2016-03-03, 01:29 ] |
文章主題 : | 奇怪的問題 |
java.lang.NullPointerException at RS_BP.BinPacking$BinPackingPartitioner.getPartition(BinPacking.java:46) at RS_BP.BinPacking$BinPackingPartitioner.getPartition(BinPacking.java:1) at org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:691) at org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80) at RS_BP.BinPackingMapper.map(BinPackingMapper.java:26) at RS_BP.BinPackingMapper.run(BinPackingMapper.java:33) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370) at org.apache.hadoop.mapred.Child$4.run(Child.java:255) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) at org.apache.hadoop.mapred.Child.main(Child.java:249) 在eclipse跑單機模式都沒有問題,但是在叢集上跑的時候,map task就一直失敗 有人知道是什麼原因嗎?? 因為我在partitioner中有用HashMap來紀錄key的一些資訊, 看了log檔發現 public int getPartition(Text key, IntWritable value, int numPartitions) { 單機模式中 sLogger.info(kR.get(word));沒有問題 有顯示出值 return 0; 叢集上 sLogger.info(kR.get(word)); 沒有印出東西 因該是null return kR.get(word);//BinPacking.java:46 } 所以我覺得是HashMap裡面的資訊不見了 物件在單機模式跟全分散模式中的生命周期不一樣嗎?? |
發表人: | jazz [ 2016-03-03, 10:49 ] |
文章主題 : | Re: 奇怪的問題 |
TeaLover 寫: java.lang.NullPointerException at RS_BP.BinPacking$BinPackingPartitioner.getPartition(BinPacking.java:46) at RS_BP.BinPacking$BinPackingPartitioner.getPartition(BinPacking.java:1) at org.apache.hadoop.mapred.MapTask$NewOutputCollector.write(MapTask.java:691) at org.apache.hadoop.mapreduce.TaskInputOutputContext.write(TaskInputOutputContext.java:80) at RS_BP.BinPackingMapper.map(BinPackingMapper.java:26) at RS_BP.BinPackingMapper.run(BinPackingMapper.java:33) at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:764) at org.apache.hadoop.mapred.MapTask.run(MapTask.java:370) at org.apache.hadoop.mapred.Child$4.run(Child.java:255) at java.security.AccessController.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1121) at org.apache.hadoop.mapred.Child.main(Child.java:249) 在eclipse跑單機模式都沒有問題,但是在叢集上跑的時候,map task就一直失敗 有人知道是什麼原因嗎?? 因為我在partitioner中有用HashMap來紀錄key的一些資訊, 看了log檔發現 public int getPartition(Text key, IntWritable value, int numPartitions) { 單機模式中 sLogger.info(kR.get(word));沒有問題 有顯示出值 return 0; 叢集上 sLogger.info(kR.get(word)); 沒有印出東西 因該是null return kR.get(word);//BinPacking.java:46 } 所以我覺得是HashMap裡面的資訊不見了 物件在單機模式跟全分布模式中的生命周期不一樣嗎?? 觀念上單機模式因為只有透過 LocalRunner 來執行,所以單純許多。 全分散式模式因為 partitioner 是用來分配給 reducer 的依據, 也就是 Map 到 Reduce 中間多了 sort by key and shuffle (group by key) 的動作 所以確實生命週期是有不一樣的地方。 當然以上描述解決不了你的問題,單看 error message 不太容易猜得出原因 XD - Jazz |
第 1 頁 (共 1 頁) | 所有顯示的時間為 UTC + 8 小時 |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |