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/