#java #timeout #hadoop
#java #тайм-аут #hadoop
Вопрос:
У меня есть задача сокращения Hadoop, которая считывает свои входные записи пакетами, выполняет большую обработку и записывает много выходных данных для каждого входного пакета. Я читал, что Hadoop считает вывод записи «прогрессом» с целью уничтожения зависших задач. Однако, несмотря на постоянное написание большого количества выходных данных, время ожидания моей задачи все еще истекает и завершается. Итак: как я могу узнать, когда Hadoop считает, что задача в последний раз сообщала о ходе выполнения? Почему я должен вызывать context.progress()
с каждым context.write()
? Существуют ли какие-либо ситуации, когда запись не учитывается как прогресс? (Например, мои ключи — NullWritable
s.) Я использую Cloudera CDH3u1 на CentOS 5.7, если это имеет какое-либо значение.
Ответ №1:
Не уверен, почему задачи завершаются, но вы могли бы увеличить значение mapreduce.task.timeout, по умолчанию оно равно 600000 мс. Это может быть не очень хорошей практикой, поскольку задачи rouge будут выполняться дольше из-за увеличения значения таймаута.