首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Python3.6与serviceID的键签连接到HDFS

用Python3.6与serviceID的键签连接到HDFS
EN

Stack Overflow用户
提问于 2020-06-30 15:21:25
回答 1查看 1.3K关注 0票数 0

我正在尝试下面的代码来连接到hdfs,并做一些与文件相关的操作。请注意,我正在尝试从Centos7环境连接Cloudera实例,其中安装了python3.6。

代码语言:javascript
复制
import io 
from csv import reader
from krbcontext import krbcontext
from hdfs.ext.kerberos import KerberosClient


    
def getKerberosClient(host, port, root):
    
    url = 'http://{host}:{port}/'.format(host=host, port=port)
    client = KerberosClient(url, root=root)
    return client

def main():
    try:
        krb = krbcontext(using_keytab=True,principal='svcid213@AMER.SOMEORG.COM',keytab_file="/nfs-hdfs/kerberos/svcid213_AMER.SOMEORG.COM.keytab")
        print(F'kerberos authentication successful {krb}')
        kerberos_client = getKerberosClient('deltanileuat01.amer.someorg.com', 14000, "/")
        print(F'kerberos_client {kerberos_client}')
        result = kerberos_client.status("/")
        print(F"Output ============\n {result} \n =========================")
    except Exception as e:
        print(F"Detailed error is : {e} ")
   
if __name__ == '__main__':
    main()

我在安装了python3.6的centos-7环境中运行它:没有安装hdfs客户端。

在执行代码之前,我已经完成了pip安装,如下所示

代码语言:javascript
复制
pip3.6 install kerberos
pip3.6 install requests-kerberos
pip3.6 install hdfs

在执行时,我将得到如下所示

代码语言:javascript
复制
kerberos authentication successful <krbcontext.context.krbContext object at 0x7f1f7269c208>
kerberos_client <KerberosClient(url='http://deltanileuat01.amer.someorg.com:14000/')>
Detailed error is : Authentication failure. Check your credentials.

我可能在这里缺少一些配置。这个keytab与JAVA应用程序很好地连接到hdfs。对于python,它将显示此错误。如果( a) HDFS客户端需要在执行环境中配置,或者( b) kinit是需要执行的,请告知执行上述代码。请注意,我们使用服务id连接到带有keytab文件的hdfs。

EN

回答 1

Stack Overflow用户

发布于 2020-07-24 05:33:07

上面的问题通过对Service和keytab文件执行kinit来解决.然后,代码执行所有的罚款。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62660814

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档