Согласно HBase
документам org.apache.hadoop.hbase.client.Connection
можно безопасно разделить между потоками.Я нашел несколько примеров с одним соединением, общим для всего приложения (например, этот ответ ), но я ищу наглядный пример пула соединений для веб-приложения с kerberized 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();
}