java cdh hbase_CDH开启kerberos,Java连接Hbase

在使用CDH过程中,按照要求开启了Kerberos安全认证权限,使用java的api连接hbase的方法。

首先需要在CDH中添加认证的用户,获取此用户的.keytab文件,从集群上拷贝krb5.conf文件到需要连接集群的客户机。

然后将hbase-site.xm文件拷贝下来,需要用到里面配置信息。

下面贴出了连接的测试代码;

import java.io.IOException;

import java.util.ArrayList;

import java.util.Collection;

import java.util.HashMap;

import java.util.Iterator;

import java.util.List;

import java.util.Map;

import java.util.Map.Entry;

import java.util.Set;

import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import org.apache.hadoop.conf.Configuration;

import org.apache.hadoop.hbase.Cell;

import org.apache.hadoop.hbase.HBaseConfiguration;

import org.apache.hadoop.hbase.HColumnDescriptor;

import org.apache.hadoop.hbase.HTableDescriptor;

import org.apache.hadoop.hbase.KeyValue;

import org.apache.hadoop.hbase.MasterNotRunningException;

import org.apache.hadoop.hbase.TableName;

import org.apache.hadoop.hbase.ZooKeeperConnectionException;

import org.apache.hadoop.hbase.client.Admin;

import org.apache.hadoop.hbase.client.Connection;

import org.apache.hadoop.hbase.client.ConnectionFactory;

import org.apache.hadoop.hbase.client.Delete;

import org.apache.hadoop.hbase.client.Get;

import org.apache.hadoop.hbase.client.HBaseAdmin;

import org.apache.hadoop.hbase.client.HTable;

import org.apache.hadoop.hbase.client.Put;

import org.apache.hadoop.hbase.client.Result;

import org.apache.hadoop.hbase.client.ResultScanner;

import org.apache.hadoop.hbase.client.Scan;

import org.apache.hadoop.hbase.client.Table;

import org.apache.hadoop.hbase.filter.Filter;

import org.apache.hadoop.hbase.filter.SingleColumnValueFilter;

import org.apache.hadoop.hbase.util.Bytes;

import org.apache.hadoop.security.UserGroupInformation;

/**

* @Description: TODO(这里用一句话描述这个类的作用) HBase数据库操作实现类

* @author: wh

* @date: 2016-10-10 上午11:16:02

*/

public class HbaseService {

// 声明静态配置

private static Configuration conf = null;

private String ip = "10.134.161.107,10.134.161.108,10.134.161.110";//"192.168.204.214,192.168.204.242,192.168.204.215";10.134.161.107

private String port = "2181";

//private static Logger log = Logger.getLogger(HbaseService.class);

private final static Log log = LogFactory.getLog(HbaseService.class);

public HbaseService(){

//Map> map = paramResourceService.getChildParamConfigByCode("ZOOKEEPERPZ");

// Configuration();

conf = new Configuration();

//conf.set("hbase.zookeeper.property.clientPort", port);

//conf.set("hbase.zookeeper.quorum", ip);

//conf = HBaseConfiguration.create(conf);

}

public String getIp() {

return ip;

}

public void setIp(String ip) {

this.ip = ip;

}

public String getPort() {

return port;

}

public void setPort(String port) {

this.port = port;

conf.set("hbase.zookeeper.property.maxclientcnxns", "300");

conf.set("hbase.ipc.client.socket.timeout.connect","1000");

conf.set("zookeeper.session.timeout", "500");

conf.set("hbase.regionserver.handler.count", "500");

System.setProperty("java.security.krb5.conf","C:/Users/user/Desktop/pwmx/krb5.conf");//windows 环境可以将此文件改成krb5.ini放到C:/Windows目录下;Linux环境放到/etc/文件下,改成krb5.sh文件,系统会自动加载

conf.set("hadoop.security.authentication","kerberos");

conf.set("hbase.master.kerberos.principal","hbase/_HOST@TEST.COM");//从Hbase-site.xml文件中获取配置信息

conf.set("hbase.regionserver.kerberos.principal","hbase/_HOST@TEST.COM");//从Hbase-site.xml文件中获取配置信息

conf.set("hbase.zookeeper.property.clientPort",port);

conf.set("hbase.security.authentication","kerberos");

conf.set("hbase.zookeeper.quorum",ip);

UserGroupInformation.setConfiguration(conf);

try{

UserGroupInformation.loginUserFromKeytab("YJ100001","C:/Users/user/Desktop/pwmx/YJ100001.keytab");//认证用户部分

}catch(IOException e) {

//TODOAuto-generated catch block

e.printStackTrace();

}

conf = HBaseConfiguration.create(conf);

}

public String addNameSpace(String tableName){

if(tableName.indexOf(":")!=-1){

return tableName;

}else

return "pwmx:"+tableName;

}

/**

* @param tableName

* @return

*/

public boolean exitTable(String tableName){

tableName = addNameSpace(tableName);

boolean flag = false;

HBaseAdmin admin = null;

try {

admin = new HBaseAdmin(conf);

try {

if (admin.tableExists(tableName))

flag = true;

} catch (IOException e) {

// TODO Auto-generated catch block

log.error(e);

}

} catch (Exception e1) {

// TODO Auto-generated catch block

log.error(e1);

}

//closeAdmin(admin);

return flag;

}

public static void main(String[] args) throws Exception {

// 创建表

HbaseService hs = new HbaseService();

hs.setPort("2181");

System.out.println("ssssssssssssss");

System.out.println(hs.exitTable("pwmx:test1"));

hs.exitTable("ACLineSegment");

}

}以上是测试的代码,其中可能引用了多余的jar。不需要的可以自行删除。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值