温馨提示:本文翻译自stackoverflow.com,查看原文请点击:其他 - How to control the number of Hadoop IPC retry attempts for a Spark job submission?
apache-spark hadoop

其他 - 如何控制Spark作业提交的Hadoop IPC重试次数?

发布于 2020-04-08 10:19:00

假设我尝试在没有有效的Kerberos凭据的情况下将Spark(2.4.x)作业提交给Kerberized群集。在这种情况下,Spark启动器会反复尝试启动Hadoop IPC调用,但失败:

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

但是,这些属性都不会影响我正在描述的行为。如何控制Spark作业提交中IPC重试的次数?

查看更多

提问者
Jeff Evans
被浏览
189
Jeff Evans 2020-02-01 05:49

经过大量调试,我弄清楚了此处涉及的属性。

  • yarn.client.failover-max-attempts (控制最大尝试次数)

如果没有指定,尝试次数似乎来自这两个属性的比率(分子优先,分母次之)。

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

当然,与任何YARN属性一样,这些属性必须spark.hadoop.在Spark作业提交的上下文中带有前缀

相关类(解析所有这些属性)RMProxy在Hadoop YARN项目中(在此处提供)。所有这些以及相关的属性都记录在这里