Reputation: 11
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
Reputation: 11
So this has been resolved. It was a configuration issue with the GeoMesa install. Thank you.
-Keith
Upvotes: 0
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