Hello,
I have an issue when trying to run geomesa-hbase plugin
in geoserver:
I have inserted all the jars inside the
geoserver/WEB-INF/lib directory as the guide says, and
I was able to ingest data through geomesa-hbase utility,
but I had problems in geoserver gui:
the first problem that I resolved was that geomesa server
was not able to read from s3 filesystem (used to read the
hbase dynamic library path in order to use the distribuited
runtime library for coprocessing).
I resolved by adding the following library:
hadoop-aws-2.8.4.jar
(no info about this in docs, so I don't know if it was
the right way).
Now I am not able to resolve the following stack trace
error:
java.lang.RuntimeException: Error getting FeatureType,
this should never happen!
at org.geoserver.wms.map.GetMapKvpRequestReader.checkStyle(GetMapKvpRequestReader.java:1076)
at org.geoserver.wms.map.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:496)
at org.geoserver.wms.map.GetMapKvpRequestReader.read(GetMapKvpRequestReader.java:87)
at org.geoserver.ows.Dispatcher.parseRequestKVP(Dispatcher.java:1531)
at org.geoserver.ows.Dispatcher.dispatch(Dispatcher.java:690)
at org.geoserver.ows.Dispatcher.handleRequestInternal(Dispatcher.java:260)
...
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.io.IOException
at org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:690)
at org.geoserver.catalog.ResourcePool.getCacheableFeatureType(ResourcePool.java:963)
at org.geoserver.catalog.ResourcePool.tryGetFeatureType(ResourcePool.java:950)
at org.geoserver.catalog.ResourcePool.getFeatureType(ResourcePool.java:944)
at org.geoserver.catalog.ResourcePool.getFeatureType(ResourcePool.java:931)
at org.geoserver.catalog.impl.FeatureTypeInfoImpl.getFeatureType(FeatureTypeInfoImpl.java:121)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native
Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.geoserver.catalog.impl.ModificationProxy.invoke(ModificationProxy.java:147)
at com.sun.proxy.$Proxy124.getFeatureType(Unknown
Source)
at org.geoserver.security.decorators.DecoratingFeatureTypeInfo.getFeatureType(DecoratingFeatureTypeInfo.java:97)
at org.geoserver.security.decorators.SecuredFeatureTypeInfo.getFeatureType(SecuredFeatureTypeInfo.java:54)
at org.geoserver.wms.map.GetMapKvpRequestReader.checkStyle(GetMapKvpRequestReader.java:1072)
... 101 more
Caused by: java.util.concurrent.CompletionException:
java.io.IOException: java.lang.reflect.InvocationTargetException
at com.github.benmanes.caffeine.cache.UnboundedLocalCache$UnboundedLocalLoadingCache.lambda$new$0(UnboundedLocalCache.java:929)
at com.github.benmanes.caffeine.cache.UnboundedLocalCache.lambda$computeIfAbsent$2(UnboundedLocalCache.java:235)
at java.util.concurrent.ConcurrentHashMap.computeIfAbsent(ConcurrentHashMap.java:1660)
at com.github.benmanes.caffeine.cache.UnboundedLocalCache.computeIfAbsent(UnboundedLocalCache.java:231)
at com.github.benmanes.caffeine.cache.LocalCache.computeIfAbsent(LocalCache.java:113)
at com.github.benmanes.caffeine.cache.LocalLoadingCache.get(LocalLoadingCache.java:65)
at org.locationtech.geomesa.hbase.data.HBaseConnectionPool$.getConnection(HBaseConnectionPool.scala:86)
at org.locationtech.geomesa.hbase.data.HBaseDataStoreFactory.createDataStore(HBaseDataStoreFactory.scala:44)
at org.locationtech.geomesa.hbase.data.HBaseDataStoreFactory.createDataStore(HBaseDataStoreFactory.scala:34)
at org.vfny.geoserver.util.DataStoreUtils.getDataAccess(DataStoreUtils.java:90)
at org.geoserver.catalog.ResourcePool.getDataStore(ResourcePool.java:650)
... 115 more
Caused by: java.io.IOException: java.lang.reflect.InvocationTargetException
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:240)
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218)
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:119)
at org.apache.hadoop.hbase.client.HBaseAdmin.checkHBaseAvailable(HBaseAdmin.java:3312)
at org.locationtech.geomesa.hbase.data.HBaseConnectionPool$$anon$2$$anon$4.run(HBaseConnectionPool.scala:57)
at org.locationtech.geomesa.hbase.data.HBaseConnectionPool$$anon$2$$anon$4.run(HBaseConnectionPool.scala:53)
at org.locationtech.geomesa.hbase.data.HBaseConnectionPool$$anon$2.load(HBaseConnectionPool.scala:64)
at org.locationtech.geomesa.hbase.data.HBaseConnectionPool$$anon$2.load(HBaseConnectionPool.scala:50)
at com.github.benmanes.caffeine.cache.UnboundedLocalCache$UnboundedLocalLoadingCache.lambda$new$0(UnboundedLocalCache.java:922)
... 125 more
Caused by: java.lang.reflect.InvocationTargetException
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238)
... 133 more
Caused by: java.lang.NoClassDefFoundError: Could
not initialize class org.apache.hadoop.hbase.protobuf.ProtobufUtil
at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64)
at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:75)
at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:947)
at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:723)
... 138 more
This error was generated from
geomesa-hbase-gs-plugin_2.11-2.0.2-shaded.jar, anyway
the ProtobufUtil was present inside the jar and classpath
was acquired by tomcat server .
I have already tried to:
- Compile the plugin by changin the hbase-client version
- Run the tomcat as root (no folder permissions issues)
- Use 1.x geomesa-hbase-gs-plugin : it seems to work but
cannot read data ingested with newer geomesa-hbase
utility version, and I would like to use newer version)
Any suggestion about this problem?
Info about the environment:
Hadoop |
Hadoop 2.8.3-amzn-1 |
HBase |
HBase 1.4.2 |
GeoMesa |
Geomesa 2.0.2 |
GeoServer |
v2.13.1 |
GeoMesa Plugin |
gs-plugin_2.11-2.0.2-shaded.jar
|
Thanks very much,
Best Regards,
Gaetano