CDH开启kerberos,Java连接Hbase
2017-03-15 16:08
411 查看
在使用CDH过程中,按照要求开启了Kerberos安全认证权限,使用java的api连接hbase的方法。
首先需要在CDH中添加认证的用户,获取此用户的.keytab文件,从集群上拷贝krb5.conf文件到需要连接集群的客户机。
然后将hbase-site.xm文件拷贝下来,需要用到里面配置信息。
下面贴出了连接的测试代码;
首先需要在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<String,List<TparameterConfig>> 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。不需要的可以自行删除。
相关文章推荐
- CDH开启kerberos后,HDFS连接的Java——API参数配置
- CDH开启Kerberos,Java连接impala
- java 连接 kerberos 认证的 HBase 和 HDFS
- CDH hbase 开启kerberos
- Java 操作Hbase 简单案例 (Kerberos已开启)
- java连接Hbase+Kerberos配置参数示例
- Kerberos+Java连接Hbase
- JAVA 连接 Hbase1.2.3查询
- Not a host:port pair: PBUF(用Java客户端(Eclipse平台)连接Hbase)&&apache官网Jar下载流程
- Apache Kylin部署在CDH 5.4上报错Caused by: java.lang.NoSuchMethodError: org.apache.hadoop.hbase.HTableDescr
- 在Hadoop集群部署Hbase并开启kerberos
- Java 连接HBASE ,执行查询超时的解决方法
- 使用hbase的java api连接集群超时的问题
- 解决java连接Hbase程序卡住执行也不报错的问题
- happybase连接hbase开启hbase thrift
- java连接开启了sasl的memcache服务
- JAVA安全客户端连接到Hbase
- Java客户端连接HBase报错:Not a host:port pair
- Java 连接hbase 进行简单操作
- hbase java client无法连接 hbase server