Аварийное переключение не срабатывает при сбое активного имени узла

Я использую Apache Hadoop-2.7.1 на кластере, который состоит из трех узлов

nn1 главное имя узла

nn2 (узел второго имени)

dn1 (узел данных)

я настроил высокую доступность, а nameservice и zookeeper работают на всех трех узлах
и запускается на nn2 в качестве лидера

Прежде всего я должен отметить, что nn1 активен, а nn2 находится в режиме ожидания

когда я убью имя узла на nn1

, nn2 становится активным, поэтому происходит автоматическое переключение при сбое

но со следующим сценарием (который я применяю, когда nn1 активен, а nn2 находится в режиме ожидания) и который:

когда я выключаю nn1 (nn1 весь сбой)

nn2 остается в режиме ожидания и не становится активным, поэтому автоматическое переключение не происходит

с заметной ошибкой в ​​логе

Unable to trigger a roll of the active NN(which was nn1 and now it is closed ofcourse)

не должно происходить автоматического переключения при сбое с двумя существующими узлами журнала на nn2 и dn1

а какие могут быть возможные причины?

2 ответа

Решение

Моя проблема была решена путем изменения dfs.ha.fencing.methods в hdfs-site.xml

включить не только ssh-фехтование, но и другой метод фехтования

возвращает всегда правда

<name>dfs.ha.fencing.methods</name>
<value>sshfence
       shell(/bin/true)
</value>

автоматическое переключение при сбое завершится неудачей, если ограждение завершится неудачно, я указал две опции, вторая ( shell(/bin/true)) всегда возвращает успех. Это сделано для обходных случаев, когда основной компьютер NameNode выходит из строя и метод ssh завершится сбоем, и отказоустойчивость не будет выполнена. Мы хотим избежать этого, поэтому вторым вариантом будет отказоустойчивость в любом случае

вы можете найти подробности здесь https://www.packtpub.com/books/content/setting-namenode-ha

Похоже, это связано с ошибкой в sshfenceМетод ограждения, идентифицированный как HADOOP-15684, исправлен в 3.0.4, 3.1.2 и 3.2.0, а также перенесен в 2.10.0 через HDFS-14397 .

Другие вопросы по тегам