Hbase之Java API远程访问Kerberos认证
HbaseConnKer.java
package BigData.conn; import BigData.utils.resource.ResourcesUtils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.security.UserGroupInformation; import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Paths;
import java.util.Properties; public class HbaseConnKer { private static Connection connectionKer = null; private static volatile HbaseConnKer instanceKer; private HbaseConnKer() {
try {
Properties pro = ResourcesUtils.getResourceAsProperties("Kerberos/HbaseConfigKer.properties"); /* 这个配置文件主要是记录 kerberos的相关配置信息,例如KDC是哪个IP?默认的realm是哪个?
这个文件是从远程服务器上copy下来的*/
System.setProperty("java.security.krb5.conf", pro.getProperty("java.security.krb5.conf")); Configuration conf = HBaseConfiguration.create(); // -----Kerberos配置-----
InputStream hbaseSiteInputStream = Files.newInputStream(Paths.get(pro.getProperty("hbase.site")));
if (hbaseSiteInputStream == null) {
System.out.println("The hbase-site.xml is null!");
}
conf.addResource(hbaseSiteInputStream);
conf.set("hadoop.security.authentication", pro.getProperty("hadoop.security.authentication")); // 这个可以理解成用户名信息,也就是Principal
conf.set("kerberos.principal", pro.getProperty("kerberos.principal")); UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab(pro.getProperty("kerberos.principal"),
pro.getProperty("kerberos.keytab"));
// ---------- //显示连接的服务器
System.out.println("连接服务器:"+conf.get("hbase.zookeeper.quorum")); connectionKer = ConnectionFactory.createConnection(conf);
System.out.println("创建connection成功!");
} catch (IOException e) {
e.printStackTrace();
} } public static Connection getConnection() {
return connectionKer;
} public static HbaseConnKer getIstance() {
// 定义一个共有的静态方法,返回该类型实例
if (instanceKer == null) {
// 对象实例化时与否判断(不使用同步代码块,instance不等于null时,直接返回对象,提高运行效率)
synchronized (HbaseConnKer.class) {
// 同步代码块(对象未初始化时,使用同步代码块,保证多线程访问时对象在第一次创建后,不再重复被创建)
if (instanceKer == null) {
// 未初始化,则初始instance变量
instanceKer = new HbaseConnKer();
}
}
}
return instanceKer;
}
}
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
kerberos.principal=XXX@XX.COM
Hbase之Java API远程访问Kerberos认证的更多相关文章
- Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结
转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...
- 5 hbase-shell + hbase的java api
本博文的主要内容有 .HBase的单机模式(1节点)安装 .HBase的单机模式(1节点)的启动 .HBase的伪分布模式(1节点)安装 .HBase的伪分布模式(1节点)的启动 .HBase ...
- HBase的Java Api连接失败的问题及解决方法
分布式方式部署的HBase,启动正常,Shell操作正常,使用HBase的Java Api操作时总是连接失败,信息如下: This server is in the failed servers li ...
- hbase-shell + hbase的java api
本博文的主要内容有 .HBase的单机模式(1节点)安装 .HBase的单机模式(1节点)的启动 .HBase的伪分布模式(1节点)安装 .HBase的伪分布模式(1节点)的启动 .HBas ...
- 用Java访问带有Kerberos认证的HBase
程序代码实例如下: package com.hbasedemo; import java.io.IOException; import org.apache.hadoop.conf.Config ...
- Hbase之JAVA API不能远程访问问题解决
1.配置Linux的hostname2.配置Linux的hosts,映射ip的hostname的关系3.配置访问windows的hosts 参考文档:http://blog.csdn.net/ty49 ...
- HBase Client JAVA API
旧 的 HBase 接口逻辑与传统 JDBC 方式很不相同,新的接口与传统 JDBC 的逻辑更加相像,具有更加清晰的 Connection 管理方式. 同时,在旧的接口中,客户端何时将 Put 写到服 ...
- linux 下通过过 hbase 的Java api 操作hbase
hbase版本:0.98.5 hadoop版本:1.2.1 使用自带的zk 本文的内容是在集群中创建java项目调用api来操作hbase,主要涉及对hbase的创建表格,删除表格,插入数据,删除数据 ...
- Hbase/Hadoop Java API编程常用语句
从scanner获取rowkey: for(Result rr : scanner){ String key =Bytes.toString(rr.getRow())} HBase API - Res ...
随机推荐
- VMware虚拟机将英文改成中文的方法
由于之前安装的虚拟机和老师要求的不同,我安装的是VMware,所以没有安装教程,没能修改系统语言,用了几次发现英文的不太方便,特别是出错的时候,看不懂系统的出错提示. 我从网上参考了https://b ...
- css3 实现图片等比例放大与缩小
css3 实现图片等比例放大与缩小 在工作中,经常会碰到图片缩放的情况,比如服务器端返回的图片大小,可能大小不同,有的大,有的小,服务器端返回的图片大小我们不能控制的,但是在我们设计稿的时候,可能会规 ...
- PAT A1021 Deepest Root (25 分)——图的BFS,DFS
A graph which is connected and acyclic can be considered a tree. The hight of the tree depends on th ...
- java 学习------JDK1.8安装与配置
1.下在JDK 1.8 2.解压安装 (一般选择默认路径安装) 3.配置环境变量 (我的电脑是windows10 系统) (1)计算机→属性→高级系统设置→高级→环境变量 (2)添加 JAVA ...
- spring HibernateTemplate.save() 方法的自动提交问题
如题: service1: dao1.save(obj); //失败,应该给spring捕获,但没有,程序继续执行下去了. redisService.fun1(); //被执行 service2 ...
- postgrepsql 创建函数
-- 这里的CREATE OR REPLACE FUNCTION 为固定写法: "public"."function_info_a1" 这个为函数名 C ...
- LOJ6089 小Y的背包计数问题 背包、根号分治
题目传送门 题意:给出$N$表示背包容量,且会给出$N$种物品,第$i$个物品大小为$i$,数量也为$i$,求装满这个背包的方案数,对$23333333$取模.$N \leq 10^5$ $23333 ...
- CF97C Winning Strategy 构造、图论
题目传送门:http://codeforces.com/problemset/problem/97/C 题意:给出$n$与一个范围在$[0,1]$内的递增序列$P_0-P_n$,试构造一个无穷序列$\ ...
- java通过反射拷贝两个对象的同名同类型变量
深拷贝和浅拷贝 首先对象的复制分为深拷贝和浅拷贝,关于这两者的区别,简单来说就是对于对象的引用,在拷贝的时候,是否会新开辟一块内存,还是直接复制引用. 两者的比较也有很多,具体可以看这篇文章: htt ...
- SpringMVC之单/多文件上传
1.准备jar包(图标所指必备包,其他按情况导入) 2.项目结构 3.SingleController.java(控制器代码单文件和多文件) package com.wt.uplaod; import ...