Невозможно подключиться к HDFS с рабочего узла / узла данных в кластере Kerberized, используя pyarrow 'hdfs API - PullRequest
0 голосов
/ 12 июля 2019

Вот что я пытаюсь:

import pyarrow as pa

conf = {"hadoop.security.authentication": "kerberos"}
fs = pa.hdfs.connect(kerb_ticket="/tmp/krb5cc_44444", extra_conf=conf)

Однако, когда я отправляю это задание в кластер с помощью Dask-YARN, я получаю следующую ошибку:

  File "test/run.py", line 3
    fs = pa.hdfs.connect(kerb_ticket="/tmp/krb5cc_44444", extra_conf=conf)
  File "/opt/hadoop/data/10/hadoop/yarn/local/usercache/hdfsf6/appcache/application_1560931326013_183242/container_e47_1560931326013_183242_01_000003/environment/lib/python3.7/site-packages/pyarrow/hdfs.py", line 211, in connect
  File "/opt/hadoop/data/10/hadoop/yarn/local/usercache/hdfsf6/appcache/application_1560931326013_183242/container_e47_1560931326013_183242_01_000003/environment/lib/python3.7/site-packages/pyarrow/hdfs.py", line 38, in __init__
  File "pyarrow/io-hdfs.pxi", line 105, in pyarrow.lib.HadoopFileSystem._connect
  File "pyarrow/error.pxi", line 83, in pyarrow.lib.check_status
pyarrow.lib.ArrowIOError: HDFS connection failed

Iтакже попытался установить host (to a name node) и port (=8020), однако я сталкиваюсь с той же ошибкой.Поскольку ошибка не носит описательный характер, я не уверен, какой параметр необходимо изменить.Есть какие-нибудь подсказки?

1 Ответ

0 голосов
/ 19 июля 2019

Обычно конфигурация и тикет Kerberos загружаются автоматически, и вы должны иметь возможность подключиться, используя только

fs = pa.hdfs.connect()

.Для этого требуется, чтобы вы уже вызвали kinit (на рабочих узлах учетные данные (но не тикет) автоматически передаются в рабочую среду, не нужно ничего делать).Я предлагаю попробовать без параметров локально, затем на рабочем узле.

...