Как контролировать количество повторных попыток oop IP C для отправки задания Spark? - PullRequest
1 голос
/ 22 января 2020

Предположим, я пытаюсь отправить задание Spark (2.4.x) в кластер Kerberized без действительных учетных данных Kerberos. В этом случае средство запуска Spark несколько раз пытается инициировать вызов Had oop IP C, но не удается:

20/01/22 15:49:32 INFO retry.RetryInvocationHandler: java.io.IOException: Failed on local exception: java.io.IOException: org.apache.hadoop.security.AccessControlException: Client cannot authenticate via:[TOKEN, KERBEROS]; Host Details : local host is: "node-1.cluster/172.18.0.2"; destination host is: "node-1.cluster":8032; , while invoking ApplicationClientProtocolPBClientImpl.getClusterMetrics over null after 1 failover attempts. Trying to failover after sleeping for 35160ms.

Это будет повторяться несколько раз (в моем случае 30), пока в конечном итоге программа запуска сдается, и отправка задания считается неудачной.

Различные другие подобные вопросы упоминают эти свойства (которые на самом деле являются свойствами YARN, но имеют префикс spark. в соответствии со стандартным механизмом передачи их приложению Spark ).

  • spark.yarn.maxAppAttempts
  • spark.yarn.resourcemanager.am.max-attempts

Однако ни одно из этих свойств не влияет на поведение, которое я описываю. Как я могу контролировать количество попыток IP C при отправке задания Spark?

Ответы [ 2 ]

1 голос
/ 22 января 2020

С первых дней core-site.xml определены два свойства для управления логами повторов c в IP C comms:

Настройка: ipc.client.connect.max.retries
По умолчанию: 10
Описание: указывает количество попыток, которые клиент сделает для установления sh соединения с сервером.

Настройка: ipc.client.connect.max.retries.on.timeouts
По умолчанию: 45
Описание: указывает число повторных попыток, которые клиент выполнит по истечении времени ожидания сокета для установления sh соединения с сервером.

... вместе с интервалом повторения и значением времени ожидания сам.

Кроме того, было добавлено настраиваемое свойство ipc.client.connect.max.retries.on.sasl (с JIRA HAD OOP -10747 ) специально для обработки повторов из-за ошибок аутентификации SASL. Вы можете просмотреть источник здесь . До версии 2.5.0 это было просто жестко задано как 5.

0 голосов
/ 01 февраля 2020

После длительной отладки я выяснил, какие здесь свойства.

  • yarn.client.failover-max-attempts (контролирует максимальное количество попыток)

Без указания этого число попыток зависит от соотношения этих двух свойств (числитель первый, знаменатель второй).

  • yarn.resourcemanager.connect.max-wait.ms
  • yarn.client.failover-sleep-base-ms

Конечно, как и для любых свойств YARN, они должны иметь префикс spark.hadoop. в контексте отправки задания Spark.

Соответствующий класс (который разрешает все эти свойства) - RMProxy в пределах Had. oop проект YARN (источник здесь ). Все эти и связанные свойства задокументированы здесь .

...