Я пытаюсь запустить Apache Pig на своем кластере Hadoop, и у меня возникла проблема с разрешениями.Сама Pig просто запускает и подключается к кластеру - из оболочки Pig я могу ls
просматривать свои каталоги HDFS и вокруг них.Однако, когда я пытаюсь загрузить данные и запустить команды Pig, я сталкиваюсь с ошибками, связанными с разрешениями:
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>
В этом случае all_annotated.txt
- это файл в моем домашнем каталоге HDFS, который я создал,и наиболее определенно имеют разрешения на;та же проблема возникает независимо от того, какой файл я пытаюсь load
.Однако я не думаю, что это проблема, так как сама ошибка указывает, что Свин пытается написать где-нибудь.Погуглив, я обнаружил несколько сообщений в списке рассылки, в которых говорится, что некоторым операторам Pig Latin (order
и т. Д.) Требуется доступ на запись во временный каталог в файловой системе HDFS, местоположение которого контролируется свойством hadoop.tmp.dir
в hdfsd-site..xml.Я не думаю, что load
попадает в эту категорию, но просто чтобы быть уверенным, я изменил hadoop.tmp.dir
, чтобы он указывал на каталог в моем домашнем каталоге HDFS, и проблема не устранена.
Итак, у кого-нибудь есть идеи относительно того, что может происходить?