Hadoop: обработка исключения из RunningJob.isComplete () - PullRequest
0 голосов
/ 27 декабря 2011

В классе RunningJob есть несколько методов, которые выдают IOException (предположительно, когда происходит сбой подключения к Hadoop?). Я смотрю сейчас на isComplete().

Как правильно обрабатывать такую ​​ошибку? Должен ли я считать, что работа мертва? Должен ли я ждать и попробовать снова? Просто позволить моему приложению умереть в этот момент - не вариант, поскольку он управляет несколькими заданиями в Hadoop и других местах и ​​должен быть максимально устойчивым.

1 Ответ

1 голос
/ 27 декабря 2011

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

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

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

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

Как только вы обнаружите некоторые общие проблемы с вашим кластером и заданиями, вы можете начать встраивать обработку исключений в свои приложения. Я не думаю, что стоит потратить ваше время на то, чтобы все объяснить заранее.

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