权限被拒绝:user = basi,access = WRITE,inode =“ /”:

时间:2019-05-05 04:11:24

标签: hadoop apache-pig

我是hadoop和pig的新手。我在ubuntu的本地用户中安装了pig并以hduser的身份安装hadoop.Pig在小型数据集的本地模式下运行良好。在mapreduce模式下启动Pig并尝试实现字数统计但获得许可被拒绝错误如下。 由以下原因引起:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):权限被拒绝:user = basi,access = WRITE,inode =“ /”:hduser:supergroup:drwxr-xr-x

以psudo模式启动hadoop 本地用户中的猪猪:pig -x mapreduce

   grunt> A = LOAD '/Wordcount.txt' AS (line:Chararray);
   grunt> B = FOREACH A GENERATE FLATTEN(TOKENIZE(line)) AS word;
   grunt> grouped = group B by word;
   grunt> wc = FOREACH grouped GENERATE group, COUNT(B);
   grunt> DUMP wc

/Wordcount.txt是hdfs中的文件

4 个答案:

答案 0 :(得分:1)

目前尚不清楚如何将/Wordcount.txt加载到根文件夹中,但是错误是您正在尝试写入根目录,该目录只能作为hduser帐户,而不能作为{ {1}},您的本地用户。

一个选项-切换到另一个用户。

否则,请勿将HDFS的根目录用作所有文件的转储场;使用您专用的basi目录

答案 1 :(得分:0)

进行如下

chmod 777 /Wordcount.txt

chmod将文本文件的权限分别更改为所有者组和其他所有者的权限rwxrwxrwx

然后在类似于下面的加载命令中提供文本文件的完整位置

grunt> A = LOAD '/directory/abc/Wordcount.txt' AS (line:Chararray);

然后再次运行代码...

希望这会对您有所帮助。

答案 2 :(得分:0)

在Pig中,DUMP命令首先将其输出写入/ tmp / temp ....,然后客户端从中读取。我的猜测是,您的群集没有/ tmp。如果是这种情况,请尝试创建/ tmp目录(通常具有1777权限)。

(编辑:阅读其他人的答案,我认为关于/ user的答案是有意义的。没有它,您甚至无法提交任何作业。)

答案 3 :(得分:0)

这与Pig无关,但与Hadoop有关。 Spark发生在我身上。可能是您手动安装了Hadoop。您需要创建超组并将hduser添加到超组中。

sudo groupadd supergroup
sudo usermod -aG supergroup hduser

然后重试。