1、创建maven项目
1、导入依赖pom.xml
<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>
<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文件等
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 就可以进行开发