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, чтобы найти основную причину.