用Java访问带有Kerberos认证的HBase
程序代码实例如下:
package com.hbasedemo; import java.io.IOException; import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.KeyValue;
import org.apache.hadoop.hbase.client.HTable;
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.security.UserGroupInformation; public class Test {
private static Configuration conf = null; static { // 这个配置文件主要是记录 kerberos的相关配置信息,例如KDC是哪个IP?默认的realm是哪个?
// 如果没有这个配置文件这边认证的时候肯定不知道KDC的路径喽
// 这个文件也是从远程服务器上copy下来的
System. setProperty("java.security.krb5.conf", "C:/Users/dongzeguang/Downloads/krb5.conf" );
conf = HBaseConfiguration.create();
conf.set("hadoop.security.authentication" , "Kerberos" );
// 这个hbase.keytab也是从远程服务器上copy下来的, 里面存储的是密码相关信息
// 这样我们就不需要交互式输入密码了
conf.set("keytab.file" , "C:/Users/Downloads/hbase.keytab" );
// 这个可以理解成用户名信息,也就是Principal
conf.set("kerberos.principal" , "hbase/1722.myip.domain@HADOOP.COM" );
UserGroupInformation. setConfiguration(conf);
try {
UserGroupInformation. loginUserFromKeytab("hbase/1722.myip.domain@HADOOP.COM", "C:/Users/Downloads/hbase.keytab" );
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} public static void scanSpan(final String tableName) throws Exception {
HTable table = new HTable(conf, tableName);
System. out.println("tablename:" +new String(table.getTableName()));
Scan s = new Scan();
ResultScanner rs = table.getScanner(s);
for (Result r : rs) {
System. out.println(r.toString());
KeyValue[] kv = r. raw();
for (int i = ; i < kv.length; i++) {
System. out.print(new String(kv[i].getRow()) + "");
System. out.print(new String(kv[i].getFamily()) + ":");
System. out.print(new String(kv[i].getQualifier() ) + "" );
System. out.print(kv[i].getTimestamp() + "" );
System. out.println(new String(kv[i].getValue() ));
}
} } /**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
Test. scanSpan("h_span");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
用Java访问带有Kerberos认证的HBase的更多相关文章
- 使用Spark的newAPIHadoopRDD接口访问有kerberos认证的hbase
使用newAPIHadoopRDD接口访问hbase数据,网上有很多可以参考的例子,但是由于环境使用了kerberos安全加固,spark使用有kerberos认证的hbase,网上的参考资料不多,访 ...
- Hbase之Java API远程访问Kerberos认证
HbaseConnKer.java package BigData.conn; import BigData.utils.resource.ResourcesUtils; import org.apa ...
- java 连接 kerberos 认证的 HBase 和 HDFS
这是两个功能,都很简单就写一块了.. 简单到什么程度呢,简单到只贴代码就可以了... HBase package com.miras.data; import org.apache.hadoop.co ...
- cloudera集群开启kerberos认证后,删除zk中的/hbase目录
问题 在cdh集群中开启了kerberos认证,hbase集群出现一点问题,需要通过zookeeper-client访问zookeeper,删除/hbase节点时候报错:Authentication ...
- spark 2.x在windows环境使用idea本地调试启动了kerberos认证的hive
1 概述 开发调试spark程序时,因为要访问开启kerberos认证的hive/hbase/hdfs等组件,每次调试都需要打jar包,上传到服务器执行特别影响工作效率,所以调研了下如何在window ...
- yarn 用户导致的被挖矿 启用Kerberos认证功能,禁止匿名访问修改8088端口
用户为dr.who,问下内部使用人员,都没有任务在跑: 结论: 恭喜你,你中毒了,攻击者利用Hadoop Yarn资源管理系统REST API未授权漏洞对服务器进行攻击,攻击者可以在未授权的情况下远程 ...
- Java Api Consumer 连接启用Kerberos认证的Kafka
java程序连接到一个需要Kerberos认证的kafka集群上,消费生产者生产的信息,kafka版本是2.10-0.10.0.1: Java程序以maven构建,(怎么构建maven工程,可去问下度 ...
- 如何使用Java访问双向认证的Https资源
本文的相关源码位于 https://github.com/dreamingodd/CA-generation-demo 0.Nginx配置Https双向认证 首先配置Https双向认证的服务器资源. ...
- Https、OpenSSL自建CA证书及签发证书、nginx单向认证、双向认证及使用Java访问
0.环境 本文的相关源码位于 https://github.com/dreamingodd/CA-generation-demo 必须安装nginx,必须安装openssl,(用apt-get upd ...
随机推荐
- 编写合格的C代码(1):通过编译选项将特定警告视为错误
目录 快速设定 向错误的执念开炮,向C编译器开炮 编译警告应当被忽略吗?warning不重要吗? 个人总结的应当视作error的warning 1. 函数没有声明就使用 2. 函数虽然有声明,但是声明 ...
- nginx $remote_addr 详解
1. 参考:https://blog.51cto.com/cuidehua/1827244?source=drt
- django url注册器组件, 响应器组件, 分页器组件
一.url注册器的使用 1.1导入模块 from django.urls import re_path, include from .serializer import views from rest ...
- AJAX异步更改数据库
前段时间做了一个小网站,里面有个小功能感觉挺好的,在此与大家分享一下,还请各位大神不要笑话小弟的无知. 此功能大概是这个样子的:点击下图中的类别名称,就可以对类别进行修改. 点击类别名称以后,原来的表 ...
- springCloud学习1
传统项目架构 传统项目分为三层架构,将业务逻辑层.数据库访问层.控制层放入在一个项目中. 优点:适合于个人或者小团队开发,不适合大团队开发. 分布式项目架构 根据业务需求进行拆分成N个子系统,多个子系 ...
- 9.consul获取服务实例,调用测试
package main import ( "context" "fmt" "github.com/go-kit/kit/endpoint" ...
- OpenResty: PHP增加数据库插件
首先修改下php.ini 文件 告诉php当前的扩展库路径 扩展库--就是扩展的其它功能的库 这个就是扩展库文件夹,里面有很多功能性文件 就是增加这一句 extension_dir = &qu ...
- [RN] React Native 好用的时间线 组件
React Native 好用的时间线 组件 效果如下: 实现方法: 一.组件封装 CustomTimeLine.js "use strict"; import React, {C ...
- Trie字典树(超详细!!!)
介绍 字典树,也称Trie.字母树,指的是某个字符串集合对应的形如下图的有根树.树的每条边上对应有恰好一个字符,每个顶点代表从根到该节点的路径所对应的字符串(将所有经过的边上的字符按顺序连接起来).有 ...
- Glimma 包
http://master.bioconductor.org/packages/3.9/bioc/html/Glimma.html 安装 if (!requireNamespace("Bio ...