Phoenix连接安全模式下的HBase集群

Phoenix连接安全模式下的HBase集群

HBase集群开启安全模式(即启用kerberos认证)之后,用户无论是用HBase shell还是Phoenix去连接HBase都先需要通过kerberos认证。如果没有通过kerberos认证,则hbase shell或phoenix都会报找不到kerberos tgt的错误而无法访问HBase(以下以phoenix为例):

对于HBase shell来说,用户可以在命令行先用kinit命令(kinit -kt <user keytab> <user principal>)进行认证获取tgt,然后再进入hbase shell中去建表或者跑查询。而Phoenix因为没有像hbase shell这样一开始就支持kerberos认证,所以Phoenix高低版本之间对HBase的kerberos认证的支持有所差别:

- 3.0及以上版本的Phoenix原生支持连接安全模式的hbase集群

- 3.0以下版本的Phoenix默认不支持连接安全模式的hbase集群

以下分别介绍不同Phoenix版本连接安全模式下HBase集群的方法。

Phoenix 3.0及以上版本连接安全模式下的HBase集群

Phoenix从3.0版本开始增加了连接安全模式下的HBase集群的支持,连接安全模式的HBase集群的JDBC URL格式如下:

jdbc:phoenix:<quorom>:<port>:[zk_rootNode]:<principal>:<keytab>

(参数里的quorom是zookeeper节点列表,port是zookeeper的端口,zk_rootNode是HBase的zookeeper目录,principal为hbase用户的principal,keytab为hbase用户的keytab文件路径)

用户可以用上述JDBC连接串,通过sqlline命令,java代码或sql连接器去访问开启了安全模式的HBase集群(通过上述JDBC连接串去访问HBase之前,不需要手动去执行kinit命令来获取tgt)。其使用示例如下:

(测试以HDP 2.6为准<HBase1.2.2,phoenix4.>,CDH或Apache社区版本的HBase的配置也类似)

另外,我们发现如果用kinit命令去手动获取tgt之后,依然可以通过非kerberos模式下的JDBC连接串(即jdbc:phoenix:<quorom>:<port>:[zk_rootNode] 格式的连)访问HBase集群,因为当前命令执行的上下文里以及有了kerberos tgt的缓存信息:

Phoenix 3.0以下版本连接安全模式下的HBase集群

对于3.0之前的版本,Phoenix默认是不支持连接安全模式下的HBase集群的。但是,我们可以通过修改phoenix的sqlline脚本并增加一些java参数来使phoenix能够连接开启kerberos的HBase集群(只需要增加一些参数,而不必修改phoenix代码本身)。

需要在sqlline里增加的java参数如下:

- zookeeper的jaas文件路径

- krb5.conf文件路径

- 集群配置文件和jar包的路径,包括:

- hadoop的配置文件路径

- hbase的配置文件路径

- hbase jar包的路径

- zookeeper jar包的路径

- hadoop auth jar包的路径

- phoenix-x.x.x.jar的路径

sqlline脚本最终执行的java命令类似下面:
java -Djava.security.auth.login.config=/etc/zookeeper/conf/zookeeper_client_jaas.conf -Djava.security.krb5.conf=/etc/krb5.conf -cp "/etc/hbase/conf:/usr/hdp/2.4.0.0-169/zookeeper/zookeeper-3.4.6.2.4.0.0-169.jar:/usr/hdp/2.4.0.0-169/hadoop/hadoop-auth-2.7.1.2.4.0.0-169.jar:/usr/hdp/2.4.0.0-169/phoenix/bin/../phoenix-4.4.0.2.4.0.0-169-client.jar:::/etc/hadoop/conf:/usr/hdp/2.4.0.0-169/hadoop/conf:/usr/hdp/2.4.0.0-169/hadoop/lib/*:/usr/hdp/2.4.0.0-169/hadoop/.//*:/usr/hdp/2.4.0.0-169/hadoop-hdfs/./:/usr/hdp/2.4.0.0-169/hadoop-hdfs/lib/*:/usr/hdp/2.4.0.0-169/hadoop-hdfs/.//*:/usr/hdp/2.4.0.0-169/hadoop-yarn/lib/*:/usr/hdp/2.4.0.0-169/hadoop-yarn/.//*:/usr/hdp/2.4.0.0-169/hadoop-mapreduce/lib/*:/usr/hdp/2.4.0.0-169/hadoop-mapreduce/.//*::mysql-connector-java-5.1.17.jar:mysql-connector-java.jar:postgresql-9.3-1101-jdbc4.jar:postgresql.jar:/usr/hdp/2.4.0.0-169/tez/*:/usr/hdp/2.4.0.0-169/tez/lib/*:/usr/hdp/2.4.0.0-169/tez/conf" -Dlog4j.configuration=file:/usr/hdp/2.4.0.0-169/phoenix/bin/log4j.propertiessqlline.SqlLine -d org.apache.phoenix.jdbc.PhoenixDriver -u jdbc:phoenix:ocdpbroker.jcloud.local:2181:/hbase-secure:hbase/[email protected]:/etc/security/keytabs/hbase.service.keytab -n none -p none —color=true —fastConnect=false —verbose=true —isolation=TRANSACTION_READ_COMMITTED

