首页 > 解决方案 > 由于缺少 Kerberos 票证,纱线应用程序命令挂起

问题描述

bash 脚本中,我调用yarn application命令以使当前应用程序在受 Kerberos 保护的 Cloudera Hadoop 集群上运行。如果我的应用程序没有运行,则需要重新启动它:

spark_rtp_app_array=( $(yarn application --list -appTypes SPARK -appStates ACCEPTED,RUNNING | awk -F "\t" ' /'my_user'/ && /'my_app'/ {print $1}') )

每当 Kerberos 票证结束时,我需要调用kinit命令,以便在调用 yarn application --list 之前更新该票证:

kinit -kt my_keytab_file.keytab my_kerberos_user

否则,我可能会以身份验证错误结束,该错误会通过以下跟踪以不确定的方式重复:

19/02/13 15:00:22 WARN ipc.Client: Exception encountered while connecting to the server : javax.security.sasl.SaslException: GSS in\

itiate failed [Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)]

19/02/13 15:00:22 WARN security.UserGroupInformation: PriviledgedActionException as:my_kerberos_user (auth:KERBEROS) cause:java.io\

.IOException: javax.security.sasl.SaslException: GSS initiate failed [Caused by GSSException: No valid credentials provided (Mechan\

ism level: Failed to find any Kerberos tgt)]
[...]

有什么方法可以设置 YARN 的最大连接重试次数吗?bash 脚本在 cron 任务中执行,因此不应以任何方式挂起。

标签: authenticationhadoop-yarnkerberosclouderagssapi

解决方案


推荐阅读