#hbase #spark-streaming #kerberos
#hbase #spark-streaming #kerberos
Вопрос:
Приложение spark streaming запускается в Yarn и получает доступ к HBase с помощью Kerberos. Он запускается через 24 часа, он будет зависать с приведенными ниже ошибками:
Caused by: GSSException: No valid credentials provided (Mechanism level: Requested start time is later than end time (11) - Requested start time is later than end time)
at sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:710)
at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:248)
at sun.security.jgss.GSSContextImpl.initSecContext(GSSContextImpl.java:179)
at com.sun.security.sasl.gsskerb.GssKrb5Client.evaluateChallenge(GssKrb5Client.java:193)
... 25 more
Caused by: KrbException: Requested start time is later than end time (11) - Requested start time is later than end time
at sun.security.krb5.KrbTgsRep.<init>(KrbTgsRep.java:73)
at sun.security.krb5.KrbTgsReq.getReply(KrbTgsReq.java:192)
at sun.security.krb5.KrbTgsReq.sendAndGetCreds(KrbTgsReq.java:203)
at sun.security.krb5.internal.CredentialsUtil.serviceCreds(CredentialsUtil.java:309)
at sun.security.krb5.internal.CredentialsUtil.acquireServiceCreds(CredentialsUtil.java:115)
at sun.security.krb5.Credentials.acquireServiceCreds(Credentials.java:454)
at sun.security.jgss.krb5.Krb5Context.initSecContext(Krb5Context.java:641)
... 28 more
Caused by: KrbException: Identifier doesn't match expected value (906)
at sun.security.krb5.internal.KDCRep.init(KDCRep.java:143)
at sun.security.krb5.internal.TGSRep.init(TGSRep.java:66)
at sun.security.krb5.internal.TGSRep.<init>(TGSRep.java:61)
at sun.security.krb5.KrbTgsRep.<init>(KrbTgsRep.java:55)
... 34 more
Kerberos username [yarn]:
Основными кодами аутентификации kerberos являются:
val ugi:UserGroupInformation = UserGroupInformation.loginUserFromKeytabAndReturnUGI(principal,keytab)
ugi.checkTGTAndReloginFromKeytab()
p1 = ugi.doAs(new PrivilegedAction[Iterator[Row]] {
override def run(): Iterator[Row] = {
dataprocess() // error occurs in hbase access in here
}
}
)
Комментарии:
1. Это потому, что ваш
default_lifetime
andticket_lifetime
установлен на 24 часа в вашем krb5.conf. Попробуйте увеличить его до более чем 24 часов.2. Попробуйте передать
--principal
--keytab
параметры и. Spark должен автоматически обновлять билеты Kerberos таким образом. Если вы продолжите получать проблемы, добавьте"spark.hadoop.fs.hdfs.impl.disable.cache": "true"
.