Не удается подключиться к удаленному Hbase - PullRequest
1 голос
/ 24 августа 2011

У меня есть установка Hbase в распределенном режиме.База данных работает нормально, и я могу подключиться к базе данных, если мое веб-приложение (spring + datanucleus JDO) развернуто на той же машине, что и мастер Hbase.

Но если я запускаю то же самое веб-приложение на другомЯ не могу подключиться к серверу HBase.Нет никаких исключений вообще, и веб-приложение просто останавливается и после нескольких минут ожидания.Мои конфигурационные файлы следующие:

hbase-site.xml ->

<configuration>
  <property>
    <name>hbase.zookeeper.quorum</name>
    <value><IP>:2181</value>
    <description>The host and port that the HBase master runs at.
    </description>
  </property>
</configuration>

datanucleus.properties ->

javax.jdo.PersistenceManagerFactoryClass=org.datanucleus.api.jdo.JDOPersistenceManagerFactory
javax.jdo.option.ConnectionURL=hbase:
datanucleus.autoCreateSchema=true
datanucleus.autoCreateTables=true
datanucleus.autoCreateColumns=true
datanucleus.cache.level2.type=none

Что я здесь не так делаю.А также то, что все порты должны быть доступны для клиентских машин (так как на производстве мы открываем только необходимые порты).

Спасибо

Ответы [ 3 ]

1 голос
/ 17 июля 2012

HBase очень чувствителен к конфигурациям / etc / hosts. Мне пришлось правильно установить свойство привязок zeekeeper в hbase-site.xml, чтобы вышеупомянутый код Java работал ... Например: у меня былоустановить его следующим образом:

{property}
  {name}hbase.zookeeper.quorum{/name}
  {value}www.remoterg12.net{/value}      {!-- this is the externally accessible domain --}
{/property}
{property}
  {name}hbase.zookeeper.property.clientPort{/name}
  {value}2181{/value}              {!-- everything needs to be externally accessible --}
{/property}
{property}
  {name}hbase.master.info.port{/name}    {!--   http://www.remoterg12.net:60010/ --}
  {value}60010{/value}
{/property}
{property}
  {name}hbase.master.info.bindAddress{/name}
  {value}www.remoterg12.net{/value}      {!-- Use this to access the GUI console, --}
{/property}

Удаленный графический интерфейс пользователя даст вам четкое представление о Binding Domains. Например, свойство [HBase Master] в «Веб-консоли GUI» должно выглядеть примерно так:вот это: www.remoterg12.net:60010 (это не должно быть localhost: 60010) ... И ДА !! Мне пришлось поиграться с / etc / hosts просто так, как я не хотел испортитьсуществующие конфиги Apache: -)

0 голосов
/ 26 августа 2011

Обратите внимание, я не использую DataNucleus.Однако, когда мы отделили наш мастер от нашего клиента, нам пришлось настроить конфигурацию.

Configuration conf = HBaseConfiguration.create();
conf.set("hbase.zookeeper.quorum", SERVER);
conf.set("hbase.zookeeper.property.clientPort", PORT);

Вы можете посмотреть на свою веб-оболочку HBase (обычно: localhost: 60010 на мастер-боксе) и получить дамп ZK.,Проверьте, если вы даже делаете подключение к ZK.

0 голосов
/ 25 августа 2011

Одна удивительная вещь, о которой люди иногда не задумываются: часто большая часть кластера скрыта за коммутатором. Это часто имеет место, если все ip-адреса вашего компьютера равны 198. . . *. Если компьютер, с которого вы пытаетесь получить доступ к кластеру, не находится в той же сети, вы не сможете использовать hbase. Это связано с тем, что ваши соединения hbase являются прямыми от клиента к узлу, на котором размещены данные. Они не проходят через узел с двойным домом, в который вы привыкли входить.

Я не знаю хорошей работы, кроме как разместить ваше приложение на узле с двойным домом, который может видеть остальной мир. Или установить какой-то шлюз на этом узле. Это может быть проблемой для таких библиотек, как JDO

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...