Устойчивость HDFS к перезагрузке компьютера в DC/OS

Я установил HDFS из юниверса на свой кластер DCOS из 10 машин с базовой ОС (3 главных узла, 7 узлов агента). Моя конфигурация HA HDFS имеет 2 узла имени, 3 узла журнала и 5 узлов данных. Теперь мой вопрос. Разве HDFS не должна быть устойчива к перезагрузке компьютера? Если я перезапущу машину, на которой установлен узел данных, узел данных будет перестроен как зеркало других (только после перезапуска службы HDFS из пользовательского интерфейса DC/OS). В случае перезапуска, где есть узел журнала или узел имени, узлы будут просто помечены как потерянные и никогда не будут восстановлены.


person Andrea T. Bonanno    schedule 30.01.2017    source источник


Ответы (2)


В конце концов проблема была обнаружена в глючной версии пакета Universe HDFS для DC/OS. Однако в ближайшие несколько недель на Universe будет выпущен совершенно новый пакет HDFS для DC/OS.

https://dcos-community.slack.com/archives/data-services/p1485717889001709

https://dcos-community.slack.com/archives/data-services/p1485801481001734

person Andrea T. Bonanno    schedule 15.02.2017

Краткий обзор модели устойчивости HDFS для развертывания высокой доступности, подобного вашему:

  • Два NameNodes образуют пару активный/резервный. В случае перезапуска активного компьютера система обнаруживает его сбой, и резервный становится новым активным. Как только машина завершает перезагрузку, процесс NameNode запускается снова, и он становится новым резервным сервером. Нет времени простоя, если оба узла NameNode не работают одновременно. Данные на хосте (например, файл метаданных fsimage) обычно сохраняются между перезапусками. Если это не так в вашей среде, вам потребуются дополнительные действия по восстановлению для повторной установки резервного сервера, например запуск команды hdfs namenode -bootstrapStandby.
  • 3 узла журнала образуют кворум. В случае перезагрузки компьютера узел NameNode может продолжить запись своих транзакций журнала редактирования в оставшиеся 2 узла журнала. Как только машина завершает свой перезапуск, процесс JournalNode запускается снова, догоняет транзакции, которые он мог пропустить, а затем NameNode снова записывает во все 3. Нет времени простоя, если 2 или более узла журнала не работают одновременно. Если данные (например, файлы редактирования) не сохраняются при перезапусках, то перезапущенный узел журнала наверстает упущенное, скопировав его с работающего узла журнала.
  • DataNodes в основном одноразовые. В случае перезагрузки компьютера клиенты будут перенаправлены на другие работающие узлы данных для операций чтения и записи (при типичном коэффициенте репликации, равном 3). Как только компьютер завершает перезагрузку, процесс DataNode запускается снова, и он может снова начать обслуживать трафик чтения/записи от клиентов. Простоя не бывает, если массовый одновременный сбой (крайне маловероятный и, вероятно, связанный с более серьезными проблемами центра обработки данных) не приводит к одновременному отключению всех узлов данных, на которых размещены реплики определенного блока. Если данные (каталог блочного файла) не сохраняются при перезапусках, то после перезапуска он будет выглядеть как новый DataNode, подключающийся к сети. Если это вызывает дисбаланс кластера, это можно исправить, запустив HDFS Balancer.
person Chris Nauroth    schedule 31.01.2017
comment
Спасибо, Крис, именно так я и ожидал, но в DC/OS (где HDFS запускается с Apache Mesos) после перезагрузки компьютера перезапускаются только узлы данных, тогда как узлы журналов и узлы имен никогда не перезапускаются. Mesos помечает связанные с ними задачи как потерянные и не может их перезапустить. - person Andrea T. Bonanno; 01.02.2017
comment
Спасибо за дополнительные разъяснения. К сожалению, у меня нет опыта работы с HDFS на DC/OS или Mesos, поэтому я не могу предоставить дополнительную информацию об этом. Надеюсь, ваш вопрос привлечет внимание специалистов по DC/OS или Mesos. - person Chris Nauroth; 01.02.2017