Подтвердить что ты не робот

Как работает отказоустойчивый процесс Hadoop Namenode?

Haidop defintive guide говорит -

Каждый Namenode запускает легкий процесс контроллера отказоустойчивости, чей задание отслеживать свой Namenode для сбоев (используя простой механизм сердечного ритма) и инициировать переход на другой ресурс при наменоводе потерпеть неудачу.

Как происходит namenode может запускать что-то, чтобы обнаружить свой собственный сбой?

Кто посылает пульс кому?

Где этот процесс выполняется?

Как он обнаруживает отказ наменования?

Кому он уведомляет о переходе?

4b9b3361

Ответ 1

От Документы Apache

ZKFailoverController (ZKFC) - это новый компонент, который является клиентом ZooKeeper, который также контролирует и управляет состоянием NameNode. Каждая из машин, которая запускает NameNode, также запускает ZKFC, и что ZKFC отвечает за:

Мониторинг работоспособности - ZKFC периодически запускает свой локальный NameNode с помощью команды проверки работоспособности. Пока NameNode отвечает своевременно со здоровым статусом, ZKFC считает, что node здоров. Если node разбился, заморозился или иным образом попал в нездоровое состояние, монитор здоровья будет отмечать его как нездоровый.

Управление сеансом ZooKeeper - когда локальный NameNode здоров, ZKFC проводит сеанс, открытый в ZooKeeper. Если локальный NameNode активен, он также содержит специальный " блокировка" znode. Этот замок использует поддержку ZooKeeper для узлов ephemeral; если сеанс истекает, блокировка node будет автоматически удалена.

Выбор на основе ZooKeeper - если локальный NameNode здоров, а ZKFC видит, что в настоящее время другой node не содержит блокировку znode, он сам попытается получить блокировку. Если он преуспеет, тогда он " выиграл выборы" и отвечает за запуск отказоустойчивости, чтобы сделать свой локальный NameNode активным.

Посмотрите на этот Apache PDF, который является частью проблемы HDFS-2185 JIRA

Слайд 16 из

http://www.slideshare.net/cloudera/hdfs-update-lipcon-federal-big-data-apache-hadoop-forum

введите описание изображения здесь:

Автоматический процесс восстановления отказов Namenode в Hadoop:

В типичном кластере HA две отдельные машины настроены как NameNodes. В любой момент времени именно одно из имен NameNodes находится в активном состоянии, а другое находится в состоянии ожидания. Active NameNode отвечает за все клиентские операции в кластере, в то время как Standby просто работает как подчиненный, поддерживая достаточное состояние для обеспечения быстрого переключения при необходимости.

Чтобы резервный Namenode сохранял свое состояние синхронизированным с активным Namenode, оба узла взаимодействуют с группой отдельных демонов, называемой JournalNodes (JNs).

Когда любая модификация пространства имен выполняется Active node, она долго регистрирует запись изменения для большинства этих JN. Режим ожидания node считывает эти изменения из JN и применяется к его собственному пространству имен.

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

Для кластера HA жизненно важно, чтобы только один из имен был активен одновременно. ZooKeeper был использован, чтобы избежать сценария разделения мозга, чтобы имя node не расходилось из-за отказа.

Слайд 8 из: http://www.slideshare.net/cloudera/hdfs-futures-world2012-widescreen

введите описание изображения здесь:

В резюме: Имя node - это контроллер Daemon и Failover, который является демоном. Если имя node Daemon не работает, контроллер отказоустойчивости Daemon обнаруживает и предпринимает корректирующие действия. Даже если вся машина выходит из строя, сервер ZooKeeper обнаруживает ее и блокировка будет истек, а другое резервное имя node будет выбрано в качестве активного имени node.