Soudain, mon cluster YARN a cessé de fonctionner, tout ce que je soumets échoue avec "Code de sortie 1". Je veux localiser ce problème, mais dès qu'une application échoue, YARN supprime les fichiers journaux. Quel est le paramètre de configuration que je dois ajuster pour que YARN conserve ces fichiers journaux?
Il semble que votre conteneur se termine avec le code de sortie 1.
Vous ne pouvez pas voir les journaux sur l'interface utilisateur, car par défaut, l'agrégation des journaux est désactivée. Le paramètre suivant détermine l'agrégation du journal: " yarn.log -gregation-enable " (défini sur " false "si l'agrégation de journaux est désactivée).
S'il est défini sur "false", tous les gestionnaires de nœuds stockent les journaux de conteneur dans un répertoire local, déterminé par le paramètre de configuration suivant: " yarn.nodemanager.log-dirs ".
Par exemple dans mon cas, cela est réglé sur:
<property>
<name>yarn.nodemanager.log-dirs</name>
<value>e:\hdpdata\hadoop\logs</value>
</property>
Ainsi, tous mes journaux de conteneur pour une application particulière se trouvent dans le dossier "e:\hdpdata\hadoop\logs\{application-id}\{container-id}", dans la machine du gestionnaire Node, où le maître d'application a été exécuté.
Supposons que mon application: "application_1443377528298_0010" a échoué. Dans l'interface utilisateur de YARNRM (déterminée par le paramètre de configuration: yarn.resourcemanager.webapp.address ), vous pouvez obtenir les informations sur le nœud, sur lequel l'application Le gestionnaire a couru. Dans la figure ci-dessous, le gestionnaire d'applications a fonctionné sur la machine "120243".
Si vous vous connectez à cette machine et recherchez dans le dossier "e:\hdpdata\hadoop\logs\application_1443377528298_0010 \", vous pouvez voir les journaux de tous les conteneurs d'application "application_1443377528298_0010".
Mais, maintenant, si vous voulez voir les journaux via l'interface utilisateur Web YARN RM, vous devez activer l'agrégation des journaux. Pour cela, vous devez définir les paramètres suivants, dans yarn-site.xml:
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir</name>
<value>/app-logs</value>
</property>
<property>
<name>yarn.nodemanager.remote-app-log-dir-suffix</name>
<value>logs</value>
</property>
Avec les paramètres ci-dessus, mes journaux sont agrégés dans HDFS dans "/ app-logs/{username}/logs /". Sous ce dossier, vous pouvez trouver des journaux pour toutes les applications exécutées jusqu'à présent. Encore une fois, la rétention du journal est déterminée par le paramètre de configuration " yarn.log -gregation.retain-seconds " (combien de temps pour conserver les journaux agrégés).
Lorsque les applications MapReduce sont en cours d'exécution, vous pouvez accéder aux journaux à partir de l'interface utilisateur Web de YARN. Une fois l'application terminée, les journaux sont servis via Job History Server.
Dans votre cas, si vous souhaitez voir les journaux sur l'interface utilisateur Web, une fois l'application terminée, vous devez également commencer à exécuter le serveur MapReduce Job History. Pour l'activer, définissez les paramètres de configuration suivants dans mapred-site.xml:
<property>
<name>mapreduce.jobhistory.address</name>
<value>{job-history-hostname}:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>{job-history-hostname}:19888</value>
</property>
Et définissez le paramètre de configuration suivant dans yarn-site.xml:
<property>
<name>yarn.log.server.url</name>
<value>http://{job-history-hostname}:19888/jobhistory/logs</value>
</property>
J'ai répliqué les paramètres de l'installation HDP sur Windows et ces paramètres fonctionnent pour moi. Ceux-ci devraient également fonctionner pour vous. Pour la description de chacune des configurations mentionnées ci-dessus, reportez-vous aux liens ci-dessous:
https://hadoop.Apache.org/docs/r2.4.1/hadoop-yarn/hadoop-yarn-common/yarn-default.xml