2014-11-25 24 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) org.apache.hadoop .mapred.MapTask.runNewMapper (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 (네이티브 메소드) javax.security.auth.Subject.doAs (Subjec t.java:415) at org.apache.hadoop.security.UserGroupInformation.doAs (UserGroupInformation.

다른 mapreduce 작업이 같은 데이터에서 동시에 실행되고있을 때만 발생하는 것으로 나타났습니다. 그렇지 않으면 예상대로 작동합니다.

유사한 조건에서 하이브 쿼리를 실행해도 동일한 예외가 발생합니다.

나는 이에 대한 해결책이나 가능한 원인을 찾고 있습니다.

답변

1

마지막으로 나는이 문제의 원인을 실제로 gzip으로 CombineFileInputFormat을 사용하고 있으므로 첫 번째 runnning 작업은 동일한 폴더에서 gzip 파일을 추출하고 완료시 삭제하는 것이었지만 작업을 병렬로 수행하면 파일의 첫 번째 작업에서 압축을 해제 한 파일을 가져옵니다.

그래서 두 번째 작업 실행 사이에 첫 번째 작업에서 압축 해제 된 파일이 삭제되는 동안 실제로 오류가 발생했습니다.

하이브의 경우도 비슷합니다.