Mapreduce combfileinputformat java.lang.reflect.InvocationTargetException, когда два задания получают доступ к одним и тем же данным.

Hadoop Mapreduce CombineFileInputFormat отлично работает, когда дело доходит до чтения большого количества файлов небольшого размера, однако я заметил, что иногда происходит сбой задания со следующим исключением:

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException at org.apache.hadoop.mapreduce.lib.input.CombineFileRecordReader.initNextRecordReader(CombineFileRecordReader.java:164) org.nextKeyValue(CombineFileRecordReader.) в org.apache.hadoop.mapreduce.lib.map.WrappedMapper$Context.nextKeyValue(WrappedMapper.java:85) в org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:139) в org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:672) в org.apache.hadoop.mapred.MapTask.run(MapTask.java:330) в org.apache.hadoop.mapred.Child$4.run(Child.java:268) в java.security.AccessController.doPrivileged(собственный метод) в javax.security.auth.Subject.doAs(Subject.java:415) в org.apache.hadoop.security.UserGroupInformation.doAs(UserGroup Информация.

Я заметил, что это происходит только тогда, когда какое-то другое задание mapreduce выполняется для тех же данных в то же время, в противном случае оно работает как положено.

Даже то же самое исключение генерируется, когда я выполняю запрос улья в подобном условии.

Я искал решение или возможную причину для этого.

1 ответ

Наконец, я получил причину этой проблемы, фактически я использовал CombineFileInputFormat с gzip, поэтому первое задание запуска было извлечением файла gzip в той же папке и удаляло его по завершении, однако, когда я запустил другое задание параллельно с ним также принимает файл, распакованный первым заданием на входе.

Таким образом, в промежутке между выполнением второго задания разархивированный файл удалялся первым заданием, это фактически вызывало ошибку.

Аналогичное будет в случае с ульем.

Другие вопросы по тегам