如何控制spark作业提交的hadoop ipc重试次数?

yhxst69z  于 2021-05-27  发布在  Hadoop
关注(0)|答案(1)|浏览(678)

假设我尝试向kerberized集群提交spark(2.4.x)作业,但没有有效的kerberos凭据。在这种情况下,spark launcher反复尝试启动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重试的次数?

aiazj4mn

aiazj4mn1#

经过大量的调试,我找到了这里涉及的属性。 yarn.client.failover-max-attempts (控制最大尝试次数)
如果不指定这一点,尝试次数似乎来自这两个属性的比率(分子第一,分母第二)。
yarn.resourcemanager.connect.max-wait.ms yarn.client.failover-sleep-base-ms 当然,与任何Yarn特性一样,这些特性必须加前缀 spark.hadoop. 在spark工作提交的背景下。
相关的类(解析所有这些属性)是 RMProxy ,在hadoop yarn项目中(来源于此处)。所有这些以及相关的属性都记录在这里。

相关问题