keith
keith

Reputation: 11

Geomesa not connecting

I have a full accumulo (2.1.1)/geomesa (2.13) install and a VDI installed on the same server. It has the following configured (but only using the first zookeeper)

zookeeper1 192.168.2.31
zookeeper2 192.168.2.32
zookeeper3 192.168.2.33
namenode   192.168.2.34
datanode1  192.168.2.35
datanode2  192.168.3.36
acc-master 192.168.2.37
acc-tserver 192.168.2.38

My connection is trying to be established with this:

Map<String, String> parameters = new HashMap<>();
parameters.put("accumulo.instance.name", "myInstance");
parameters.put("accumulo.zookeepers", "127.0.0.1:9997");
parameters.put("accumulo.user", "keith");
parameters.put("accumulo.password", "accumulo2.1");
parameters.put("accumulo.catalog", "myNamespace.keithCatalog");
try {
    store = DataStoreFinder.getDataStore(parameters);
} catch (IOException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
}

When I try to connect, it never returns. No errors, nothing. Just jams.

The schema was created with this:

/opt/geomesa-accumulo_2.12-4.0.1/bin/geomesa-accumulo create-schema -c myNamespace.keithCatalog -s source:String,sensor:String,type:String,date:Date -f testSchema

I can see the test schema from the acc-master box by this:

sudo /opt/geomesa-accumulo_2.12-4.0.1/bin/geomesa-accumulo describe-schema -c myNamespace.keithCalog -f testSchema
INFO  Describing attributes of feature 'testSchema'
source | String
sensor | String
type   | String
date   | Date


User data:
  geomesa.index.dtg    | date
  geomesa.indices      | id:4:3:
  geomesa.stats.enable | true

If I leave out the catalog it naturally errors. If I put a wrong catalog in there it still never returns.

In my code if I get the available datastores via DataStoreFinder.getAllDataStores(), I get this so it looks like it is there:

org.locationtech.geomesa.accumulo.data.AccumuloDataStoreFactory@18e36d14
 Info:
  accumulo.instance.name=java.lang.String Accumulo Instance Name
  accumulo.zookeepers=java.lang.String Zookeepers
  accumulo.catalog=java.lang.String REQUIRED Accumulo catalog table name, including Accumulo namespace (if any) separated with a period
  accumulo.user=java.lang.String Accumulo user
  accumulo.password=java.lang.String Accumulo password
  accumulo.keytab.path=java.lang.String Path to keytab file
  geomesa.query.threads=java.lang.Integer The number of threads to use per query
  accumulo.query.record-threads=java.lang.Integer The number of threads to use for record retrieval
  accumulo.write.threads=java.lang.Integer The number of threads to use for writing records
  geomesa.query.timeout=java.lang.String The max time a query will be allowed to run before being killed, e.g. '60 seconds'
  accumulo.zookeepers.timeout=java.lang.String The timeout used for connections to Zookeeper
  accumulo.remote.arrow.enable=java.lang.Boolean Process Arrow encoding in Accumulo tablets servers as a distributed call
  accumulo.remote.bin.enable=java.lang.Boolean Process binary encoding in Accumulo tablets servers as a distributed call
  accumulo.remote.density.enable=java.lang.Boolean Process heatmap encoding in Accumulo tablets servers as a distributed call
  accumulo.remote.stats.enable=java.lang.Boolean Process statistical calculations in Accumulo tablets servers as a distributed call
  geomesa.stats.enable=java.lang.Boolean Generate and persist data statistics for new feature types
  geomesa.query.audit=java.lang.Boolean Audit queries being run
  geomesa.query.loose-bounding-box=java.lang.Boolean Use loose bounding boxes - queries will be faster but may return extraneous results
  geomesa.partition.scan.parallel=java.lang.Boolean Run scans in parallel for partitioned stores
  geomesa.security.auths=java.lang.String Super-set of authorizations that will be used for queries. The actual authorizations might differ, depending on the authorizations provider, but will be outside this set. Comma-delimited.
  geomesa.security.auths.force-empty=java.lang.Boolean Default to using no authorizations during queries, instead of using the connection user's authorizations
  namespace=java.lang.String Namespace
  password=java.lang.String 

Any help would be greatly appreciated.

Expected to get data store back

Upvotes: 0

Views: 66

Answers (2)

keith
keith

Reputation: 11

So this has been resolved. It was a configuration issue with the GeoMesa install. Thank you.

-Keith

Upvotes: 0

Emilio Lahr-Vivaz
Emilio Lahr-Vivaz

Reputation: 1624

I believe your data store parameters are wrong, and it is trying to connect to zookeeper and hanging. When using the geomesa-accumulo command line tools, GeoMesa is likely picking up the accumulo-client.properties file from your Accumulo install, which is letting it connect. You can simply place that file on the classpath of your application, instead of passing in the instance/zookeepers/user/password. Otherwise, you'll need to fix the data store parameters. In particular, the 127.0.0.1:9997 looks incorrect, as you said that zookeeper is on 192.168.2.31,32, and 33, and zookeeper usually listens on port 2181 (not 9997, which is the port Accumulo uses to communicate with tablet servers).

Upvotes: 0

Related Questions