-
Notifications
You must be signed in to change notification settings - Fork 2.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
The HBase binding does not report a clear error message on encountering version incompatibility #343
Comments
This one looks like a JVM error. class version 51 is Java 7, so a java 6 JVM will report this error.
We shouldn't require any source changes when folks want to run against different HBase versions we list as supported. This sounds like we need to break out the 0.94 / 0.98 clients into their own modules ala #272 . Any objection to listing this as a known issue for #266 and fixing for next release? |
Sounds good to me.
|
Is this still an issue now that the hbase bindings are broken out by major version? |
Closing since most likely isn't an issue with major version HBase bindings. |
The HBase binding in YCSB 0.2.0 when built with the shipped pom.xml
(which specifies HBase 1.0.0) does not report an informative error
message when run against a cluster running an earlier version of HBase
(0.94 or 0.98):
YCSB Client 0.1
Command line: -db com.yahoo.ycsb.db.HBaseClient -p columnfamily=cf -p workload=com.yahoo.ycsb.workloads.CoreWorkload -P workloads/workloada -p operationcount=1000000 -s -t
Loading workload...
Starting test.
Exception in thread "main" java.lang.UnsupportedClassVersionError: org/apache/hadoop/hbase/HBaseConfiguration : Unsupported major.minor version 51.0
at java.lang.ClassLoader.defineClass1(Native Method)
at java.lang.ClassLoader.defineClassCond(ClassLoader.java:631)
at java.lang.ClassLoader.defineClass(ClassLoader.java:615)
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:141)
at java.net.URLClassLoader.defineClass(URLClassLoader.java:283)
at java.net.URLClassLoader.access$000(URLClassLoader.java:58)
at java.net.URLClassLoader$1.run(URLClassLoader.java:197)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:190)
at java.lang.ClassLoader.loadClass(ClassLoader.java:306)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301)
at java.lang.ClassLoader.loadClass(ClassLoader.java:247)
at com.yahoo.ycsb.db.HBaseClient.(HBaseClient.java:55)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
at java.lang.Class.newInstance0(Class.java:355)
at java.lang.Class.newInstance(Class.java:308)
at com.yahoo.ycsb.DBFactory.newDB(DBFactory.java:39)
at com.yahoo.ycsb.Client.main(Client.java:737)
In some cases, there is no specific message, but if status reporting
is turned on, there are zero transactions reported:
15/07/02 19:16:58 INFO zookeeper.ClientCnxn: Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x14e51b1760a000c, negotiated timeout = 40000
2015-07-02 19:17:08:588 10 sec: 0 operations;
2015-07-02 19:17:18:588 20 sec: 0 operations;
2015-07-03 10:36:46:913 0 sec: 0 operations;
Exception in thread "Thread-2" java.lang.NoSuchFieldError: HBASE_CLIENT_RPC_MAXATTEMPTS
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionKey.(HConnectionManager.java:446)
at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:199)
at org.apache.hadoop.hbase.client.HTable.(HTable.java:151)
at org.apache.hadoop.hbase.client.HTable.(HTable.java:129)
at com.yahoo.ycsb.db.HBaseClient.getHTable(HBaseClient.java:128)
at com.yahoo.ycsb.db.HBaseClient.read(HBaseClient.java:153)
at com.yahoo.ycsb.DBWrapper.read(DBWrapper.java:92)
at com.yahoo.ycsb.workloads.CoreWorkload.doTransactionRead(CoreWorkload.java:650)
at com.yahoo.ycsb.workloads.CoreWorkload.doTransaction(CoreWorkload.java:566)
at com.yahoo.ycsb.ClientThread.run(Client.java:235)
2015-07-03 10:36:56:908 10 sec: 0 operations;
[OVERALL], RunTime(ms), 130.0
[OVERALL], Throughput(ops/sec), 0.0
Similarly, if the binding is built with HBase 0.94 and YCSB is run
against a newer version, the following message may be reported:
2015-07-03 10:36:46:913 0 sec: 0 operations;
Exception in thread "Thread-2" java.lang.NoSuchFieldError: HBASE_CLIENT_RPC_MAXATTEMPTS
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionKey.(HConnectionManager.java:446)
at org.apache.hadoop.hbase.client.HConnectionManager.getConnection(HConnectionManager.java:199)
at org.apache.hadoop.hbase.client.HTable.(HTable.java:151)
at org.apache.hadoop.hbase.client.HTable.(HTable.java:129)
at com.yahoo.ycsb.db.HBaseClient.getHTable(HBaseClient.java:128)
at com.yahoo.ycsb.db.HBaseClient.read(HBaseClient.java:153)
at com.yahoo.ycsb.DBWrapper.read(DBWrapper.java:92)
at com.yahoo.ycsb.workloads.CoreWorkload.doTransactionRead(CoreWorkload.java:650)
at com.yahoo.ycsb.workloads.CoreWorkload.doTransaction(CoreWorkload.java:566)
at com.yahoo.ycsb.ClientThread.run(Client.java:235)
2015-07-03 10:36:56:908 10 sec: 0 operations;
[OVERALL], RunTime(ms), 130.0
[OVERALL], Throughput(ops/sec), 0.0
In addition, it would be helpful to update the README to provide
information on the changes necessary to update the HBase version
before invoking maven to build the package, for instance, hbase-client
may need to be changed to hbase, and the slf4j version may need to be
reverted to manage compatibility with earlier HBase versions.
Apart from these issues, the HBase binding does work properly once the
build HBase version is consistent with the version running on the
cluster.
The text was updated successfully, but these errors were encountered: