Get "ERROR: невозможно получить главный адрес из ZooKeeper; znode data == null" при использовании оболочки Hbase
Я установил Hadoop2.2.0 и Hbase0.98.0, и вот что я делаю:
$ ./bin/start-hbase.sh
$ ./bin/hbase shell
2.0.0-p353 :001 > list
то я получил следующее:
ERROR: Can't get master address from ZooKeeper; znode data == null
Почему я получаю эту ошибку? Другой вопрос:
мне нужно запустить ./sbin/start-dfs.sh
и ./sbin/start-yarn.sh
до запуска базы?
Кроме того, что используется ./sbin/start-dfs.sh
и ./sbin/start-yarn.sh
для?
Вот некоторые из моих conf doc:
HBase-sites.xml
<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://127.0.0.1:9000/hbase</value>
</property>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>/Users/apple/Documents/tools/hbase-tmpdir/hbase-data</value>
</property>
<property>
<name>hbase.zookeeper.quorum</name>
<value>localhost</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/Users/apple/Documents/tools/hbase-zookeeper/zookeeper</value>
</property>
</configuration>
ядро-sites.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
<description>The name of the default file system.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/Users/micmiu/tmp/hadoop</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>io.native.lib.available</name>
<value>false</value>
</property>
</configuration>
пряжа sites.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
</configuration>
Ответы
Ответ 1
Если вы просто хотите запустить HBase, не входя в управление Zookeeper для автономной HBase, удалите все блоки property
из hbase-site.xml
, за исключением блока свойств с именем hbase.rootdir
.
Теперь запустите /bin/start-hbase.sh
. HBase имеет свой собственный Zookeeper, который запускается, когда вы запускаете /bin/start-hbase.sh
, чего будет достаточно, если вы попытаетесь обойти вещи в первый раз. Позже вы можете установить конфигурации распределенного режима для Zookeeper.
Вам нужно только запустить /sbin/start-dfs.sh
для запуска HBase, так как значение hbase.rootdir
установлено на hdfs://127.0.0.1:9000/hbase
в вашем hbase-site.xml
. Если вы измените его на локальную файловую систему с помощью file:///some_location_on_local_filesystem
, тогда вам даже не нужно запускать /sbin/start-dfs.sh
.
hdfs://127.0.0.1:9000/hbase
говорит, что это место на HDFS и /sbin/start-dfs.sh
запускает namenode и datanode, который предоставляет базовый API для доступа к файловой системе HDFS. Чтобы узнать о Пряжах, просмотрите http://hadoop.apache.org/docs/r2.3.0/hadoop-yarn/hadoop-yarn-site/YARN.html.
Ответ 2
Это также может произойти, если vm или хост-компьютер укладываются спать, Zookeeper не останется в живых.
Перезапуск VM должен решить проблему.
Ответ 3
Вам нужно запустить zookeeper, а затем запустить Hbase-shell
{HBASE_HOME}/bin/hbase-daemons.sh {start,stop} zookeeper
и вы можете проверить это свойство в hbase-env.sh
# Tell HBase whether it should manage its own instance of Zookeeper or not.
export HBASE_MANAGES_ZK=false
Обратитесь к Источник - Zookeeper
Ответ 4
У меня была такая же ошибка. Брандмауэр Linux блокировал подключение. Можно тестировать порты через telnet. Быстрое исправление заключается в отключении брандмауэра и его устранении:
Полностью отключите брандмауэр на всех ваших узлах. Примечание. Эта команда не выдержит перезагрузки ваших машин.
systemctl stop firewalld
Долгосрочное исправление заключается в том, что вы должны настроить брандмауэр для разрешения портов hbase.
Обратите внимание: ваша версия hbase может использовать разные порты:
https://issues.apache.org/jira/browse/HBASE-10123
Ответ 5
Выход из оболочки Hbase довольно высокий, так что многие неправильные конфигурации вызовут это сообщение. Чтобы помочь вам отлаживать, было бы гораздо лучше заглянуть в журнал hbase
/var/log/hbase
чтобы выяснить основную причину проблемы.
У меня была такая же проблема. Для меня моя основная причина была связана с хаоп-км с конфликтующим номером порта с моим хозяином hbase. Оба они используют порт 16000, поэтому мой HMaster даже не начал работу при вызове оболочки hbase. После того, как я исправил это, моя hbase работала.
Опять же, конфликт портов kms не может быть вашей основной причиной. Настоятельно рекомендуем искать в /var/log/hbase, чтобы найти основную причину.
Ответ 6
Одним быстрым решением может быть перезагрузка hbase:
1) Stop-hbase.sh
2) Start-hbase.sh