Hadoop常見問題


  •  Mapper和Reducer作為內部類必須是靜態static的。另外,他們可以作為同級的類。
java.lang.Exception: java.lang.RuntimeException: 
java.lang.NoSuchMethodException: Hadoop_FPTree$SumMapper.<init>() at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:403) Caused by: java.lang.RuntimeException: java.lang.NoSuchMethodException: Hadoop_FPTree$SumMapper.<init>() at org.apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:131)

 

  • Mapper默認的輸入是 <位置 文本值> 位置時候LongWritable類型
java.lang.Exception: java.lang.ClassCastException: 
org.apache.hadoop.io.LongWritable cannot be cast to org.apache.hadoop.io.IntWritable at org.apache.hadoop.mapred.LocalJobRunner$Job.run(LocalJobRunner.java:
403)

 

  • 所有的conf.setXXX都應該在Job.getInstance(conf, "PSSP")前執行,很明顯,獲得的job對象是和conf有關的

 

 

  • map運行的數量與split的數量相關。split的計算:

minSize=max{minSplitSize,mapred.min.split.size} (minSplitSize大小默認為1B)
maxSize=mapred.max.split.size(不在配置文件中指定時大小為Long.MAX_VALUE)
splitSize=max{minSize,min{maxSize,blockSize}}

文件大小/splitSize>1.1,創建一個split,文件剩余大小=文件大小-splitSize
...
剩余文件大小/splitSize<=1.1 將剩余的部分作為一個split
每一個分片對應一個map任務

 

  • combiner必須輸入輸出一致,否則面對大的數據集(combiner運行次數不定,0次或多次都有可能,應該是數據小的時候不調用)會發生錯誤

 

  • map output!=combine input?

http://stackoverflow.com/questions/12171965/why-is-the-number-of-combiner-input-records-more-than-the-number-of-outputs-of-m

 

  • exited with exitCode: 1 due to: Exception from container-launch:

org.apache.hadoop.util.Shell$ExitCodeException:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:464)
at org.apache.hadoop.util.Shell.run(Shell.java:379)

jar包classpath問題,直接放到系統已設置的路徑可解決 /home/casper/hadoop/hadoop-2.2.0/share/hadoop/common/


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM