Команда запуска Paramiko завершается ошибкой из-за проблемы с проверкой подлинности Kerberos

#ssh #hdfs #kerberos #paramiko

Вопрос:

Мне нужно извлечь файлы из hdfs с помощью кода python, и я использую клиентское соединение paramiko для запуска команды в файловой системе hadoop.

Фрагмент кода выглядит следующим образом

     ssh = paramiko.SSHClient()
    ssh.set_missing_host_key_policy(AutoAddPolicy())
    ssh.connect(server,
                username=username,
                password=password)
    ssh.exec_command('hdfs dfs -cat '  file_path)
   
 

Это работает нормально, и я могу получить содержимое файла из hdfs по мере необходимости. Однако, если я выполняю это для нескольких файлов последовательно или выполняю другие команды для поиска или перечисления файлов, после нескольких команд он начинает отказывать с сообщением об ошибке

Ошибка при локальном исключении: исключение java.io.IOException: org.apache.hadoop.security.AccessControlException: Клиент не может пройти аутентификацию с помощью:[ТОКЕН, KERBEROS]

Даже если я попытаюсь выполнить kinitad перед выполнением каждой команды, я все равно получу эту ошибку случайным образом.

Как я могу избавиться от этой ошибки?

Комментарии:

1. Недостаточно конкретно. В трассировке стека должен быть список caused by: записей. Без них это немного похоже на ответ на вопрос «как я могу избавиться от сетевых проблем» (да, какого рода?)

2. И даже после анализа трассировки стека вам могут потребоваться некоторые глубокие / неприятные / трудоемкие / высокотехнические сеансы отладки для устранения неполадок такого рода Kerberos. Удачи. Рекомендуемое чтение: Hadoop и Kerberos, безумие за воротами» (GitBook Стива Лохрана)