Какова основная причина исключения в файле shared.scheduler.KilledWorker? - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь запустить задание Dask в кластере YARN.Это задание для чтения и записи в HDFS с использованием библиотеки hdfs3 .

  • Когда я запускаю его на кластере без слоя безопасности Kerberos, он работает нормально.
  • Но в кластере с уровнем безопасности Kerberos мне пришлось реализовать решение здесь , чтобы избежать ошибок, связанных с Kerberos.Запуск того же задания привел к следующей ошибке:
  File "/fsstreamdevl/f6_development/acoustics/acoustics_analysis_dask/acoustics_analytics/task_runner/task_runner.py", line 123, in run
    dask.compute(tasks)
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/dask/base.py", line 446, in compute
    results = schedule(dsk, keys, **kwargs)
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/distributed/client.py", line 2568, in get
    results = self.gather(packed, asynchronous=asynchronous, direct=direct)
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/distributed/client.py", line 1822, in gather
    asynchronous=asynchronous,
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/distributed/client.py", line 753, in sync
    return sync(self.loop, func, *args, **kwargs)
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/distributed/utils.py", line 331, in sync
    six.reraise(*error[0])
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/six.py", line 693, in reraise
    raise value
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/distributed/utils.py", line 316, in f
    result[0] = yield future
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/tornado/gen.py", line 735, in run
    value = future.result()
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/tornado/gen.py", line 742, in run
    yielded = self.gen.throw(*exc_info)  # type: ignore
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/distributed/client.py", line 1653, in _gather
    six.reraise(type(exception), exception, traceback)
  File "/anaconda_env/projects/f6acoustics/dev/dask_yarn_test/lib/python3.7/site-packages/six.py", line 693, in reraise
    raise value
distributed.scheduler.KilledWorker: ('__call__-6af7aa29-2a09-45f3-a5e2-207c06562672', <Worker 'tcp://10.194.211.132:11927', memory: 0, processing: 1>)
  • Как ни странно, запуск того же решения на прежнем кластере без уровня безопасности Kerberos, яполучите ту же ошибку.

Просматривая журналы приложений YARN, я вижу следующую трассировку, но не могу сказать, что это значит.

distributed.nanny - INFO - Closing Nanny at 'tcp://10.194.211.133:17659'
Traceback (most recent call last):
  File "/opt/hadoop/data/05/hadoop/yarn/local/usercache/hdfsf6/appcache/application_1560931326013_171773/container_e47_1560931326013_171773_01_000003/environment/lib/python3.7/multiprocessing/queues.py", line 242, in _feed
    send_bytes(obj)
  File "/opt/hadoop/data/05/hadoop/yarn/local/usercache/hdfsf6/appcache/application_1560931326013_171773/container_e47_1560931326013_171773_01_000003/environment/lib/python3.7/multiprocessing/connection.py", line 200, in send_bytes
    self._send_bytes(m[offset:offset + size])
  File "/opt/hadoop/data/05/hadoop/yarn/local/usercache/hdfsf6/appcache/application_1560931326013_171773/container_e47_1560931326013_171773_01_000003/environment/lib/python3.7/multiprocessing/connection.py", line 404, in _send_bytes
    self._send(header + buf)
  File "/opt/hadoop/data/05/hadoop/yarn/local/usercache/hdfsf6/appcache/application_1560931326013_171773/container_e47_1560931326013_171773_01_000003/environment/lib/python3.7/multiprocessing/connection.py", line 368, in _send
    n = write(self._handle, buf)
BrokenPipeError: [Errno 32] Broken pipe

End of LogType:dask.worker.log

Я не вижу явных сообщений в журналах о низкойобъем памяти.Кто-нибудь знает, как диагностировать эту проблему?

1 Ответ

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

hdfs3 больше не поддерживается.У вас есть два основных варианта взаимодействия с HDFS:

  • Pyarrow's hdfs драйвер (через библиотеку jni libhdfs), который требует, чтобы вы правильно настроили требования java и hadoop и были доступны для них.сеанс, называющий его
  • webhdfs, например, в fsspec , который не требует библиотек Java и может взаимодействовать с Kerberos , если в вашей системе разрешена HTTP-аутентификация .1012 *
...