总结一下,需要首先在命令行用kinit命令手动获取tgt,然后再执行上述的java命令就可以访问开启kerberos认证的HBase集群了。

原文地址:https://www.cnblogs.com/felixzh/p/11558711.html

时间: 2024-10-11 13:24:52

Phoenix连接安全模式下的HBase集群的相关文章

Hbase集群client执行报错:Unable to find region for TABLE,,99999999999999 after 10 tries.

Windows7 eclipse下运行Hbase集群客户端,报 Unable to find region for wlan_log,,99999999999999 after 10 tries. Unable to find region for wlan_log,,99999999999999 after 10 tries. 其中wlan_log是我的Hbase表. 仔细检查了我的Hbase和Hadoop集群都没有问题,经过度娘的提示,我终于明白了, 因为我的host文件只配置了region

HBase学习之路 (二)HBase集群安装

前提 1.HBase 依赖于 HDFS 做底层的数据存储 2.HBase 依赖于 MapReduce 做数据计算 3.HBase 依赖于 ZooKeeper 做服务协调 4.HBase源码是java编写的,安装需要依赖JDK 版本选择 打开官方的版本说明http://hbase.apache.org/1.2/book.html JDK的选择 Hadoop的选择 此处我们的hadoop版本用的的是2.7.5,HBase选择的版本是1.2.6 安装 1.zookeeper的安装 参考http://w

读者来信 | 刚搭完HBase集群,Phoenix一启动,HBase就全崩了,是什么原因?(已解决)

前言:之前有朋友加好友与我探讨一些问题,我觉得这些问题倒挺有价值的:于是就想在本公众号开设一个问答专栏,方便技术交流与分享,专栏名就定为:<读者来信>.如遇到本人能力有限难以解决的问题,我将转发该文至我的资源圈尽力寻求大佬们出手帮助,并附上提问者微信二维码,希望给大家提供这样一个互帮互助解决问题的平台.也诚挚地欢迎大家能在留言区积极探讨解决方案,大胆发表自己的看法~ 来信人:于*超 小猿提问 刚搭完HBase集群,Phoenix一启动,HBase的Region节点就全崩溃了,是什么原因? 小猿

Hadoop2.0集群、Hbase集群、Zookeeper集群、Hive工具、Sqoop工具、Flume工具搭建总结

实验开发环境所用软件: [[email protected] local]# ll total 320576 -rw-r--r-- 1 root root 52550402 Mar 6 10:34 apache-flume-1.6.0-bin.tar.gz drwxr-xr-x 7 root root 4096 Jul 15 10:46 flume drwxr-xr-x. 11 root root 4096 Jul 10 21:04 hadoop -rw-r--r--. 1 root root

Hbase集群搭建及所有配置调优参数整理及API代码运行

最近为了方便开发,在自己的虚拟机上搭建了三节点的Hadoop集群与Hbase集群,hadoop集群的搭建与zookeeper集群这里就不再详细说明,原来的笔记中记录过.这里将hbase配置参数进行相应整理,方便日后使用. 首先vi ~/.bash_profile将hbase的环境变量进行配置,最后source ~./bash_profile使之立即生效 1.修改hbase-env.sh 由于我使用的是外置的zookeeper,所以这里HBASE_MANAGES_ZK设置为,设置参数: # The

Kubernetes+Flannel 环境中部署HBase集群

注:目前方案不满足加入新节点(master节点或regionserver节点)而不更改已运行节点的参数的需求,具体讨论见第六部分. 一.背景知识 先看下HBase的组成: Master:Master主要负责管理RegionServer集群,如负载均衡及资源分配等,它本身也可以以集群方式运行,但同一时刻只有一个master处于激活状态.当工作中的master宕掉后,zookeeper会切换到其它备选的master上. RegionServer:负责具体数据块的读写操作. ZooKeeper:负责集

Apache HBase 集群安装文档

简介: Apache HBase 是一个分布式的.面向列的开源 NoSQL 数据库.具有高性能.高可靠性.可伸缩.面向列.分布式存储的特性. HBase 的数据文件最终落地在 HDFS 之上,所以在 Hadoop 集群中,DataNode 节点都需安装 HBase Worker Node. 另外,HBase 受 ZooKeeper 管理,还需安装 ZooKeeper 单机或集群.建议 HBase Master 节点不要与集群中其余 Master 节点安装在同一台物理服务器. HBase Mast

基于外部ZooKeeper的GlusterFS作为分布式文件系统的完全分布式HBase集群安装指南

(WJW)基于外部ZooKeeper的GlusterFS作为分布式文件系统的完全分布式HBase集群安装指南 [X] 前提条件 服务器列表: 192.168.1.84 hbase84 #hbase-master 192.168.1.85 hbase85 #hbase-regionserver,zookeeper 192.168.1.86 hbase86 #hbase-regionserver,zookeeper 192.168.1.87 hbase87 #hbase-regionserver,z

hbase集群在启动的时候找不到JAVA_HOME的问题

hbase集群在启动的时候找不到JAVA_HOME的问题,启动集群的时候报错信息如下: [email protected]:/usr/local/hbase-0.90.4/bin# ./start-hbase.sh starting master, logging to /usr/local/hbase-0.90.4/bin/../logs/hbase-root-master-master.out slave1: +========================================