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 ?