Подключитесь к HDFS с помощью keytab идентификатора службы с Python3.6

Я пытаюсь выполнить приведенный ниже фрагмент кода для подключения к hdfs и выполнить некоторые операции, связанные с файлами. Обратите внимание: я пытаюсь подключить экземпляр Cloudera HDFS из среды Centos7 с установленным в нем python3.6.

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()

Я запускаю его из среды centos-7 с установленным python3.6 [ PS: клиент hdfs не установлен ].
Прежде чем я выполнил код, я выполнил установку pip, как показано ниже

pip3.6 install kerberos
pip3.6 install requests-kerberos
pip3.6 install hdfs

При выполнении я получаю, как показано ниже

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.

Мне, вероятно, здесь не хватает какой-то конфигурации. Эта вкладка отлично работает с приложением JAVA для подключения к hdfs. С python появляется эта ошибка. Сообщите, что для выполнения приведенного выше кода необходимо: а) настроить клиент HDFS в среде выполнения ИЛИ б)kinitэто то, что нужно сделать. Обратите внимание, что мы используем идентификатор службы для подключения к hdfs с файлом keytab.

1 ответ

Вышеупомянутая проблема решена путем выполнения kinit с идентификатором службы и файлом keytab. Затем код выполняет все нормально

Другие вопросы по тегам