天天看点

Windows 环境 python读需kerberos认证的hdfs

Windows 环境 python读需kerberos认证的hdfs

不喜欢废话,直接先上结论:

Windows环境下python读kerberos认证的hdfs不支持,即使用anaconda中的也不行,因为再撸代码过程中,必须引用krbcontext包来认证,krbcontext提供了一个kerberos上下文,可以将代码放入其中,其中 需要凭据缓存中的有效票证。但是krbcontext包中的引用包pwd不支持Windows环境,pyspark也不能绕不开krbcontext包。

不废话直接上官方例子:

hdfs模块的官方文档地址是 https://hdfscli.readthedocs.io/en/latest/ ,

下面是一段代码示例:

krbcontext 和 hdfs 是python连接hdfs时需要用到的库,它所建立的连接本质上是一个http连接,安装hdfs时,需要指定kerberos插件

pip install hdfs[kerberos]

pip install krbcontext

代码:

from hdfs.ext.kerberos import KerberosClient

from krbcontext import krbcontext

keytab_file = ‘/etc/coolpython.keytab’

principal = ‘hadoop/[email protected]’

with krbcontext(using_keytab=True, keytab_file=keytab_file, principal=principal, ccache_file=’/tmp/cache_keytab_zds’):

client = KerberosClient(url=‘http://集群的ip:50070’)

hdfs_save_path = ‘/user/hadoop/backup/001’

client.makedirs(hdfs_save_path) # 新建目录

官方给的例子写的也很清楚,直接都是Linux环境的,都没考虑过python再Windows环境下使用。

也尝试了krbcontext、pwd包再Windows环境下替代包,尝试的过程,krbcontext这个包再Kerberos认证过程中不可少,绕不开。后又尝试了pwd的替代方法,如直接引用自定义–game over,winpwd替代pwd–game over,python-daemon尝试降级到2.1.2版,再安装luigi–game over。

直接放弃用python语言了,直接用spark分分钟开发完了,这不香吗?

希望有搞定的朋友可以本着人类命运共同体的崇高精神分享出来。