Hi,
When I use C++ to call 0.92 HBase java APIs, it failed to log in. I tried
similar operation by directly using Java Api, and they succeed.
So, is there any difference between using java api through JNI with directly
calling the same java api??
Can anyone help me out? Thank you very much.
Here is the call stack when using jni to call java api:
java.lang.RuntimeException: java.io.IOException: failure to login
at
org.apache.hadoop.hbase.client.HTableFactory.createHTableInterface(HTableFactory.java:38)
at
org.apache.hadoop.hbase.client.HTablePool.createHTable(HTablePool.java:268)
at
org.apache.hadoop.hbase.client.HTablePool.findOrCreateTable(HTablePool.java:198)
at
org.apache.hadoop.hbase.client.HTablePool.getTable(HTablePool.java:173)
at
org.apache.hadoop.hbase.client.HTablePool.getTable(HTablePool.java:216)
at
com.microstrategy.database.hbase.HBaseWrapper.Execute(HBaseWrapper.java:151)
Caused by: java.io.IOException: failure to login
at
org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:452)
at
org.apache.hadoop.security.UserGroupInformation.getCurrentUser(UserGroupInformation.java:414)
at sun.reflect.GeneratedMethodAccessor2.invoke(Unknown Source)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.apache.hadoop.hbase.util.Methods.call(Methods.java:37)
at org.apache.hadoop.hbase.security.User.call(User.java:586)
at
org.apache.hadoop.hbase.security.User.callStatic(User.java:576)
at
org.apache.hadoop.hbase.security.User.access$400(User.java:50)
at
org.apache.hadoop.hbase.security.User$SecureHadoopUser.<init>(User.java:393)
at
org.apache.hadoop.hbase.security.User$SecureHadoopUser.<init>(User.java:388)
at
org.apache.hadoop.hbase.security.User.getCurrent(User.java:139)
at
org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:280)
at
org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:332)
at
org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:236)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1278)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1235)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:1222)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:918)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:814)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.relocateRegion(HConnectionManager.java:788)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:1024)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:818)
at
org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:782)
at
org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:249)
at org.apache.hadoop.hbase.client.HTable.<init>(HTable.java:213)
at
org.apache.hadoop.hbase.client.HTableFactory.createHTableInterface(HTableFactory.java:36)
... 5 more
Caused by: javax.security.auth.login.LoginException: unable to find LoginModule
class: org/apache/hadoop/security/UserGroupInformation$HadoopLoginModule
at
javax.security.auth.login.LoginContext.invoke(LoginContext.java:808)
at
javax.security.auth.login.LoginContext.access$000(LoginContext.java:186)
at
javax.security.auth.login.LoginContext$5.run(LoginContext.java:706)
at java.security.AccessController.doPrivileged(Native Method)
at
javax.security.auth.login.LoginContext.invokeCreatorPriv(LoginContext.java:703)
at
javax.security.auth.login.LoginContext.login(LoginContext.java:575)
at
org.apache.hadoop.security.UserGroupInformation.getLoginUser(UserGroupInformation.java:433)
... 31 more