Le client FI a envoyé une erreur au cluster Hadoop.

Dernière réponse oct. 14, 2019 12:02:56 24 1 0 0

J'ai constaté que l'application cliente soumet la tâche au cluster hadoop et lève une exception.Le message d'erreur est Impossible de trouver un tgt Kerberos ou Aucune information d'identification valide fournie. Pouvez-vous m'aider à analyser la cause de ce problème, je vais avoir une solution. Je vous en serai très reconnaissant.

  • x
  • Standard:

Med_Taher
publié il y a 2019-10-14 12:02:56 Utile(0) Utile(0)
Bonjour Monsieur!

Ce problème peut être analysé à partir des trois scénarios suivants:

1. Lorsque l'application cliente soumet la tâche, elle n'effectue pas l'opération de connexion KDC, ce qui entraîne l'absence de TGT dans la mémoire. Lorsque la tâche est soumise, le TGT est introuvable et l'erreur se produit.

2. La tâche client utilise l'interface d'authentification KDC fournie par Hadoop. En conséquence, la tâche cliente d'un produit donné a directement appelé la fonction loginfromkeytab pour obtenir le TGT dans le multi-thread, ce qui a entraîné la création de plusieurs TGT dans la mémoire d'un processus, suivis de reloginFromKeytab. Lors de l'actualisation du TGT, rien ne garantit que tous les TGT seront actualisés.

3. La façon dont le client génère tgt est que le script encapsule la commande kinit -kt xxx.keytab xxx et que plusieurs scripts utilisent le même utilisateur en même temps, ce qui créera une relation concurrentielle et plusieurs processus permettront au tgt généré par kinit de se générer . . Dans le fichier / tmp / krb5cc_xxx , un processus écrit ce fichier et un autre processus ne pourra pas le lire.

Scénario 1 correspondant:

Effectuez l'opération d'authentification kinit et soumettez la tâche.

Scénario de solution 2 correspondant:

Au début du processus, appelez la fonction loginfromkeytab fournie par hadoop, connectez-vous au KDC et obtenez le TGT. Au début de la tâche de resoumission suivante, appelez la fonction reloginFromKeytab fournie par hadoop pour actualiser le TGT, qui est généralement un problème de code d'application.

// Entrée de processus pour la première connexion, connexion établie avec succès userGroupInformation
UserGroupInformation.loginUserFromKeytab (this.userPrincipal,
this.keytabFile);
// Avant que le thread ne soumette la tâche:
UserGroupInformation.getLoginUser (). ReloginFromKeytab ();

Scénario de solution 3 correspondant:

Avant la kinit de chaque script, exportez KRB5CCNAME = keytab_path pour vous assurer que le chemin de chaque processus est incohérent.
  • x
  • Standard:

Commentaire

envoyer
Connectez-vous pour répondre. Se connecter | Enregistrer

Remarque Remarque : Afin de protéger vos droits et intérêts légitimes, ceux de la communauté et des tiers, ne divulguez aucun contenu qui pourrait présenter des risques juridiques pour toutes les parties. Le contenu interdit comprend, sans toutefois s'y limiter, le contenu politiquement sensible, le contenu lié à la pornographie, aux jeux d'argent, à l'abus et au trafic de drogues, le contenu qui peut divulguer ou enfreindre la propriété intellectuelle d'autrui, y compris les secrets professionnels, les marques commerciales, les droits d'auteur et les brevets, ainsi que la vie privée personnelle. Ne partagez pas votre nom d'utilisateur ou votre mot de passe avec d'autres personnes. Toutes les opérations effectuées à partir de votre compte seront considérées comme vos propres actions, et toutes les conséquences en découlant vous seront imputées. Pour plus de détails, voir « Politique de confidentialité ».
Si le bouton de la pièce-jointe n'est pas disponible, mettez à jour Adobe Flash Player à la dernière version.
Connectez-vous pour participer à la communication et au partage

Connectez-vous pour participer à la communication et au partage

S'identifier