我试图在Apache Hadoop集群上启动并运行Apache Pig,并且遇到权限问题。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-x2011-08-24 18:11:40,977 [main] ERROR org.apache.pig.tools.grunt.Grunt - ERROR 1066: Unable to open iterator for alias ADetails at logfile: /Users/steven/Desktop/Hacking/hadoop/pig/pig-0.9.0/pig_1314230681326.loggrunt>在这种情况下,all_annotated.txt是我在HDFS主目录中创建的文件,并且绝对具有访问权限;无论我尝试使用哪个文件,都会出现相同的问题load。但是,我不认为这是问题所在,因为错误本身表明Pig正在尝试在某处写东西。到处搜寻,我发现一些邮件列表中的帖子暗示某些Pig Latin语句(order等)需要对HDFS文件系统上的临时目录进行写访问,该目录的位置由hadoop.tmp.dirhdfsd-site.xml中的属性控制。我不认为 load属于这一类,但只是为了保险起见,我改变hadoop.tmp.dir为指向目录我HDFS主目录中,而问题依然存在。
那么,外面有人对可能发生的事情有任何想法吗?