Можно ли перезапустить «убитую» работу Hadoop с того места, где она остановилась? - PullRequest
3 голосов
/ 16 февраля 2012

У меня есть задание Hadoop, которое обрабатывает файлы журналов и сообщает некоторую статистику. Эта работа умерла примерно на полпути, потому что у нее кончились файловые дескрипторы. Я устранил проблему с дескрипторами файлов, и мне интересно, можно ли перезапустить «убитую» работу.

1 Ответ

4 голосов
/ 16 марта 2012

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

В моем собственном случае я обрабатывал большой набор файлов журналов и загружал эти файлы в индекс.Кроме того, я одновременно создавал отчет о содержании этих файлов.Чтобы сделать работу более терпимой к сбоям на стороне индексации (побочный эффект, это вообще не связано с Hadoop), я изменил свою работу, вместо этого создал много меньших заданий, каждое из которых обрабатывает кусокэти файлы журнала.Когда одно из этих заданий завершается, оно переименовывает обработанные файлы журнала, чтобы они больше не обрабатывались.Каждое задание ожидает завершения предыдущего задания перед выполнением.

При сбое одного задания всепоследующие работы быстро терпят неудачу впоследствии.Простое устранение проблемы и повторная отправка моей работы, примерно, начнут обрабатывать с того места, на котором она остановилась.В худшем случае, когда задание было выполнено на 99% во время сбоя, одно задание будет ошибочно и расточительно обработано.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...