hadoop - 无法使用 Java API 连接 HBASE
问题描述
使用 Java API,尝试连接启用 Kerberos 的 hbase。
Configuration configuration = HBaseConfiguration.create();
// Zookeeper quorum
configuration.set("hbase.zookeeper.quorum", "XXXXX");
configuration.set("hbase.zookeeper.quorum", "XXXX");
configuration.set("hbase.zookeeper.quorum", "XXXX");
configuration.set("hbase.zookeeper.property.clientPort", "2181");
configuration.set("hadoop.security.authentication", "kerberos");
configuration.set("hbase.security.authentication", "kerberos");
configuration.set("hbase.cluster.distributed", "true");
configuration.set("zookeeper.znode.parent", "/hbase-secure");
// check this setting on HBase side
configuration.set("hbase.rpc.protection", "authentication");
//what principal the master/region. servers use.
configuration.set("hbase.regionserver.kerberos.principal", "XXXX");
configuration.set("hbase.regionserver.keytab.file", "XXXX");
// this is needed even if you connect over rpc/zookeeper
configuration.set("hbase.master.kerberos.principal", "XXX");
configuration.set("hbase.master.keytab.file", "XXXX");
configuration.addResource("core-site.xml");
configuration.addResource("hbase-site.xml");
configuration.addResource("hdfs-site.xml");
configuration.set("hbase.rpc.timeout","90000");
configuration.set("hbase.client.scanner.timeout.period","90000");
System.setProperty("java.security.krb5.conf","XXXX");
// Enable/disable krb5 debugging
System.setProperty("sun.security.krb5.debug", "false");
String principal = System.getProperty("kerberosPrincipal","XXXX");
String keytabLocation = System.getProperty("kerberosKeytab","XXXX");
// kinit with principal and keytab
UserGroupInformation.setConfiguration(configuration);
UserGroupInformation.loginUserFromKeytab(principal, keytabLocation);
Connection connection = ConnectionFactory.createConnection(HBaseConfiguration.create(configuration));
System.out.println(connection.getAdmin().isTableAvailable(TableName.valueOf("XXXX")));
在 org.apache.hadoop 的 org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:240) 处的线程“main”java.io.IOException 中面临以下异常异常:java.lang.reflect.InvocationTargetException。 hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:218) 在 org.apache.hadoop.hbase.client.ConnectionFactory.createConnection(ConnectionFactory.java:119)