1、创建maven项目

1、导入依赖pom.xml

  1. <dependency>
  2. <groupId>org.apache.hbase</groupId>
  3. <artifactId>hbase-client</artifactId>
  4. <version>2.1.0-cdh6.2.0</version>
  5. </dependency>
  6. ##仓库
  7. <repository>
  8. <id>cdh.rele2</id>
  9. <url>https://repository.cloudera.com/artifactory/public</url>
  10. <name>CDH Releases Repository</name>
  11. </repository>
  12. <repository>
  13. <id>cdh.releases.repo</id>
  14. <url>https://repository.cloudera.com/content/groups/cdh-releases-rcs</url>
  15. <name>CDH Releases Repository</name>
  16. <snapshots>
  17. <enabled>false</enabled>
  18. </snapshots>
  19. </repository>
<dependency>
    <groupId>org.apache.hbase</groupId>
    <artifactId>hbase-client</artifactId>
    <version>2.1.0-cdh6.2.0</version>
</dependency>
##仓库
<repository>
   <id>cdh.rele2</id>
   <url>https://repository.cloudera.com/artifactory/public</url>
   <name>CDH Releases Repository</name>
 </repository>
    <repository>
      <id>cdh.releases.repo</id>
      <url>https://repository.cloudera.com/content/groups/cdh-releases-rcs</url>
      <name>CDH Releases Repository</name>
      <snapshots>
        <enabled>false</enabled>
      </snapshots>
    </repository>

2、配置kerberos

在ubuntu下,下载安装krb5-user

sudo apt-get install krb5-user ldap-utils

配置krb5.conf到etc目录下

Configuration snippets may be placed in this directory as well
#includedir /etc/krb5.conf.d/

[logging]
 default = FILE:/var/log/krb5libs.log
 kdc = FILE:/var/log/krb5kdc.log
 admin_server = FILE:/var/log/kadmind.log
 kinit = {
        renewable = ture
        forwardable = ture
 }

[libdefaults]
 default_realm = FAYSON.COM
 ticket_lifetime = 24h
 renew_lifetime = 7d
 forwardable = true
 renewable = true
 rdns = false
 udp_prefrence_limit=0


[realms]
 FAYSON.COM = {
  kdc = 192.168.160.178:88
  admin_server = 192.168.160.178:749
  kdc = 192.168.160.178
 }

[domain_realm]
 .fayson.com = FAYSON.COM
 fayson.com = FAYSON.COM

生成keytab

ktutil
addent -password -p test_1111@FAYSON.COM -k 1  -e rc4-hmac
Wisdom@123
wkt test_1111.keytab

验证keytab

kinit test_1111 -kt test_1111.keytab

3、配置及登录代码

配置hbase的配置文件
在cdh的cm页面下载配置文件,解压到resources目录。还有其他的文件,如krb5.conf,keytab文件等
image.png

public class HbaseConn {

    public static Connection getHBaseConn(String krb5Conf, String principal, String keytabFile) throws IOException, URISyntaxException {
        Configuration config = HBaseConfiguration.create();

        // 添加必要的配置文件 (hbase-site.xml, core-site.xml)
        config.addResource(new Path(ClassLoader.getSystemResource("hbase-site.xml").toURI()));
        config.addResource(new Path(ClassLoader.getSystemResource("core-site.xml").toURI()));
        // Kerberos认证
        // 设置java安全krb5.conf
        System.setProperty("java.security.krb5.conf", krb5Conf);
        System.setProperty("sun.security.krb5.debug","true");
        // 设置用户主体(Principal)
        config.set("kerberos.principal" , principal);
        // 使用用户keytab文件认证
        config.set("keytab.file" , keytabFile);
        //启用keytab renewal自动更新
        config.set("hadoop.kerberos.keytab.login.autorenewal.enabled", "true");

        UserGroupInformation.setConfiguration(config);
        try {
            // 登录
            UserGroupInformation.loginUserFromKeytab(principal, keytabFile);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 创建连接
        return ConnectionFactory.createConnection(config);
    }
}

其他

如果使用cdh,并且处于无法联网状态,可以将cdh parcels中的jar目录下的jar包放到libs目录下,然后add to libary 就可以进行开发

参考文档

https://blog.csdn.net/xwd127429/article/details/108225877