#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 Стива Лохрана)