Je souhaite supprimer automatiquement tous mes travaux hadoop lorsque mon code rencontre une exception non gérée. Je me demande quelle est la meilleure pratique pour le faire?
Merci
Selon la version, faites:
version <2.3.
Tuer un travail hadoop:
hadoop job -kill $jobId
Vous pouvez obtenir une liste de toutes les tâches de jobId:
hadoop job -list
version> = 2.3.
Tuer un travail hadoop:
yarn application -kill $ApplicationId
Vous pouvez obtenir une liste de toutes les tâches de ApplicationId:
yarn application -list
L'utilisation de la commande suivante est obsolète
hadoop job -list
hadoop job -kill $jobId
envisager d'utiliser
mapred job -list
mapred job -kill $jobId
Exécutez list
pour afficher tous les travaux, puis utilisez le travail ID/applicationID dans la commande appropriée.
Kill mapred jobs:
mapred job -list
mapred job -kill <jobId>
Tuer des emplois de fil:
yarn application -list
yarn application -kill <ApplicationId>
Une exception non gérée (en supposant qu'elle soit répétable comme des données incorrectes par opposition aux erreurs de lecture d'un nœud de données particulier) finira par faire échouer le travail de toute façon.
Vous pouvez configurer le nombre maximal de fois où une tâche de mappage ou de réduction particulière peut échouer avant que l'ensemble du travail échoue via les propriétés suivantes:
mapred.map.max.attempts
- Nombre maximal de tentatives par tâche de carte. En d'autres termes, Framework essaiera d'exécuter une tâche de carte plusieurs fois avant de l'abandonner.mapred.reduce.max.attempts
- Comme ci-dessus, mais pour des tâches réduitesSi vous souhaitez que le travail échoue à la première défaillance, définissez cette valeur de 4 à 1 par défaut.
Tuez simplement de force l’ID de processus, le travail hadoop sera également tué automatiquement. Utilisez cette commande:
kill -9 <process_id>
exemple: ID processus n ° 4040
username@hostname:~$ kill -9 4040