hadoop重启Namenode时,appTokens报FileNotFoundException
现象 报错如下 Application application_1405852606905_0014 failed 3 times due to AM Container for appattempt_1405852606905_0014_000003 exited with exitCode: -1000 due to: RemoteTrace: java.io.FileNotFoundException: File does not exist: hdfs:
现象
报错如下
Application application_1405852606905_0014 failed 3 times due to AM Container for appattempt_1405852606905_0014_000003 exited with exitCode: -1000 due to: RemoteTrace: java.io.FileNotFoundException: File does not exist: hdfs://mycluster:8020/user/kpi/.staging/job_1405852606905_0014/appTokens at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:809)
同时注意到是因为每次重启nodemanager才发生。
首先用关键词“apptokens FileNotFoundException”在google和issue搜索没找到相关的问题。
猜测原因
可能找不到的原因:1.客户端没上传成功 2.上传成功了,但后面不知道给谁删了
重现
既然在网上找不到,尝试在测试环境重现这个问题,运行一个sleep job
cd /opt/cloudera/parcels/CDH/lib/hadoop-mapreduce; hadoop jar hadoop-mapreduce-client-*-tests.jar sleep -Dmapred.job.queue.name=sleep -m5 -r5 -mt 60000 -rt 30000 -recordt 1000
重启nodemanage后会发现报错。
分析日志
但发现找不到AM的日志,哪里去了?我们的hadoop环境都配置了“日志聚集”(yarn.log-aggregation-enable),失败的任务就把日志删了(可能是bug),尝试关掉后,从crontainer日志找到AM日志。
同时还可以看ResourceManager,NameNode,HDFS审计日志(hdfs-audit.log)
从AM日志可以看到第一次尝试好像是成功的,从HDFS审计日志发现了删除staging的目录
cmd=delete src="http://fatkun.com/user/kpi/.staging/job_1405852606905_0013
到此可以确认目录是被删除了,导致后面的job失败,但谁删了这个目录?
继续搜索
代码很多,需要定位一下那里操作.staging这个目录,确定谁删了这个目录。在issue搜索“staging delete”,看有没有相关的操作代码。 同时阅读代码发现了org.apache.hadoop.mapreduce.v2.app.MRAppMaster.cleanupStagingDir()方法,对照日志,可以确定是这个方法删除了staging目录。
public synchronized void stop() { ... //这里判断了是不是AM的最后一次尝试,如果是才清理 if(isLastAMRetry) { cleanupStagingDir(); } ... }
这个逻辑还算正常, 继续找isLastAMRetry是怎么来的
public void shutDownJob() { ... //We are finishing cleanly so this is the last retry isLastAMRetry = true; // Stop all services // This will also send the final report to the ResourceManager LOG.info("Calling stop for all the services"); MRAppMaster.this.stop(); ... }
发现调用了shutDownJob,会把isLastAMRetry设置为true,调用shutDownJob是因为接收到JobFinishEvent事件。
我们多了一些信息,偷懒在issue继续搜索一下,看有没有人解决了。
这次找到issue了,https://issues.apache.org/jira/browse/MAPREDUCE-5086
阅读patch,发现之前忽略了RM报的一个错误。
org.apache.hadoop.yarn.exceptions.impl.pb.YarnRemoteExceptionPBImpl: Application doesn't exist in cache appattempt_1405852606905_0014_000001
结果
重启nodemanager导致RM的appattempt cache数组删除,JobImpl返回了InternalError,AM认为出错了就没必要重试了,直接置isLastRetry=true。
修改方式是加了一个状态,表明这是“RM重启”了(注意这里不是nodemanager重启,有一些关联),还可以继续重试。具体修改阅读patch https://issues.apache.org/jira/browse/MAPREDUCE-5086
最后,由于patch修改的版本和我们用的版本不一致,还得需要用我们使用的版本依照它的思路改一遍。
原文地址:hadoop重启Namenode时,appTokens报FileNotFoundException, 感谢原作者分享。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Lorsque vous utilisez le téléphone mobile Samsung S24 Ultra, vous pouvez occasionnellement rencontrer des problèmes ou devoir réinitialiser l'appareil. Dans ce cas, le redémarrage du téléphone est une solution courante. Cependant, cela peut prêter à confusion si vous ne connaissez pas grand-chose des étapes. Cependant, ne vous inquiétez pas, je vais vous montrer comment redémarrer correctement votre téléphone Samsung S24 Ultra. Comment redémarrer le téléphone Samsung s24Ultra 1. Affichez le menu de contrôle pour arrêter : faites glisser votre doigt depuis le haut de l'écran Samsung pour afficher le menu des outils de raccourci, cliquez sur l'icône d'alimentation (une combinaison d'arcs et de lignes verticales) pour afficher Dans l'interface de sélection d'arrêt et de redémarrage, cliquez sur Redémarrer simplement ; 2. Utilisez la combinaison de touches pour arrêter : appuyez longuement sur la touche de volume et sur la touche d'alimentation pour afficher le menu de sélection d'arrêt et de redémarrage, cliquez pour sélectionner l'arrêt. En appuyant et en maintenant

La touche F5 ne fonctionne pas correctement sur votre PC Windows 11/10 ? La touche F5 est généralement utilisée pour actualiser le bureau ou l'explorateur ou recharger une page Web. Cependant, certains de nos lecteurs ont signalé que la touche F5 actualisait leur ordinateur et ne fonctionnait pas correctement. Comment activer l’actualisation F5 dans Windows 11 ? Pour actualiser votre PC Windows, appuyez simplement sur la touche F5. Sur certains ordinateurs portables ou de bureau, vous devrez peut-être appuyer sur la combinaison de touches Fn+F5 pour terminer l'opération d'actualisation. Pourquoi l’actualisation F5 ne fonctionne-t-elle pas ? Si l'appui sur la touche F5 ne parvient pas à actualiser votre ordinateur ou si vous rencontrez des problèmes sous Windows 11/10, cela peut être dû au verrouillage des touches de fonction. D'autres causes potentielles incluent le clavier ou la touche F5

La réinstallation du système n'est peut-être pas une solution infaillible, mais après la réinstallation, j'ai constaté que lorsque l'ordinateur est allumé, il affiche du texte blanc sur fond noir, puis affiche une invite : redémarrez et sélectionnez le périphérique de démarrage approprié, que se passe-t-il ? Une telle invite est généralement provoquée par une erreur de démarrage. Afin d'aider tout le monde, l'éditeur vous a apporté une solution. L'utilisation d'un ordinateur est de plus en plus populaire et les pannes informatiques sont de plus en plus courantes. Non, récemment, certains utilisateurs ont rencontré un écran noir lors de la mise sous tension de l'ordinateur et ont été invités à redémarrer et à sélectionner le périphérique de démarrage approprié, et le système informatique n'a pas pu démarrer. normalement. Que se passe-t-il? Comment le résoudre? L'utilisateur est confus. Ensuite, l'éditeur suivra.

Comment redémarrer nginx : 1. Redémarrez Nginx sous Linux et utilisez systemd pour gérer le service Nginx. Il redémarrera Nginx et lira toutes les nouvelles modifications de configuration. 2. Redémarrez Nginx sous Windows sera rechargé et toutes les modifications de configuration seront appliquées. , sans avoir à arrêter et redémarrer complètement le serveur ; 3. Redémarrez Nginx sur votre Mac, ce qui redémarrera Nginx et appliquera toutes les nouvelles modifications de configuration, etc.

Le redémarrage de votre ordinateur est une tâche courante que nous effectuons souvent pour résoudre des problèmes, installer des mises à jour ou appliquer des modifications au système. Bien qu'il existe de nombreuses façons de redémarrer votre ordinateur, l'utilisation d'un script Python offre automatisation et commodité. Dans cet article, nous allons explorer comment créer un script Python capable de redémarrer votre ordinateur avec une simple exécution. Nous aborderons dans un premier temps l’importance du redémarrage de votre ordinateur et les avantages que cela apporte. Nous approfondirons ensuite les détails d’implémentation du script Python, expliquant les modules nécessaires et les fonctionnalités impliquées. Tout au long de cet article, nous fournirons des explications détaillées et des extraits de code pour garantir une compréhension claire. Importance du redémarrage de votre ordinateur Le redémarrage de votre ordinateur est une étape de dépannage de base qui peut

Erreurs Java : erreurs Hadoop, comment les gérer et les éviter Lorsque vous utilisez Hadoop pour traiter des données volumineuses, vous rencontrez souvent des erreurs d'exception Java, qui peuvent affecter l'exécution des tâches et provoquer l'échec du traitement des données. Cet article présentera quelques erreurs Hadoop courantes et fournira des moyens de les gérer et de les éviter. Java.lang.OutOfMemoryErrorOutOfMemoryError est une erreur provoquée par une mémoire insuffisante de la machine virtuelle Java. Quand Hadoop est

Quelle est la bonne façon de redémarrer un service sous Linux ? Lors de l'utilisation d'un système Linux, nous rencontrons souvent des situations dans lesquelles nous devons redémarrer un certain service, mais nous pouvons parfois rencontrer des problèmes lors du redémarrage du service, comme le fait que le service ne s'arrête ou ne démarre pas réellement. Par conséquent, il est très important de maîtriser la bonne manière de redémarrer les services. Sous Linux, vous pouvez généralement utiliser la commande systemctl pour gérer les services système. La commande systemctl fait partie du gestionnaire système systemd

Lorsque nous effectuons par inadvertance des opérations erronées ou qu'il y a certaines erreurs dans le système lui-même, il se peut que nous ne puissions pas accéder au bureau après avoir entré le mot de passe et continuer à redémarrer. Pour le moment, nous pouvons le réparer en mode sans échec. Jetons un coup d'œil aux méthodes spécifiques ci-dessous. Win10 ne peut pas accéder au bureau après avoir saisi un mot de passe et continue de redémarrer. Solution 1. Tout d'abord, appuyez et maintenez « Shift » sur le clavier et cliquez sur le bouton d'alimentation dans le coin inférieur droit, puis choisissez de redémarrer l'ordinateur jusqu'à ce que l'interface de réparation apparaisse et puis relâchez la touche "shift". 2. S'il n'y a pas de bouton d'alimentation dans le coin inférieur droit, vous pouvez également utiliser le bouton d'alimentation de l'ordinateur hôte, mais vous devez le redémarrer trois fois ou plus de suite. 3. Une fois l'interface de réparation apparue, nous cliquons sur "Afficher les options de réparation avancées". 4. Sélectionnez « Dépannage ». 5
