python3到kerberos-hbase-thrift-https的连接

lo8azlld  于 2021-07-13  发布在  Hbase
关注(0)|答案(0)|浏览(504)

我们有python3应用程序连接到hbase并获取数据。
连接与kerberos hbase thrift二进制协议(在tsocket中)配合得很好,直到hadoop团队将hadoop系统移动到cloudera和cloudera manager,后者以https模式启动kerberos hbase thrift。
现在,协议从tsocket更改为http/htps,python代码无法使用带有sasl kerberos的http客户机进行身份验证。
python 3.6.8中使用的当前python版本
和包版本是
节俭=0.13.0
hbase节俭=0.20.4
纯天然气=0.5.1
tsocket模式下的工作代码:

############

from thrift.transport import TSocket,TTransport
from thrift.protocol import TBinaryProtocol
from hbase import Hbase
from hbase.ttypes import *
import jprops
from subprocess import call, check_output

# read cluster.properties

with open('/data/properties/cluster.properties') as fp:
properties = jprops.load_properties(fp)

# kerberos ticket

kerberos_ticket():
principal = properties["principal"]
kinitCommand = "kinit" + " " + "-kt"+ " " + keyTab + " " + principal
call(kinitCommand, shell="True")
return

# Hbase connection

def hbase_connection():

# get hbase data

thriftHost = properties["thriftHost"]
hbaseService = properties["hbaseService"]
Tsock = TSocket.TSocket(thriftHost, 9090)
Tsock.setTimeout(2000000) #Milliseconds timeout
transport = TTransport.TSaslClientTransport(
Tsock,
host=thriftHost,
service=hbaseService,
mechanism='GSSAPI'
)
protocol = TBinaryProtocol.TBinaryProtocol(transport)
client = Hbase.Client(protocol)
return client,transport

# get kerberized ticket

kerberos_ticket()

client,transport = hbase_connection()
transport.open()

print(client.getTableNames())

###########

我发现在tttransport.py代码中有一个注解,它只支持tsocket
https://github.com/apache/thrift/blob/master/lib/py/src/transport/ttransport.py TTransport.TSaslClientTransport 传输:要使用的底层传输,通常只是一个tsocket
我们试着用
https://github.com/apache/thrift/blob/master/lib/py/src/transport/thttpclient.py THttpClient.THttpClient(url) 但它不能用于sasl kerberos的tttransport.tsaslclienttransport。
请帮助建议在cloudera管理的kerberos hbase thrift https和使用python连接hbase(kerberos)的任何替代方法中是否不能使用python。
附言:我通过这个链接遇到了一个类似的问题,但没有具体的解决办法
通过thrift服务器以http模式连接到hbase的python程序
提前谢谢,
曼吉尔

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题