Как работает процесс отработки отказа Hadoop Namenode?
Руководство по определению Hadoop говорит -
Каждый Namenode запускает облегченный процесс отказоустойчивого контроллера, который работа , чтобы контролировать его завершения неудач (с помощью простого механизм биения сердца) и привести к переходу на другой если узел типа NameNode потерпеть неудачу.
Как получилось, что namenode может запустить что-то, чтобы обнаружить свой собственный сбой?
Кто посылает сердцебиение кому?
Где выполняется этот процесс?
Как он обнаруживает отказ namenode?
К кого он уведомит о переходе?
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 сервер обнаруживает его, и срок действия блокировки истекает, а другой резервный узел имени будет выбран в качестве активного узла имени.