Hbase之Java API远程访问Kerberos认证

HbaseConnKer.java

 1 package BigData.conn;
 2
 3 import BigData.utils.resource.ResourcesUtils;
 4 import org.apache.hadoop.conf.Configuration;
 5 import org.apache.hadoop.hbase.HBaseConfiguration;
 6 import org.apache.hadoop.hbase.client.Connection;
 7 import org.apache.hadoop.hbase.client.ConnectionFactory;
 8 import org.apache.hadoop.security.UserGroupInformation;
 9
10 import java.io.IOException;
11 import java.io.InputStream;
12 import java.nio.file.Files;
13 import java.nio.file.Paths;
14 import java.util.Properties;
15
16 public class HbaseConnKer {
17
18     private static Connection connectionKer = null;
19
20     private static volatile HbaseConnKer instanceKer;
21
22     private HbaseConnKer() {
23         try {
24             Properties pro = ResourcesUtils.getResourceAsProperties("Kerberos/HbaseConfigKer.properties");
25
26         /*   这个配置文件主要是记录 kerberos的相关配置信息,例如KDC是哪个IP?默认的realm是哪个?
27              这个文件是从远程服务器上copy下来的*/
28             System.setProperty("java.security.krb5.conf", pro.getProperty("java.security.krb5.conf"));
29
30             Configuration conf = HBaseConfiguration.create();
31
32             // -----Kerberos配置-----
33             InputStream hbaseSiteInputStream = Files.newInputStream(Paths.get(pro.getProperty("hbase.site")));
34             if (hbaseSiteInputStream == null) {
35                 System.out.println("The hbase-site.xml is null!");
36             }
37             conf.addResource(hbaseSiteInputStream);
38             conf.set("hadoop.security.authentication", pro.getProperty("hadoop.security.authentication"));
39
40             // 这个可以理解成用户名信息,也就是Principal
41             conf.set("kerberos.principal", pro.getProperty("kerberos.principal"));
42
43             UserGroupInformation.setConfiguration(conf);
44             UserGroupInformation.loginUserFromKeytab(pro.getProperty("kerberos.principal"),
45                     pro.getProperty("kerberos.keytab"));
46             // ----------
47
48             //显示连接的服务器
49             System.out.println("连接服务器:"+conf.get("hbase.zookeeper.quorum"));
50
51             connectionKer = ConnectionFactory.createConnection(conf);
52             System.out.println("创建connection成功!");
53         } catch (IOException e) {
54             e.printStackTrace();
55         }
56
57     }
58
59     public static Connection getConnection() {
60         return connectionKer;
61     }
62
63     public static HbaseConnKer getIstance() {
64         // 定义一个共有的静态方法,返回该类型实例
65         if (instanceKer == null) {
66             // 对象实例化时与否判断(不使用同步代码块,instance不等于null时,直接返回对象,提高运行效率)
67             synchronized (HbaseConnKer.class) {
68                 // 同步代码块(对象未初始化时,使用同步代码块,保证多线程访问时对象在第一次创建后,不再重复被创建)
69                 if (instanceKer == null) {
70                     // 未初始化,则初始instance变量
71                     instanceKer = new HbaseConnKer();
72                 }
73             }
74         }
75         return instanceKer;
76     }
77 }

HbaseConfigKer.properties

# HBase config
hbase.zookeeper.quorum=20.1.1.93
hbase.zookeeper.property.clientPort=2181

java.security.krb5.conf=src/main/resources/Kerberos/krb5.conf
hadoop.security.authentication=kerberos
hbase.site=src/main/resources/Kerberos/hbase-site.xml
kerberos.keytab=src/main/resources/Kerberos/XXX.keytab
[email protected]

原文地址:https://www.cnblogs.com/gongxr/p/8677590.html

时间: 2024-10-17 05:04:24

Hbase之Java API远程访问Kerberos认证的相关文章

Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结

转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbase调用MapReduce函数使用理解 第三部分:Hbase调用Java API使用理解 第四部分:Hbase Shell操作 第五部分:Hbase建表.读写操作方式性能优化总结 第一部分:Hbase框架原理理解 概述 HBase是一个构建在HDFS上的分布式列存储系统:HBase是基于Google

HBase 常用java api获得客户端,创建表,查询,删除

1,前期准备 (1) 本文采用的hbase是采用三台服务器搭建的集群,zookeeper也是相同服务器搭建的集群,集群ip分别是192.168.183.101: 192.168.183.102: 192.168.183.103.其中102是主节点(HMaster),101以及103都是HRegionServer (2) 这次测试安装的hbase的版本是 hbase-0.99.2.-bin.tar (3)java api引用的maven依赖路径如下 <dependency> <groupI

linux 下通过过 hbase 的Java api 操作hbase

hbase版本:0.98.5 hadoop版本:1.2.1 使用自带的zk 本文的内容是在集群中创建java项目调用api来操作hbase,主要涉及对hbase的创建表格,删除表格,插入数据,删除数据,查询一条数据,查询所有数据等操作. 具体流程如下:1.创建项目2.获取jar包到项目的lib目录下(这边试用的事hbase 0.98 lib目录下的所有jar包)3.编写java程序4.编写ant脚本 package test2; import java.util.ArrayList; impor

HBase的JAVA API操作详解

hbase 伪 分 布 安 装参考:http://blog.csdn.net/gamer_gyt/article/details/47126961 hbase shell操作命令参考:http://blog.csdn.net/gamer_gyt/article/details/47131857 数 据 挖 掘 资源链接汇总:http://blog.csdn.net/gamer_gyt/article/details/47747857 其中用到的eclipse快捷键: Alt+/ 代码助手完成一些

Hbase的java API遇到的问题以及解决方法

简介 随着Hbase版本的更新,有一些依赖包也要随着更新,今天碰到一个依赖包引用顺序的问题!源码如下,在windows端直接运行出错,但以jar包的方式放到集群上可以运行!错误提示也会在下面粘贴出来. 运行源码: package com.iie.Hbase_demo; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.HBaseConfiguration; import org.apache.h

HBase新版本Java API编程实战及基本操作方法封装

我的HBase版本是0.98 首先说明一下,如果用eclipse操作hbase时,如果报Unknown host错误,找不到主机,是因为你没有配IP地址的映射 方法是 找到你的系统盘里面的C:\Windows\System32\drivers\etc下的hosts文件,打开,增加一个映射 加一个映射 192.168.52.140 master 话不多说,直接看代码,注释很详细 import java.io.IOException; import java.util.Arrays; import

Hbase关于Java常用API举例

1. HBase相关对Admin操作的的API封装在HBaseAdmin中,封装了HBase常用操作的API 使用方法: pom.xml <!-- https://mvnrepository.com/artifact/org.apache.hbase/hbase-client --> <dependency> <groupId>org.apache.hbase</groupId> <artifactId>hbase-client</arti

HBase的常用Java API

1. 创建HBase表的对象 HBase表的对项名字叫HTable,创建它的方法有很多,常见的有如下: org.apache.hadoop.hbase.client.HTable hTable = new HTable(org.apache.hadoop.hbase.HBaseConfiguration conf, String tableName); 或 org.apache.hadoop.hbase.client.HTable hTable = new HTable(org.apache.h

Hbase java API 调用详解

Hbase java API 调用 一. hbase的安装 参考:http://blog.csdn.net/mapengbo521521/article/details/41777721 二.hbase访问方式 Native java api:最常规最高效的访问方式. Hbase shell:hbase的命令行工具,最简单的接口,适合管理员使用 Thrift gateway:利用thrift序列化结束支持各种语言,适合异构系统在线访问 Rest gateway:支持rest风格的http api