Taiwan Hadoop Forum

台灣 Hadoop 技術討論區
現在的時間是 2018-12-14, 11:01

所有顯示的時間為 UTC + 8 小時




發表新文章 回覆主題  [ 2 篇文章 ] 
發表人 內容
 文章主題 : 奇怪的問題
文章發表於 : 2016-03-03, 01:29 
離線

註冊時間: 2015-11-04, 16:44
文章: 5
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裡面的資訊不見了
物件在單機模式跟全分散模式中的生命周期不一樣嗎??


最後由 TeaLover 於 2016-03-03, 16:50 編輯,總共編輯了 2 次。

回頂端
 個人資料 E-mail  
 
 文章主題 : Re: 奇怪的問題
文章發表於 : 2016-03-03, 10:49 
離線

註冊時間: 2009-11-09, 19:52
文章: 2897
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


回頂端
 個人資料 E-mail  
 
顯示文章 :  排序  
發表新文章 回覆主題  [ 2 篇文章 ] 

所有顯示的時間為 UTC + 8 小時


誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 2 位訪客


不能 在這個版面發表主題
不能 在這個版面回覆主題
不能 在這個版面編輯您的文章
不能 在這個版面刪除您的文章
不能 在這個版面上傳附加檔案

搜尋:
前往 :  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
正體中文語系由 竹貓星球 維護製作