Could not instantiate HBaseStoreManager

254 views
Skip to first unread message

b...@siftsec.com

unread,
Dec 10, 2015, 2:43:38 PM12/10/15
to Aurelius
I'm trying to open a TitanGraph in a test case but I get the error below. Is this because of the hbase version? I found this discussion that says URLClassLoaders are not always the source of the error. Has this been patched in Titan 1.0.0?

https://github.com/thinkaurelius/titan/issues/785

Test:
    @Test
   
public void test() {
       
def metaprop = "../etl/conf/metaGraph.properties"
        println
'\n\n\topening TitanGraph from ' + metaprop + '\n'
       
TitanFactory.open(metaprop)
       
Composer.main('-i')
   
}

Result:
Running com.siftsec.metis.MetisTest

        opening
TitanGraph from ../etl/conf/metaGraph.properties

SLF4J
: Class path contains multiple SLF4J bindings.
SLF4J
: Found binding in [jar:file:/home/ben/.m2/repository/org/slf4j/slf4j-log4j12/1.7.12/slf4j-log4j12-1.7.12.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J
: Found binding in [jar:file:/home/ben/.m2/repository/ch/qos/logback/logback-classic/1.1.2/logback-classic-1.1.2.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J
: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J
: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
19:39:28,992  INFO HBaseCompatLoader:43 - The HBase version 1.1.2 is not explicitly supported by Titan.  Loading Titan's compatibility layer for its most recent supported HBase version (1.0)
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 0.587 sec <<< FAILURE! - in com.siftsec.metis.MetisTest
testIndices(com.siftsec.metis.MetisTest)  Time elapsed: 0.382 sec  <<< ERROR!
java.lang.IllegalArgumentException: Could not instantiate implementation: com.thinkaurelius.titan.diskstorage.hbase.HBaseStoreManager
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:264)
        at com.thinkaurelius.titan.diskstorage.hbase.HBaseCompatLoader.getCompat(HBaseCompatLoader.java:54)
        at com.thinkaurelius.titan.diskstorage.hbase.HBaseStoreManager.<init>(HBaseStoreManager.java:282)
        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:422)
        at com.thinkaurelius.titan.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:44)
        at com.thinkaurelius.titan.diskstorage.Backend.getImplementationClass(Backend.java:473)
        at com.thinkaurelius.titan.diskstorage.Backend.getStorageManager(Backend.java:407)
        at com.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.<init>(GraphDatabaseConfiguration.java:1320)
        at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:94)
        at com.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:62)
        at com.thinkaurelius.titan.core.TitanFactory$open.call(Unknown Source)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at com.siftsec.metis.MetisTest.testIndices(MetisTest.groovy:47)

../etl/conf/metaGraph.properties
storage.backend = hbase
storage
.hbase.table = metagraph
storage
.hostname = localhost

index
.search.backend = elasticsearch
index
.search.index-name = metagraph
index
.search.hostname = localhost
index
.search.elasticsearch.client-only = true

attributes
.custom.attribute1.attribute-class=java.lang.StringBuffer
attributes
.custom.attribute1.serializer-class=pluradj.titan.graphdb.database.serialize.attribute.StringBufferSerializer
attributes
.custom.attribute2.attribute-class=java.util.HashMap
attributes
.custom.attribute2.serializer-class=pluradj.titan.graphdb.database.serialize.attribute.HashMapSerializer
attributes
.custom.attribute3.attribute-class=java.util.ArrayList
attributes
.custom.attribute3.serializer-class=pluradj.titan.graphdb.database.serialize.attribute.ArrayListSerializer

where serializers are from the jar produced by https://github.com/laxatives/titan-attribute-serializer

Quick question: do I really need to have these custom serializers? They are all exactly the same and just use the AttributeSerializer to cast to the appropriate object.





b...@siftsec.com

unread,
Dec 10, 2015, 3:00:27 PM12/10/15
to Aurelius
Resolved by reverting to 0.98.16-hadoop2

Still curious about that serializer question though.

b...@siftsec.com

unread,
Dec 11, 2015, 6:00:18 PM12/11/15
to Aurelius
I'm actually still getting errors of all varieties using different versions of hbase-client. Which version is recommended?

If I specify no version, I get errors indicating hbase-master is not running. If I specify 1.1.2, 1.0.2, or 1.0.1 I get different ClassNotFound errors. 0.98.x-hadoop2 runs for awhile, but produces a hadoop.io deprecated message before permanently hanging.

b...@siftsec.com

unread,
Dec 11, 2015, 6:23:22 PM12/11/15
to Aurelius
So I have no explicit calls to hbase in this repo, but if I remove hbase-client from the pom file, execution yields the following error:

java.lang.NoClassDefFoundError: org/apache/hadoop/hbase/MasterNotRunningException

        at java
.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java
.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun
.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java
.lang.ClassLoader.loadClass(ClassLoader.java:357)
        at java
.lang.Class.forName0(Native Method)
        at java
.lang.Class.forName(Class.java:264)

        at com
.thinkaurelius.titan.util.system.ConfigurationUtil.instantiate(ConfigurationUtil.java:42)

        at com
.thinkaurelius.titan.diskstorage.Backend.getImplementationClass(Backend.java:473)
        at com
.thinkaurelius.titan.diskstorage.Backend.getStorageManager(Backend.java:407)
        at com
.thinkaurelius.titan.graphdb.configuration.GraphDatabaseConfiguration.<init>(GraphDatabaseConfiguration.java:1320)
        at com
.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:94)
        at com
.thinkaurelius.titan.core.TitanFactory.open(TitanFactory.java:62)

        at com
.thinkaurelius.titan.core.TitanFactory$open$0.call(Unknown Source)

        at org
.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)

        at com
.siftsec.metis.Indexer.getTarget(Indexer.groovy:84)
        at com
.siftsec.metis.Indexer.resetTarget(Indexer.groovy:105)
        at com
.siftsec.metis.Indexer$resetTarget.call(Unknown Source)

        at org
.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)

        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
        at com
.siftsec.metis.Composer.main(Composer.groovy:61)
        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:497)
        at org
.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:93)
        at groovy
.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
        at org
.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.invoke(StaticMetaMethodSite.java:46)
        at org
.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.call(StaticMetaMethodSite.java:91)

        at org
.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:48)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:113)
        at org
.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)

        at com
.siftsec.metis.MetisTest.testTargetReset(MetisTest.groovy:52)

Stephen Mallette

unread,
Dec 14, 2015, 5:41:02 AM12/14/15
to Aurelius
Here is the version compatibility chart for titan:


--
You received this message because you are subscribed to the Google Groups "Aurelius" group.
To unsubscribe from this group and stop receiving emails from it, send an email to aureliusgraph...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/aureliusgraphs/7793c354-47d9-4b1e-a841-1fa32a2daca8%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Rajam S

unread,
Sep 7, 2017, 9:01:51 AM9/7/17
to Aurelius
Hi,

I get the same error in the line TitanFactory.open(conf).

ERROR: java.lang.IllegalArgumentException: Could not instantiate implementation: com.thinkaurelius.titan.diskstorage.hbase.HBaseStoreManager

I am trying to port my already existing Titan-java code to HDP2.4 platform. I am using storage backend as hbase. My problem is, hbase 1.1.x, which came with HDP 2.4, is not compatible with titan. Can you please suggest how to port my titan code to HDP2.4 platform. I am using titan 1.0.0 right now. 

Any help would be greatly appreciated.

Thanks.
Rajam S
Reply all
Reply to author
Forward
0 new messages