HBase ThriftServer Kerberos认证

本文涉及的产品
EMR Serverless StarRocks,5000CU*H 48000GB*H
简介:

1.前置

用户可以通过ThriftServer来访问HBase服务,它的特点如下:

  • ThriftServer代理用户访问HBase服务返回操作结果,用户客户端不需要直接跟HBase进行通信
  • 用户可以使用java/python/php/c++等语言的Thrift客户端代码访问HBase服务(HBase本身客户端只支持java语言)

2. Kerberos下的ThriftServer使用

如果HBase集群开启了Kerberos认证(E-MapReduce可一键创建安全集群,非常方便),那么用户怎么通过ThriftServer访问HBase服务呢?

2.1 ThriftServer配置Kerberos

ThriftServer其实是HBase服务的客户端,既然HBase开启了Kerberos认证,那么ThrifServer也必须配置Kerberos的信息才能正常访问HBase集群服务。

在ThriftServer的hbase-site.xml文件中添加新配置:

  <property>
    <name>hbase.security.authentication</name>
    <value>kerberos</value>
  </property>
    <property>
    <name>hbase.thrift.kerberos.principal</name>
    <value>hbase/_HOST@EMR.123456.COM</value>
  </property>
    <property>
    <name>hbase.thrift.keytab.file</name>
    <value>/etc/ecm/hbase-conf/hbase-thrift.keytab</value>
  </property>

上述配置中实际值以用户为准(principle和keytab需对应)。

2.2 ThriftClient访问ThriftServer

用户使用python/java/php等Thrift客户端访问ThrifServer有两种方式:

2.2.1 ThriftServer不对Client进行身份认证

任何用户都可以通过ThriftServer访问HBase服务,而且都是以ThriftServer本身配置的hbase.thrift.kerberos.principal中的用户名去访问HBase服务,即对HBase服务来说只有一个固定的用户来访问。

如下图所示:
image

这种方式使得HBase集群的Kerberos认证无效,不适合使用开启了Kerberos的场景。

2.2.2 ThriftServer对Client进行身份认证

ThriftServer可以开启对Client进行身份认证,而且以实际的用户身份访问HBase服务。

image

需要做如下配置:

  • ThriftServer的hbase-site.xml中增加新的配置:
  <property>
    <name>hbase.thrift.security.qop</name>
    <value>auth</value>
  </property>

其中hbase.thrift.security.qop可以是auth/auth-init/auth-conf中的一个

  • HBase集群的所有节点core-site.xml中增加新的配置:
  <property>
    <name>hadoop.proxyuser.$user.hosts</name>
    <value>*</value>
  </property>
  <property>
    <name>hadoop.proxyuser.$user.groups</name>
    <value>*</value>
  </property>

备注:
a) $user为ThriftServer本身配置的hbase.thrift.kerberos.principal中的用户
b) 重启HBase集群(无需重启HDFS)

3. 代码示例

上述2.2.2节的场景代码

3.1 python

参考github上一个项目:
https://github.com/joshelser/hbase-thrift1-python-sasl

使用方式在README.md中:

-> 在客户端运行的账号下kinit初始化好Kerberos的TGT
-> ./setup.sh
-> python get_row.py

备注: get_row.py需要根据实际集群的配置修改相关参数

3.2 java

HBase官方的example jar有示例代码:
https://github.com/apache/hbase/tree/master/hbase-examples

https://github.com/apache/hbase/blob/master/hbase-examples/src/main/java/org/apache/hadoop/hbase/thrift/DemoClient.java

-> 在客户端运行的账号下kinit初始化好Kerberos的TGT
->
export HBASE_EXAMPLE_CLASSPATH=`hbase classpath`;

java -cp /usr/lib/hbase-current/lib/hbase-examples-1.1.1.jar:$HBASE_EXAMPLE_CLASSPATH org.apache.hadoop.hbase.thrift.DemoClient $thrift_server_host  $thrift_serve_port true

有兴趣或者有需求的用户可以关注一下E-MapReduce的安全相关的功能,有问题及时联系和反馈。

c7c8f09ebf3cc7795e0dd0da330cec88

相关实践学习
lindorm多模间数据无缝流转
展现了Lindorm多模融合能力——用kafka API写入,无缝流转在各引擎内进行数据存储和计算的实验。
云数据库HBase版使用教程
&nbsp; 相关的阿里云产品:云数据库 HBase 版 面向大数据领域的一站式NoSQL服务,100%兼容开源HBase并深度扩展,支持海量数据下的实时存储、高并发吞吐、轻SQL分析、全文检索、时序时空查询等能力,是风控、推荐、广告、物联网、车联网、Feeds流、数据大屏等场景首选数据库,是为淘宝、支付宝、菜鸟等众多阿里核心业务提供关键支撑的数据库。 了解产品详情:&nbsp;https://cn.aliyun.com/product/hbase &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
算法 Java 大数据
一分钟ECS上搭建云HBase Thriftserver
介绍ecs部署thriftserver流程
4129 0
|
Java 分布式数据库 PHP
HBase Thrift 使用以及Thriftserver 分析
介绍HBase的thrift使用以及thriftsever的源码分析
10672 0
|
7月前
|
Java Shell 分布式数据库
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
【大数据技术Hadoop+Spark】HBase数据模型、Shell操作、Java API示例程序讲解(附源码 超详细)
162 0
|
3月前
|
分布式计算 Java Hadoop
java使用hbase、hadoop报错举例
java使用hbase、hadoop报错举例
116 4
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
Hadoop-35 HBase 集群配置和启动 3节点云服务器 集群效果测试 Shell测试
78 4
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
Hadoop-37 HBase集群 JavaAPI 操作3台云服务器 POM 实现增删改查调用操作 列族信息 扫描全表
34 3
|
2月前
|
分布式计算 Hadoop Shell
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
Hadoop-36 HBase 3节点云服务器集群 HBase Shell 增删改查 全程多图详细 列族 row key value filter
59 3
|
2月前
|
SQL 分布式计算 Hadoop
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
Hadoop-34 HBase 安装部署 单节点配置 hbase-env hbase-site 超详细图文 附带配置文件
90 2
|
2月前
|
存储 分布式计算 Hadoop
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
Hadoop-33 HBase 初识简介 项目简介 整体架构 HMaster HRegionServer Region
57 2
|
6月前
|
存储 分布式计算 Hadoop
Hadoop节点文件存储HBase设计目的
【6月更文挑战第2天】
65 6