get "ОШИБКА: невозможно получить главный адрес от 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 за?

Вот некоторые из моих документов:

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>

7 ответов

Решение

Если вы просто хотите запустить 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.

Это также может произойти, если виртуальный компьютер или хост-компьютер переведены в спящий режим,Zookeeper не останется в живых. Перезапуск ВМ должен решить проблему.

Вам нужно запустить 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

Одним из быстрых решений может быть перезагрузка hbase:

1) Stop-hbase.sh
2) Start-hbase.sh

У меня была точно такая же ошибка. Брандмауэр Linux блокировал подключение. Можно проверить порты через telnet. Быстрое решение состоит в том, чтобы отключить брандмауэр и посмотреть, исправит ли он это:

Полностью отключите брандмауэр на всех ваших узлах. Примечание: эта команда не переживет перезагрузку ваших машин.

systemctl stop firewalld

Долгосрочное исправление состоит в том, что вы должны настроить брандмауэр для разрешения портов hbase.

Обратите внимание, что ваша версия hbase может использовать разные порты: https://issues.apache.org/jira/browse/HBASE-10123

В моем случае с той же ошибкой при запуске hbase - я не включил свойства zookeeper в hbase-site.xml и все еще получаю вышеуказанные сообщения об ошибках (как описано в руководстве по Apache hbase, необходимы только два свойства: rootdir и распределенный)).

Я также могу проследить мой вывод команды jps, который обнаруживает, что действительно мой сервер Hregion и Hmaster не были должным образом настроены и работают.

После остановки и запуска (вроде сброса) эти два были запущены и я могу запустить hbase правильно.

Если это происходит в VMWare или виртуальной коробке, перезапустите Cloudera по команде init1 пожалуйста, проверьте, что у вас есть права суперпользователя и повторите попытку, это поможет:)

Hbase Shell

Вывод из оболочки Hbase находится на достаточно высоком уровне, что может привести к неправильной настройке этого сообщения. Чтобы помочь себе в отладке, было бы намного лучше заглянуть в журнал hbase

/var/log/hbase 

выяснить причину проблемы.

У меня тоже была такая же проблема. Для меня основная причина была в том, что у hadoop-kms был конфликтующий номер порта с моим hbase-master. Оба они используют порт 16000, поэтому мой HMaster даже не запускался, когда я запускаю оболочку hbase. После того, как я это исправил, мой hbase заработал.

Опять же, конфликт порта KMS может не быть вашей основной причиной. Настоятельно рекомендуем заглянуть в /var/log/hbase, чтобы найти основную причину.

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