天天看點

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分分鐘開發完了,這不香嗎?

希望有搞定的朋友可以本着人類命運共同體的崇高精神分享出來。