Подключение внешнего экземпляра Accumulo и java

Я пытаюсь подключиться к виртуальной машине с помощью Accumulo. Проблема в том, что я не могу подключить его к Java. Я вижу веб-страницу, которую выдает Apache, но не могу заставить ее работать с кодом. Я думаю, что это проблема нехватки знаний, а не реальная проблема, но я не могу найти документацию по этому поводу. Во всех примерах в качестве имени зоосервера используется localhost, у меня это явно не работает.

Итак, вот мой код:

  String instanceName = "accumulo-02"
  String zooServers = "192.168.56.5, accumulo-02.localdomain:9997"
  ZooKeeperInstance inst = new ZooKeeperInstance(instanceName, zooServers)
  ....

Остальное не важно, потому что я не могу подключиться к серверу.

Это также действительно написано в Groovy. Я только что изменил свой код для парней из Java.

Изменить: программа находится на моем компьютере. Accumulo, Hadoop и Zookeeper находятся на виртуальной машине. IP-адрес — это этот IP-адрес, а имя пользователя — это имя. В конфигурации accumulo «accumulo-02» — это домен для мастеров, слейвов и т. д.


person Mitchell Ingram    schedule 19.03.2013    source источник
comment
Клиент работает на хосте виртуальной машины? Настроен ли какой-либо брандмауэр между хостом и гостем?   -  person Scott    schedule 19.03.2013
comment
Клиент находится на моем компьютере. Accumulo, Zookeeper и Hadoop находятся на виртуальной машине. Но нет, брандмауэра нет.   -  person Mitchell Ingram    schedule 19.03.2013
comment
Это больше похоже на сетевое взаимодействие, чем на Accumulo. Можете ли вы пропинговать 192.168.56.5 с хоста? Возможно, имя хоста accumulo-02.localdomain не разрешается. Вы можете попробовать использовать IP-адрес вместо полного доменного имени.   -  person Scott    schedule 19.03.2013
comment
Да, я могу пропинговать 192.168.56.5. Я также могу просмотреть веб-страницу, которая accumulo запускается через порт 50095. Это не вина accumulo. Я что-то туплю. Я не уверен, что это имя экземпляра, Zookeeper или что-то еще. По сути, если я назову его тем, чем он является на самом деле (т. е. Accumulo-02), он ищет внутри себя accumulo. Итак, мне нужно сказать, чтобы он выглядел внешне. Проблема в том, что тогда он ищет имя владельца зоопарка 192.168.56.5, которого также не существует, потому что он называется accumulo-02. Итак, у меня проблема с вращающейся дверью.   -  person Mitchell Ingram    schedule 19.03.2013
comment
Имя экземпляра должно соответствовать тому, что вы назвали своей базой данных (это не имя хоста или IP-адрес). Zookeepers должен представлять собой список имен хостов. На самом деле, я бы ожидал, что установка с одним узлом, подобная вашей, будет иметь только одного зоопарка (IP-адрес). У вас есть правильное имя экземпляра? Я не понимаю вашего комментария про вращающуюся дверь...   -  person Scott    schedule 19.03.2013
comment
Итак, имя экземпляра правильное. Я имею в виду, что, поскольку зоопарк называется accumulo-02, он смотрит внутрь. Если я скажу ему искать 192.168.56.5 в качестве имени хоста, он просматривает его и говорит: «Что теперь?» потому что на самом деле нет зоопарка, названного IP.   -  person Mitchell Ingram    schedule 19.03.2013
comment
Получил работу. Я добавил IP-адрес в /etc/hosts под accumulo-02. Затем используйте accumulo-02 для имени экземпляра и для ZooKeeper.   -  person Mitchell Ingram    schedule 19.03.2013
comment
ОК, хорошая сделка. Просто из любопытства... accumulo-02 - это имя хоста вашей виртуальной машины (как указано в /etc/hostname)? Я предполагаю, что это отличается от имени хоста виртуальной машины. Я удивлен, что это не разрешилось без добавления записи в /etc/hosts.   -  person Scott    schedule 19.03.2013
comment
ВМ назвали accumulo-02. Я не знаю, почему это не разрешилось. Очень странно.   -  person Mitchell Ingram    schedule 19.03.2013


Ответы (1)


Чтобы правильно указать список узлов Apache ZooKeeper при подключении к Apache Accumulo с ZooKeeperInstance, серверы zooServers должны быть указаны как:< /эм>

  1. разделенный запятыми список host:port, на котором ZooKeeper уже настроен и работает, без пробелов.
  2. Убедитесь, что вы используете порт client для ZooKeeper, а не TServer. (Порт 2181 — это клиентский порт по умолчанию для ZooKeeper. Порт 9997 — это клиентский порт по умолчанию для TServers.)
  3. Если вы используете ZooKeeper на порту по умолчанию (2181), вы можете опустить часть :port, оставив только разделенный запятыми список хостов, или вы можете комбинировать их, если у вас есть некоторые на нестандартном порту, а некоторые на стандартном порту, как в "proxyhost,proxyhost:2182, Thirdhost:2181".
  4. Не имеет значения, используете ли вы IP-адрес или имя хоста, если все, что вы укажете, может быть достигнуто от клиента, и порт открыт и не заблокирован брандмауэром.

См. комментарий JavaDoc к конструктору здесь.

person Christopher    schedule 21.03.2013
comment
Эй, я думаю, что все указал правильно. Но до сих пор я не могу найти проблему. Пожалуйста, посмотрите на мою проблему здесь. stackoverflow.com/questions/47746720/ - person Saif Ali Khan; 11.12.2017