La ruche de l'Exécution de la Requête d'Erreur, le code de retour de 3 MapredLocalTask
J'obtiens ce message d'erreur lors de l'exécution d'une simple jointure entre deux tables. J'exécute cette requête dans la Ruche de la ligne de commande. Je suis de nommage de la table comme un & b. Le tableau a est la Ruche table interne et de b est de la table Externe (Cassandra). La Table a seulement 1610 les lignes et le Tableau b a ~8million lignes. En production réelle scénario Table un pourrait obtenir jusqu'à 100 lignes. Ci-dessous est ma jointure avec la table b, selon le dernier tableau de la jointure
SÉLECTIONNER un.col1, une.col2, b.col3, b.col4 à PARTIR d'une JOINTURE de b SUR (un.col1=b.col1 ET un.col2=b.col2);
Ci-dessous est l'erreur
Total de tâches MapReduce = 1
Journal de l'exécution: /tmp/pricadmn/.journal
2014-04-09 07:15:36 de Départ pour lancer des missions locales aux processus de la carte de jointure; mémoire maximale = 932184064
2014-04-09 07:16:41 le Traitement des lignes: 200000 table de hachage de taille: 199999 l'utilisation de la Mémoire: 197529208 pourcentage: 0.212
2014-04-09 07:17:12 le Traitement des lignes: 300000 table de hachage de taille: 299999 l'utilisation de la Mémoire: 163894528 pourcentage: 0.176
2014-04-09 07:17:43 le Traitement des lignes: 400000 table de hachage de taille: 399999 l'utilisation de la Mémoire: 347109936 pourcentage: 0.372
...
...
...
2014-04-09 07:24:29 le Traitement des lignes: 1600000 table de hachage de taille: 1599999 l'utilisation de la Mémoire: 714454400 pourcentage: 0.766
2014-04-09 07:25:03 Traitement des lignes: 1700000 table de hachage de taille: 1699999 l'utilisation de la Mémoire: 901427928 pourcentage: 0.967
L'exécution a échoué avec l'état de sortie: 3
L'obtention d'informations sur l'erreur
Tâche a échoué!
ID de la tâche:
Étape-5
Les journaux:
/u/applic/pricadmn/dse-4.0.1/logs/ruche/ruche.journal
A ÉCHOUÉ: Erreur d'Exécution, le code de retour de 3 org.apache.hadoop.de la ruche.ql.exec.mr.MapredLocalTask
Je suis à l'aide de DSE 4.0.1. Suivants sont quelques-uns de mes paramètres qui pourraient vous intéresser
mapred.carte.enfant.java.opts=-Xmx512M
mapred.réduire.enfant.java.opts=-Xmx512M
mapred.réduire.en parallèle.des copies de=20
la ruche.auto.convertir des.rejoignez=true
J'ai augmenté mapred.carte.enfant.java.opte pour 1G et j'ai passé quelques albums et erronées. Il ne me semble pas une bonne solution. Aussi j'ai changé l'ordre de le rejoindre, mais aucune aide. J'ai vu ce lien La ruche Carte de jointure : de mémoire d'Exception mais ne résout pas mon problème.
Pour moi, il semble que la Ruche est en essayant de mettre le plus grand tableau en mémoire, lors des tâches de la phase qui je suis confus. Selon ma compréhension de la deuxième table (dans mon cas, le tableau b) doivent être transmises. Corrigez-moi si je me trompe. Toute aide dans la résolution de ce problème est fortement appréciée.
OriginalL'auteur user3517633 | 2014-04-10
Vous devez vous connecter pour publier un commentaire.
Cochez cette page, peut-être que ça aide. https://cwiki.apache.org/confluence/display/Hive/LanguageManual+JoinOptimization
OriginalL'auteur Sahil Nagpal
Il semble que votre tâche est en cours d'exécution hors de la mémoire. Vérifier ligne 324 de la MapredLocalTask classe.
Il y a une multitude de facteurs qui peuvent affecter l'utilisation de la mémoire dans un MONSIEUR de l'emploi. Je voudrais augmenter la taille du tas progressivement pour voir si le travail exécuté avec succès avec un plus grand, mais toujours raisonnablement de la taille de segment de mémoire adapté à votre matériel. Si vous ne pouvez pas aller loin avec ça, puis étudier plus à savoir pourquoi une grande quantité de mémoire est utilisée pour exclure une fuite. Vous pouvez également essayer d'utiliser un plus petit split taille de petits morceaux de données dans chaque tâche.
OriginalL'auteur Andrew Weaver
Dernière jointure doit être le plus grand tableau. Vous pouvez modifier l'ordre des tables de jointure.
OriginalL'auteur alexliu68