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

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

我们有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模式下的工作代码:

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

  1. from thrift.transport import TSocket,TTransport
  2. from thrift.protocol import TBinaryProtocol
  3. from hbase import Hbase
  4. from hbase.ttypes import *
  5. import jprops
  6. from subprocess import call, check_output
  7. # read cluster.properties
  8. with open('/data/properties/cluster.properties') as fp:
  9. properties = jprops.load_properties(fp)
  10. # kerberos ticket
  11. kerberos_ticket():
  12. principal = properties["principal"]
  13. kinitCommand = "kinit" + " " + "-kt"+ " " + keyTab + " " + principal
  14. call(kinitCommand, shell="True")
  15. return
  16. # Hbase connection
  17. def hbase_connection():
  18. # get hbase data
  19. thriftHost = properties["thriftHost"]
  20. hbaseService = properties["hbaseService"]
  21. Tsock = TSocket.TSocket(thriftHost, 9090)
  22. Tsock.setTimeout(2000000) #Milliseconds timeout
  23. transport = TTransport.TSaslClientTransport(
  24. Tsock,
  25. host=thriftHost,
  26. service=hbaseService,
  27. mechanism='GSSAPI'
  28. )
  29. protocol = TBinaryProtocol.TBinaryProtocol(transport)
  30. client = Hbase.Client(protocol)
  31. return client,transport
  32. # get kerberized ticket
  33. kerberos_ticket()
  34. client,transport = hbase_connection()
  35. transport.open()
  36. 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程序
提前谢谢,
曼吉尔

暂无答案!

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

相关问题