根据HBase
文档,org.apache.hadoop.hbase.client.Connection
可以在线程之间安全地共享。
我发现了一些在整个应用程序之间共享单个连接的示例(例如this answer),但我正在寻找一个具有 kerberized 的Web应用程序的连接池的清晰示例。 HBase
下面。
例如方法中的单个连接(假设HBaseConfigurationSingleton
是一个包含kerberos凭证+ hbase配置内容的单例):
String principal = HBaseConfigurationSingleton.getInstance().getPrincipal();
String keytabLocation = HBaseConfigurationSingleton.getInstance().getKeytabLocation();
UserGroupInformation.setConfiguration(HBaseConfigurationSingleton.getInstance().getConfiguration());
UserGroupInformation.loginUserFromKeytab(principal, keytabLocation);
Connection connection = ConnectionFactory.createConnection(HBaseConfigurationSingleton.getInstance().getConfiguration());
try {
//HBase magic stuff here
} finally {
// closing scanner/tables etc.
connection.close();
}