Токен делегирования Hdfs не найден в кеше - ошибка в приложении Spark - PullRequest
0 голосов
/ 03 июля 2018

У меня есть простое приложение Spark Streaming в Spark версии 2.3.0, которое помещает результаты каждого обработанного пакета в HDFS. Мое приложение работает на YARN в клиенте режима развертывания, и я использую кластер kerberized hadoop (hadoop2.6.0-cdh5.9.3). Я установил --principal и --keytab в команде spark-submit.

Через несколько дней мое приложение не может писать на HDFS из-за отсутствия маркера делегирования в кеше. После перезапуска приложения потоковая передача работает корректно, но через несколько дней происходит сбой снова по той же причине.

Это лог с драйвера:

ERROR JobScheduler: Error running job streaming job 1528366650000 ms.0
org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.token.SecretManager$InvalidToken): token (token for spark_online: HDFS_DELEGATION_TOKEN owner=spark@DCWP, renewer=yarn, realUser=, issueDate=1528232733578, maxDate=1528837533578, sequenceNumber=14567778, masterKeyId=1397) can't be found in cache

Проблема может быть решена, когда я добавлю в конфигурацию приложения spark.hadoop.fs.hdfs.impl.disable.cache = true, но отключение кэша оказывает большое влияние на производительность обработки.

Если бы кто-нибудь мог мне помочь, я был бы очень признателен!

1 Ответ

0 голосов
/ 25 апреля 2019

Скорее всего, ваш билет Kerberos нужно будет обновить (поэтому он будет работать при перезапуске).

Время жизни билетов Kerberos имеет довольно приличное прохождение по двум настройкам, в частности, на которые вам придется взглянуть.

  • Вариант 1: установка времени жизни более продолжительным
  • Option2: второй процесс, который будет просто kinit в фоновом режиме, когда вам это нужно,

Я предпочитаю Вариант 1 и использую 30 дней или около того. Это был хороший способ отслеживать «когда я в последний раз перезапускал этот сервис».

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...