Java中获取Kerberos验证下的HBase数据库的命名空间、表名和列族名相关信息

Java连接HBase相关操作

前提条件:Hadoop启动、HBase启动、Zookeeper启动(若使用hbase自带的zookeeper则可忽略这一步骤)、Kerberos启动、Kerberos主体信息未过期、导入相关包。

1. 获取HBase连接

无权限情况下的获取连接

 	/**
     * 创建默认连接
     *
     * @param ip   ip
     * @param port 端口
     * @return Connection
     * @throws IOException
     */
    public Connection getDefaultConnection(String ip, Integer port) throws IOException {
   
        Configuration configuration = new Configuration();
        configuration.set("hbase.zookeeper.quorum", ip + ":" + port);
        return  ConnectionFactory.createConnection(configuration);
    }

使用kerberos认证的情况下获取HBase的连接

	/**
     * 获取Kerberos认证下的HBase的连接
     *
     * @param ip         ip
     * @param port       端口
     * @param principal  主体(用户名) test/admin@TEST.COM
     * @param krbConf    kerberos域信息配置文件 /etc/krb5.conf
     * @param kadmKeyTab 主体安全凭据文件(密码) /Kerberos/krb5kdc/kadm5.keytab
     * @return Connection
     * @throws IOException
     */
    public static Connection getKerberosConnection(String ip, Integer port, String principal,
                                                   String krbConf, String kadmKeyTab) throws IOException {
   
        // 设置krb5.conf kerberos域信息配置文件
        System.setProperty("java.security.krb5.conf", krbConf);
        // 打开kerberos认证日志(可以选择不打开,这里打开方便查看认证报错日志,便于修改问题)
        System.setProperty("sun.security.krb5.debug", "true");
        
		// 新建配置文件
        Configuration conf = HBaseConfiguration.create();
        // hadoop配置kerberos安全认证
        conf.set("hadoop.security.authentication", "kerberos");
        // hbase配置kerberos安全认证
        conf.set("hbase.security.authentication", "kerberos");
        // hbase master配置kerberos安全凭据认证
        conf.set("hbase.master.kerberos.principal", principal);
        // hbase master配置kerberos安全证书keytab文件位置
        // conf.set("hbase.master.keytab.file", kadmKeyTab);        
        // hbase regionserver配置kerberos安全凭据认证
        conf.set("hbase.regionserver.kerberos.principal", principal);
        // hbase regionserver配置kerberos安全证书keytab文件位置
        // conf.set("hbase.regionserver.keytab.file", kadmKeyTab);
        // 配置zookeeper
        conf.set("hbase.zookeeper.quorum", ip + ":" + port);
        // hadoop的kerberos认证核心: UserGroupInformation类
        UserGroupInformation.setConfiguration(conf);
        
        UserGroupInformation.loginUserFromKeytab(principal, kadmKeyTab);
        System.out.println("kerberos验证成功!");
        Connection connection = ConnectionFactory.createConnection(conf);
        System.out.println("hbase连接成功!");
        return connection;
    }

控制台打印输出:
kerberos验证成功!
hbase连接成功!

注意:若配置kerberos和hbase的主体不一致,只需要传入不同的主体和kerberos的keytab文件(hbase主体对应的keytab文件在配置中直接验证,可不用传入),并修改下述内容

        // hmaster配置kerberos安全凭据认证
        conf.set("hbase.master.kerberos.principal", hbasePrincipal);
        // regionserver配置kerberos安全凭据认证
        conf.set("hbase.regionserver.kerberos.principal", hbasePrincipal);
        // kerberos认证
        UserGroupInformation.loginUserFromKeytab(kerberosPrincipal, kadmKeyTab);

2. 获取HBase的命名空间nameSpace

    /**
     * 获取命名空间
     *
     * @param connection connection
     * @throws IOException
     */
    public static void getHbaseNameSpace(
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值