2014-11-25 63 views
2

Hadoop Mapreduce CombineFileInputFormat在閱讀大量小文件時效果很好,但我一直注意到有時候作業失敗,出現以下情況例外,Mapreduce combinefileinputformat java.lang.reflect.InvocationTargetException當兩個作業訪問相同的數據時

了java.lang.RuntimeException:在 org.apache.hadoop.mapreduce.lib.input.CombineFileRecordReader.initNextRecordReader(CombineFileRecordReader.java:164) java.lang.reflect.InvocationTargetException在 組織.apache.hadoop.mapreduce.lib.input.CombineFileRecordReader.nextKeyValue(CombineFileRecordReader.java:67) 在 org.apache.hadoop.mapred.MapTask $ NewTrackingRecordReader.nextKeyValue在 org.apache.hadoop.mapreduce.task.MapContextImpl.nextKeyValue(MapContextImpl.java:76)(MapTask.java:483) 在 組織.apache.hadoop.mapreduce.lib.map.WrappedMapper $ Context.nextKeyValue(WrappedMapper.java:85) at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:139)at org.apache.hadoop (MapTask.java:672)at org.apache.hadoop.mapred.MapTask.run(MapTask.java:330)at org.apache.hadoop.mapred.Child $ 4.run(Child。 java:268)at java.security.AccessController.doPrivileged(Native Method)at javax.security.auth.Subject.doAs(Subjec (用戶組信息)

我注意到,只有當某個其他mapreduce作業同時在相同的數據上運行時纔會發生這種情況,否則它會按預期工作。

即使在類似條件下運行hive查詢時也會生成相同的異常。

我一直在尋找解決方案或可能的原因。

回答

1

最後我得到了這個問題的原因,實際上我一直在使用CombineFileInputFormat和gzip,因此第一個runnning工作是在同一個文件夾中提取gzip文件,並在完成時刪除它,但是當我運行另一個並行作業時,它還會將輸入中的第一個作業解壓縮文件。

因此,在第二份工作的執行之間,解壓縮文件被第一份工作刪除,這實際上是導致錯誤。

與蜂巢相似的情況。

相關問題