Avez-vous effectué un kinit avant le début du processus? Seulement alors, il pourrait être renouvelé.
Le keytab est-il sous le même utilisateur que votre programme? c'est-à-dire que l'utilisateur a le droit de renouveler le keytab.
Quelle est la pile exacte?
Peut-être que cela fonctionnera pour vous, en pointant vers l'emplacement exact de votre keytab. Parce que quand vous faites un renouvellement quand il n'y a pas de keytab c'est bien sûr inutile.
import org.apache.hadoop.security.UserGroupInformation;
org.apache.hadoop.conf.Configuration conf = new
org.apache.hadoop.conf.Configuration();
conf.set("hadoop.security.authentication", "Kerberos");
UserGroupInformation.setConfiguration(conf);
UserGroupInformation.loginUserFromKeytab("[email protected]", "/path/to/example_user.keytab");
Votre question n'est pas claire. S'agit-il du renouvellement du ticket, comme pour 'kinit -R', ou de la recréation de ticket, comme avec' kinit -kt 'ou avec la méthode '.checkTGTAndReloginFromKeytab()'? Et BTW votre formatage n'est pas approprié (c.-à-d. «Les extraits de code» ne sont pas supposés être ** gras **) –
Quelques recherches sur Google et/ou StackOverflow vous auraient dit que l'implémentation Java de Kerberos est ** incomplète ** - - en particulier, Java ne peut pas créer de tickets renouvelables et ne peut pas écrire de tickets dans le cache de fichiers (bien qu'il puisse le lire). Hadoop utilise Java pour partager la plupart de ses limitations. Bien qu'il existe une solution sale pour renouveler les tickets préexistants dans le cache. –
Lectures recommandées: https://stackoverflow.com/questions/33211134/hbase-kerberos-connection-renewal-strategy et https://stackoverflow.com/questions/34616676/should-i-call-ugi-checktgtandreloginfromkeytab-avant- Chaque action sur Hadoop. –