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

Posted

技术标签:

【中文标题】权限被拒绝:user=basi,access=WRITE,inode="/":【英文标题】:Permission denied: user=basi, access=WRITE, inode="/": 【发布时间】:2019-05-05 04:11:23 【问题描述】:

我是 hadoop 和 pig 的新手。我在 ubuntu 的本地用户中安装了 pig,并将 hadoop 安装为 hduser。Pig 在本地模式下工作正常,适用于小型数据集。在 mapreduce 模式下启动 pig 并尝试实现 wordcount,但获得权限被拒绝错误如下。 引起:org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.security.AccessControlException):权限被拒绝:user=basi,access=WRITE,inode="/":hduser:supergroup:drwxr-xr-x

在伪模式下启动 hadoop 在本地用户中启动 pig: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 中的文件

【问题讨论】:

【参考方案1】:

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

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

否则,不要将HDFS的根目录作为所有文件的垃圾场;使用您专用的/user 目录

【讨论】:

【参考方案2】:

这不是 Pig 而是 Hadoop 相关的。 Spark发生在我身上。可能您手动安装了 Hadoop。您需要创建超级组并将 hduser 添加到超级组中。

sudo groupadd supergroup
sudo usermod -aG supergroup hduser

然后再试一次。

【讨论】:

【参考方案3】:

如下进行

chmod 777 /Wordcount.txt

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

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

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

然后再次运行代码...

希望这对您有所帮助。

【讨论】:

【参考方案4】:

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

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

【讨论】:

以上是关于权限被拒绝:user=basi,access=WRITE,inode="/":的主要内容,如果未能解决你的问题,请参考以下文章

MySQL java连接被拒绝:java.sql.SQLException: Access denied for user 'root'@'****' (using p

MySQL java连接被拒绝:java.sql.SQLException: Access denied for user 'root'@'****' (using p

MySQL java连接被拒绝:java.sql.SQLException: Access denied for user 'root'@'****' (using p

使用文件系统将数据从scala中的本地复制到远程hdfs位置时,hadoop权限被拒绝

Android权限ACCESS_FINE_LOCATION始终被拒绝

在Android上拒绝权限“ACCESS”的问题