Get "ERROR: невозможно получить главный адрес из ZooKeeper; znode data == null" при использовании оболочки Hbase - программирование
Подтвердить что ты не робот

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>
4b9b3361

Ответ 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