gpt4 book ai didi

apache-spark - 几天后,Spark 流作业将状态从 RUNNING 更改为 ACCEPTED

转载 作者:行者123 更新时间:2023-12-02 02:53:10 26 4
gpt4 key购买 nike

我有一个长期运行的从 kafka 读取的 spark streaming 作业。此作业启动一次,预计将永远运行。

集群是 kerberos 化的。

我观察到作业在几天内运行良好(超过 7 天)。在作业开始时,我们可以看到它获取了有效期为 7 天的 HDFS 委托(delegate) token 。

18/06/17 12:32:11 INFO hdfs.DFSClient: Created token for user: HDFS_DELEGATION_TOKEN owner=user@domain, renewer=yarn, realUser=, issueDate=1529213531903, maxDate=1529818331903, sequenceNumber=915336, masterKeyId=385 on ha-hdfs:cluster

Job 持续运行超过 7 天,但在那段时间之后(maxDate 后几天)它随机突然将状态更改为 ACCEPTED。在此之后,它尝试获取新的 kerberos 票证,但未能给出 kerberos 错误 -

18/06/26 01:17:40 INFO yarn.Client: Application report for application_xxxx_80353 (state: RUNNING)
18/06/26 01:17:41 INFO yarn.Client: Application report for application_xxxx_80353 (state: RUNNING)
18/06/26 01:17:42 INFO yarn.Client: Application report for application_xxxx_80353 (state: ACCEPTED)
18/06/26 01:17:42 INFO yarn.Client:
client token: Token { kind: YARN_CLIENT_TOKEN, service:}

最后的异常(exception)-

18/06/26 01:17:45 WARN security.UserGroupInformation: PriviledgedActionException as:user@domain (auth:KERBEROS) cause:javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]

注意 - 我已经尝试传递 keytab 文件,以便可以永远完成委派。但是我无法将 keytab 文件传递​​给 spark,因为它与 kafka jaas.conf 冲突。

所以有3个相关问题-

  • 为什么作业可以将状态从 RUNNING 更改为 ACCEPTED?
  • 问题是否因为我无法通过 key 表而发生?如果是,如何通过 kerberos 使用 kafka 和 spark-streaming 时传递 keytab?-keytab 不起作用,因为我们使用 --files 传递 keytab。 keytab 已在 jaas.conf 中配置并在 spark-submit 中使用 --files 参数分发。工作可以获得新票的任何其他方式?
  • 当作业再次尝试进入 RUNNING 状态时,YARN 拒绝它,因为它没有有效的 KRB 票证。如果我们确保司机节点始终拥有有效的 KRB 票,会有帮助吗?因此,当发生这种情况时,就像提交新的 spark 作业一样;因为该节点具有有效的 KRB 票证并且它不会给出 kerberos 错误。

最佳答案

  • Why job could change status from RUNNING to ACCEPTED?

如果应用程序失败并且您在 AM 重试中仍有可用尝试,则作业将从 RUNNING 转换为 ACCEPTED。

  • Is the issue happening as I am not able to pass keytab? If yes, how to pass keytab when using kafka and spark-streaming over kerberos? -keytab does not work as we are passing keytab with --files. keytab is already configured in jaas.conf and distributed with --files param in spark-submit. Any other way job can acquire new ticket?

是的。 Spark 允许长时间运行的应用程序,但在安全系统上,您必须传入 key 表。

引用 Configuring Spark on YARN for Long-Running Applications添加强调:

Long-running applications such as Spark Streaming jobs must be able to write to HDFS, which means that the hdfs user may need to delegate tokens possibly beyond the default lifetime. This workload type REQUIRES passing Kerberos principal and keytab to the spark-submit script using the --principal and --keytab parameters. The keytab is copied to the host running the ApplicationMaster, and the Kerberos login is renewed periodically by using the principal and keytab to generate the required delegation tokens needed for HDFS.

基于 KAFKA-1696,这个问题还没有解决,所以我不确定你能做什么,除非你正在运行 CDH 并且可以升级到 Spark 2.1。

引用资料:

关于apache-spark - 几天后,Spark 流作业将状态从 RUNNING 更改为 ACCEPTED,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51041518/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com