7 votes

Problème de permissions pour Apache Pig

J'essaie de faire fonctionner Apache Pig sur mon cluster Hadoop, et je rencontre un problème de permissions. Pig lui-même se lance et se connecte au cluster sans problème - à partir de l'interpréteur de commande Pig, je peux ls à travers et autour de mes répertoires HDFS. Cependant, lorsque j'essaie de charger des données et d'exécuter des commandes Pig, je rencontre des erreurs liées aux autorisations :

grunt> A = load 'all_annotated.txt' USING PigStorage() AS (id:long, text:chararray, lang:chararray);
grunt> DUMP A;
2011-08-24 18:11:40,961 [main] ERROR org.apache.pig.tools.grunt.Grunt - You don't have permission to perform the operation. Error from the server: org.apache.hadoop.security.AccessControlException: Permission denied: user=steven, access=WRITE, inode="":hadoop:supergroup:r-xr-xr-x
2011-08-24 18:11:40,977 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias A
Details at logfile: /Users/steven/Desktop/Hacking/hadoop/pig/pig-0.9.0/pig_1314230681326.log
grunt> 

Dans ce cas, all_annotated.txt est un fichier dans mon répertoire d'origine HDFS que j'ai créé et pour lequel j'ai certainement les droits d'accès ; le même problème se produit quel que soit le fichier que j'essaie d'ouvrir. load . Cependant, je ne pense pas que ce soit le problème, puisque l'erreur elle-même indique que Pig essaie de écrire quelque part. En cherchant sur Google, j'ai trouvé quelques messages sur des listes de diffusion suggérant que certains énoncés en Pig Latin ( order etc.) ont besoin d'un accès en écriture à un répertoire temporaire sur le système de fichiers HDFS dont l'emplacement est contrôlé par l'attribut hadoop.tmp.dir dans le fichier hdfsd-site.xml. Je n'ai pas pensez à load entre dans cette catégorie, mais juste pour être sûr, j'ai changé hadoop.tmp.dir pour pointer vers un répertoire dans mon répertoire d'origine HDFS, et le problème a persisté.

Alors, quelqu'un a une idée de ce qui pourrait se passer ?

13voto

Daniel Dai Points 244

Probablement votre paramètre pig.temp.dir. Par défaut, il s'agit de /tmp sur hdfs. Pig y écrira le résultat temporaire. Si vous n'avez pas la permission de /tmp, Pig se plaindra. Essayez de le remplacer par -Dpig.temp.dir.

0voto

Matt D Points 2885

Un problème pourrait être que hadoop.tmp.dir est un répertoire sur votre système de fichiers local, pas sur HDFS. Essayez de définir cette propriété sur un répertoire local auquel vous savez que vous avez accès en écriture. J'ai rencontré la même erreur en utilisant MapReduce normal dans Hadoop.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X