关于星环TDH产品的Java通过Kerberos安全认证连接hyperbase
Posted Fudge'
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于星环TDH产品的Java通过Kerberos安全认证连接hyperbase相关的知识,希望对你有一定的参考价值。
博主是Java实习生最近在做关于星环大数据方面的工作,碰到一些问题,费了很大的劲才搞通,记录一下,希望可以帮到大家.
Kerberos 术语
Kerberos 中有以下一些概念需要了解:
1)KDC(Key Distribute Center):密钥分发中心,负责存储用户信息,管理发放票据。
2)Realm:Kerberos 所管理的一个领域或范围,称之为一个 Realm。
3)Principal:Kerberos 所管理的一个用户或者一个服务,可以理解为 Kerberos 中保存的一个账号, 其格式通常如下:primary/instance@realm
4)keytab:Kerberos 中的用户认证,可通过密码或者密钥文件证明身份,keytab 指密钥文件。
话不多说先上代码
import com.google.protobuf.ServiceException;
import org.apache.commons.codec.DecoderException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.Path;
import org.apache.hadoop.hbase.Cell;
import org.apache.hadoop.hbase.CellUtil;
import org.apache.hadoop.hbase.HBaseConfiguration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.TableName;
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.HBaseAdmin;
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.hbase.shaded.org.apache.zookeeper.Op;
import org.apache.hadoop.hbase.util.Bytes;
import org.apache.hadoop.security.UserGroupInformation;
import org.mortbay.log.Log;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Paths;
//下载
public class hyperbase
private static Connection conn;
private static final String ZK_QUORUM = "hbase.zookeeper.quorum";
private static final String ZK_CLIENT_PORT = "hbase.zookeeper.property.clientPort";
private static final String ZK_POS = "172.16.180.57:2181,172.16.180.58:2181,172.16.180.59:2181";
private static final String ZK_PORT_VALUE = "2181";
private static Configuration conf;
public static void main(String[] args) throws IOException, ServiceException, DecoderException
System.setProperty("java.security.krb5.conf", "E:\\\\TDH-Client\\\\kerberos\\\\krb5.conf");
System.setProperty("java.security.auth.login.config", "E:\\\\TDH-Client\\\\conf\\\\hyperbase1\\\\jaas.conf");
conf = HBaseConfiguration.create();
conf.addResource(new Path("E:\\\\TDH-Client\\\\conf\\\\hyperbase1\\\\hbase-site.xml"));
conf.addResource(new Path("E:\\\\TDH-Client\\\\conf\\\\hdfs1\\\\hdfs-site.xml"));
conf.addResource(new Path("E:\\\\TDH-Client\\\\conf\\\\hdfs1\\\\core-site.xml"));
conf.set(ZK_QUORUM, ZK_POS);
conf.set(ZK_CLIENT_PORT, ZK_PORT_VALUE);
conf.set("hadoop.security.authentication", "kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("hbase/tdh01@TDH","E:\\\\TDH-Client\\\\kerberos\\\\hyperbase.keytab");
// //创建连接池
try
conn = ConnectionFactory.createConnection(conf);
catch (Exception e)
e.printStackTrace();
scanData("1314.txt");
// HBaseAdmin.checkHBaseAvailable(conf);
// Admin admin = conn.getAdmin();
// HTableDescriptor tableDescriptor = new HTableDescriptor(TableName.valueOf("forpoc"));
// 给表描述对象增加列族
// tableDescriptor.addFamily(new HColumnDescriptor("cf"));
// admin.createTable(tableDescriptor);
// conn.close();
public static void scanData(String tableName) throws IOException, DecoderException
HTable table = (HTable) conn.getTable(TableName.valueOf(tableName));
Scan scan = new Scan();
ResultScanner resultScanner = table.getScanner(scan);
for (Result result : resultScanner)
for (Cell cell : result.rawCells())
String row = new String(CellUtil.cloneRow(cell));
String family = new String(CellUtil.cloneFamily(cell));
String Qualifier = new String(CellUtil.cloneQualifier(cell));
String value = new String(CellUtil.cloneValue(cell));
System.out.println("row: " + row + " family: " + family + " Qualifier: "+Qualifier +" value: " + value);
System.out.println("----------------------");
table.close();
conn.close();
上面代码是下载,下载成功了会在控制台出现下载文本
首先,如果要运行上面的东西,你需要去星环所在服务器上自己下载jar包依赖,并且还要自己去星环平台下载他们的客户端到自己主机,不然会找不到认证文件
https://kb.transwarp.cn/posts/4005
这个是星环的官方文档,也可以按照他的配,实现他的前提是要你的客户端开启Kerberos认证的,还要注意每次关闭和开启都要重新下载hyperbase.Kerberos文件
1.这个Principal是你的用户名,你要核对用户名对不对,不要犯低级错误
2.要查看集群时间和你主机时间是否一致,不一致的话会导致连接失败.
当然,也可以自己试一下上传文件,创建表格等方式,在上传完了可以去服务器检验
图中
kinit hbase/$(hostname) -kt /etc/hyperbase1/conf/hyperbase.keytab
是认证命令,需要开始Kerberos认证才能去访问hbase表.
当出现你创建的表格和列簇就说明创建成功了,如果上面有什么说的不对的问题请多多指教,谢谢!
以上是关于关于星环TDH产品的Java通过Kerberos安全认证连接hyperbase的主要内容,如果未能解决你的问题,请参考以下文章
TDH 8.0 使用必读 1 :为什么你需要存算解耦的多模型数据管理平台