Hi, I am using Storm to write HBase with Simple authentication. HBase's version is 1.2.0-cdh5.7.0. But the connection somehow can not be obtained. The user submitting the topology and running the Storm cluster is the same as the HBase user, which has write and read privileges on the HBase. Below is the code snippet where a connection is attempted to obtain. public HBaseClient(Map<String, Object> map, final Configuration configuration, final String tableName) { try{ UserProvider provider = HBaseSecurityUtil.login(map, configuration); final User user = provider.getCurrent(); System.out.println("Communicate with HBase as " + user.getName()); table = user.getUGI().doAs(new PrivilegedExceptionAction<Table>() { @Override public Table run() throws IOException { System.out.println("Obtain a connection to HBase"); Connection conn = ConnectionFactory.createConnection(configuration, user); System.out.println("Connection obtained."); return conn.getTable(TableName.valueOf(tableName)); } }); }catch(Exception e){ throw new RuntimeException("HBase bolt preparation failed: " + e.getMessage(), e); } }
And the exception log is as follow: java.lang.RuntimeException: HBase bolt preparation failed: java.lang.reflect.InvocationTargetException at org.apache.storm.hbase.common.HBaseClient.<init>(HBaseClient.java:58) ~[stormjar.jar:?] at org.apache.storm.hbase.bolt.AbstractHBaseBolt.prepare(AbstractHBaseBolt.java:75) ~[stormjar.jar:?] at org.apache.storm.hbase.bolt.HBaseBolt.prepare(HBaseBolt.java:108) ~[stormjar.jar:?] at org.apache.storm.daemon.executor$fn__5044$fn__5057.invoke(executor.clj:791) ~[storm-core-1.1.0.jar:1.1.0] at org.apache.storm.util$async_loop$fn__557.invoke(util.clj:482) [storm-core-1.1.0.jar:1.1.0] at clojure.lang.AFn.run(AFn.java:22) [clojure-1.7.0.jar:?] at java.lang.Thread.run(Thread.java:748) [?:1.8.0_141] Caused by: java.io.IOException: java.lang.reflect.InvocationTargetException at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:240) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:181) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:52) ~[stormjar.jar:?] at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:48) ~[stormjar.jar:?] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_141] at javax.security.auth.Subject.doAs(Subject.java:422) ~[?:1.8.0_141] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.storm.hbase.common.HBaseClient.<init>(HBaseClient.java:48) ~[stormjar.jar:?] ... 6 more Caused by: java.lang.reflect.InvocationTargetException at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_141] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_141] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_141] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_141] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:181) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:52) ~[stormjar.jar:?] at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:48) ~[stormjar.jar:?] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_141] at javax.security.auth.Subject.doAs(Subject.java:422) ~[?:1.8.0_141] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.storm.hbase.common.HBaseClient.<init>(HBaseClient.java:48) ~[stormjar.jar:?] ... 6 more Caused by: java.lang.ExceptionInInitializerError at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2742) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2715) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:382) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.util.DynamicClassLoader.initTempDir(DynamicClassLoader.java:120) ~[hbase-common-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.util.DynamicClassLoader.<init>(DynamicClassLoader.java:98) ~[hbase-common-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.protobuf.ProtobufUtil.<clinit>(ProtobufUtil.java:241) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:75) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:919) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:657) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_141] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_141] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_141] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_141] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:181) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:52) ~[stormjar.jar:?] at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:48) ~[stormjar.jar:?] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_141] at javax.security.auth.Subject.doAs(Subject.java:422) ~[?:1.8.0_141] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.storm.hbase.common.HBaseClient.<init>(HBaseClient.java:48) ~[stormjar.jar:?] ... 6 more Caused by: java.lang.IllegalStateException: Shutdown in progress at java.lang.ApplicationShutdownHooks.add(ApplicationShutdownHooks.java:66) ~[?:1.8.0_141] at java.lang.Runtime.addShutdownHook(Runtime.java:211) ~[?:1.8.0_141] at org.apache.hadoop.util.ShutdownHookManager.<clinit>(ShutdownHookManager.java:47) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2742) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2715) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:382) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.hadoop.fs.Path.getFileSystem(Path.java:296) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.util.DynamicClassLoader.initTempDir(DynamicClassLoader.java:120) ~[hbase-common-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.util.DynamicClassLoader.<init>(DynamicClassLoader.java:98) ~[hbase-common-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.protobuf.ProtobufUtil.<clinit>(ProtobufUtil.java:241) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.ClusterId.parseFrom(ClusterId.java:64) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.zookeeper.ZKClusterId.readClusterIdZNode(ZKClusterId.java:75) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ZooKeeperRegistry.getClusterId(ZooKeeperRegistry.java:105) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.retrieveClusterId(ConnectionManager.java:919) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionManager$HConnectionImplementation.<init>(ConnectionManager.java:657) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) ~[?:1.8.0_141] at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) ~[?:1.8.0_141] at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) ~[?:1.8.0_141] at java.lang.reflect.Constructor.newInstance(Constructor.java:423) ~[?:1.8.0_141] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:238) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:181) ~[hbase-client-1.2.0-cdh5.7.0.jar:?] at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:52) ~[stormjar.jar:?] at org.apache.storm.hbase.common.HBaseClient$1.run(HBaseClient.java:48) ~[stormjar.jar:?] at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_141] at javax.security.auth.Subject.doAs(Subject.java:422) ~[?:1.8.0_141] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1693) ~[hadoop-common-2.6.0-cdh5.7.0.jar:?] at org.apache.storm.hbase.common.HBaseClient.<init>(HBaseClient.java:48) ~[stormjar.jar:?] Curiously, I find the connection is obtained successfully by examining the same log file. 2017-12-01 15:22:49.146 o.a.s.d.executor Thread-49-MigrateCounter-executor[59 59] [INFO] Prepared bolt MigrateCounter:(59) 2017-12-01 15:22:49.149 o.a.s.d.executor Thread-19-MigrateCounter-executor[65 65] [INFO] Prepared bolt MigrateCounter:(65) 2017-12-01 15:22:49.154 o.a.s.d.executor Thread-45-MigrateCounter-executor[89 89] [INFO] Prepared bolt MigrateCounter:(89) 2017-12-01 15:22:49.157 o.a.s.d.executor Thread-23-IsdnHBaseMapperBolt-executor[35 35] [INFO] Prepared bolt IsdnHBaseMapperBolt:(35) 2017-12-01 15:22:49.158 o.a.s.d.executor Thread-37-AppHBaseMapperBolt-executor[5 5] [INFO] Prepared bolt AppHBaseMapperBolt:(5) 2017-12-01 15:22:49.158 o.a.s.d.executor Thread-43-TopNAppWindowedBolt-executor[143 143] [INFO] Prepared bolt TopNAppWindowedBolt:(143) 2017-12-01 15:22:49.159 o.a.s.d.executor Thread-15-MigrateCounter-executor[137 137] [INFO] Prepared bolt MigrateCounter:(137) 2017-12-01 15:22:49.160 o.a.s.d.executor Thread-17-MigrateCounter-executor[53 53] [INFO] Prepared bolt MigrateCounter:(53) 2017-12-01 15:22:49.161 o.a.s.d.executor Thread-47-MigrateCounter-executor[83 83] [INFO] Prepared bolt MigrateCounter:(83) 2017-12-01 15:22:49.161 o.a.s.d.executor Thread-29-DPIParseBolt-executor[23 23] [INFO] Prepared bolt DPIParseBolt:(23) 2017-12-01 15:22:49.162 o.a.s.d.executor Thread-9-MigrateCounter-executor[107 107] [INFO] Prepared bolt MigrateCounter:(107) 2017-12-01 15:22:49.162 o.a.s.d.executor Thread-25-MigrateCounter-executor[101 101] [INFO] Prepared bolt MigrateCounter:(101) 2017-12-01 15:22:49.638 o.a.h.h.s.DomainSocketFactory Thread-57-AppMetricBolt-executor[17 17] [WARN] The short-circuit local reads feature cannot be used because libhadoop cannot be loaded. 2017-12-01 15:22:49.697 STDIO Thread-57-AppMetricBolt-executor[17 17] [INFO] Connection obtained. 2017-12-01 15:22:49.707 o.a.s.d.executor Thread-57-AppMetricBolt-executor[17 17] [INFO] Prepared bolt AppMetricBolt:(17) 2017-12-01 15:22:49.891 o.a.s.util Thread-31-AppHBaseMapperBolt-executor[11 11] [ERROR] Async loop died! Could anybody offer some suggestions? ________________________________ wangchunc...@outlook.com