Accumulo chooses the network interface to bind given the resolution of the hostname that you provide in the "hosts" files in ACCUMULO_CONF_DIR.

If you have "localhost" (the default) still in the files (e.g. masters, slaves), this presumably resolves to 127.0.0.1 which will result in Accumulo not accepting connections from your VM's network adapter.

A quick hack would be to put "0.0.0.0" in those files instead of "localhost". I think the Accumulo scripts only have the ability to override the bound interface for the Monitor, not all processes, to be 0.0.0.0. You could also use a hostname you define in /etc/hosts that binds to the proper interface instead (which would be a bit more like reality).

On 11/8/17 10:43 AM, Geoffry Roberts wrote:
All,

I have used Accumulo before, but a few versions ago (1.5.1), maybe something has changed.  Also, I've never before run it in a VM.

I am running Accumulo from withn a VM and attempting to connect from without.  I am getting a complaint regarding port 9997, which, within the VM, is listening on 127.0.0.1:9997 <http://127.0.0.1:9997>. Apparently, I need to get it onto 0.0.0.0:9997 <http://0.0.0.0:9997>. Am I correct?

Hadoop 2.6.2
Zookeeper 3.4.10
Accumulo 1.8.1
Thrift 0.10.0
Ubuntu 16.04 as a VBox guest
OSX 10.12.06 as the host

The HAZ is running on the VM.  From the CLI I can connect with the Zookeeper client and the Accumulo client.

I have ports 22, 50070, 50075, 2181, 9995, and 9997 forwarded.

From the host, I can browse the Hadoop and Accumulo web pages.  I can also connect using the Zookeeper client.  When I try to connect from Java,  I am getting a successful connect to 2181, but it complains about port 9997.

The VM is showing all forwarded ports as listening on 0.0.0.0 <http://0.0.0.0>:<port> except for 127.0.0.1:9997 <http://127.0.0.1:9997>.  As best I can tell Thrift needs the port.

My connect code:

String instance= properties.getProperty(ACCUMULO_INSTANCE);

String uri = properties.getProperty(ZOOKEEPER_URI);

Instance inst = new ZooKeeperInstance(instance, uri);

String user = properties.getProperty(USER);

String password = properties.getProperty(PASSWORD);

AuthenticationToken token = new PasswordToken(password);

conn = inst.getConnector(user, token);


Errors from Java:

2017-11-08 09:50:55 INFO  ZooKeeper:438 - Initiating client connection, connectString=192.168.50.101:2181 <http://192.168.50.101:2181> sessionTimeout=30000 watcher=org.apache.accumulo.fate.zookeeper.ZooSession$ZooWatcher@4b013c76

2017-11-08 09:50:55 INFO  ClientCnxn:1032 - Opening socket connection to server 192.168.50.101/192.168.50.101:2181 <http://192.168.50.101/192.168.50.101:2181>. Will not attempt to authenticate using SASL (unknown error)

2017-11-08 09:50:55 INFO  ClientCnxn:876 - Socket connection established to 192.168.50.101/192.168.50.101:2181 <http://192.168.50.101/192.168.50.101:2181>, initiating session

2017-11-08 09:50:55 INFO  ClientCnxn:1299 - Session establishment complete on server 192.168.50.101/192.168.50.101:2181 <http://192.168.50.101/192.168.50.101:2181>, sessionid = 0x15f9c185f8e0006, negotiated timeout = 30000

2017-11-08 09:50:58 WARN  ThriftTransportPool:539 - Server localhost:9997 (120000) had 20 failures in a short time period, will not complain anymore

...
It then continues to try to connect to no avail.


Thanks in advance

--
There are ways and there are ways,

Geoffry Roberts

Reply via email to