用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 ...
随机推荐
- HTTP Status 406 – Not Acceptable
前端调用这个方法报错: HTTP Status 406 – Not Acceptable Type Status Report Description The target resource does ...
- AAC的RTP封装中的AU头分析
解码器收到一个RTP的AAC流,发现RTP流里的音频里带有4个字节AU头,然后才是AAC的ADTS头. 这种情况之前已经出现过多次,每次我们都告知对方,不要往AAC前面加AU头,解码器不支 ...
- 接口测试:postman
测试接口,postman和jmeter是用得最频繁的工具. 下面主要介绍postman测试http协议接口的用法,包含get,post(form-data,json,上传文件,cookie). pos ...
- 05-C#笔记-基本变量
1. 不支持括号初始化: 2. 支持强制类型转化: 3.运算规则同C++ 参考: http://www.runoob.com/csharp/csharp-variables.html
- Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT and at least one table uses a storage engine limited to row-based logging. InnoDB is limited to row-logging
1665 - Cannot execute statement: impossible to write to binary log since BINLOG_FORMAT = STATEMENT a ...
- erlang程序设计--顺序编程
erlang模块的基本结构 基本结构-module(filename).-export([funname/num]). c(filename). 编译erlang模块 .bean 结尾的文件 编译后 ...
- 26 配置TensorFlow 1.9
https://www.ctolib.com/topics-133854.html sudo apt install libatlas-base-dev pip3 install tensorflow ...
- LeetCode 489. Robot Room Cleaner
原题链接在这里:https://leetcode.com/problems/robot-room-cleaner/ 题目: Given a robot cleaner in a room modele ...
- CF Educational Round 78 (Div2)题解报告A~E
CF Educational Round 78 (Div2)题解报告A~E A:Two Rival Students 依题意模拟即可 #include<bits/stdc++.h> us ...
- python输出带颜色字体
方法1: (参考https://suixinblog.cn/2019/01/print-colorful.html) 使用Python中自带的print输出带有颜色或者背景的字符串 书写语法 prin ...