Как работает процесс отработки отказа Hadoop Namenode?


Руководство по определению Hadoop говорит -

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

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

Кто посылает сердцебиение кому?

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

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

К кого он уведомит о переходе?

1 14

1 ответ:

Из Apache docs

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

Мониторинг работоспособности - ZKFC пингует свой локальный NameNode на периодической основе с командой проверки работоспособности. Так долго, как Наменод своевременно реагируя на состояние здоровья, ZKFC считает узел здоровым. Если узел был поврежден, заморожен или иным образом вошел в неработоспособное состояние, монитор работоспособности отметит его как неработоспособный.

Зверолов сессии управления - если локальный узел типа NameNode Здоров, ZKFC держит сессию открытой в зоопарке. Если локальный NameNode активен, он также содержит специальный znode "lock". Этот замок использует поддержку ZooKeeper для "эфемерные " узлы; если сеанс истекает, узел блокировки будет автоматически удален.

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

Взгляните на это Apache PDF , который является частью HDFS-2185 Jira issue

Слайд 16 из

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

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

автоматический процесс отработки отказа Namenode в Hadoop:

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

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

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

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

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

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

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

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