2016-08-24 545 views
0

我已经在Cent OS 7上安装了hadoop。用python编写的守护进程服务试图在HDFS中创建一个目录,但获得了下面的权限错误。如何让root用户将文件写入HDFS

mkdir: Permission denied: user=root, access=WRITE, inode="/rep_data/store/data/":hadoop:supergroup:drwxr-xr-x 

看起来像我的服务正在根帐户下运行。 所以我想知道如何给root用户授予制作目录和写入文件的权限。

+0

请注意,是#2只编程相关的问题。请查看[帮助/在线主题],了解可在此处询问哪些主题。这个问题可能适用于其他SE网站,如[unix.se]或[超级用户](http://superuser.com)。首先检查他们的帮助,看看问题是否属于那里,如果是这样,你可以点击“标志”链接并选择“需要管理员注意”来请求迁移。 – kaylum

+0

我认为它与编程有关,我在这里提到的服务是由我在python中编写的。所以python代码试图在hadoop中创建目录。 – Saran

+0

这个问题从编程活动中产生并不重要。问题的关键在于,问题本身与编程没有直接关系(某人没有进行编程可能会有完全相同的问题)。您正在询问有关设置系统管理员问题而非编程问题的权限。如果你问如何设置代码本身的权限,那么这会使它成为一个编程问题。但问题并非如此,听起来像你只是想正确设置你的系统。 – kaylum

回答

0

如果您尝试在HDFS根目录下创建目录(即/),则可能会遇到此类问题。你可以在你的家像如下

sudo hdfs hdfs dfs -mkdir /directory/name

要在HDFS家创建目录创建目录,没有任何问题

要在根目录下,执行命令执行以下命令

hdfs dfs -mkdir /user/user_home/directory/name

+0

该目录已存在。权限错误 –

+0

通过命令行,我可以在hadoop中创建目录。但是当python程序尝试创建目录时,我收到了错误。 – Saran

+0

用明确的详细信息更新您的问题 – BruceWayne

0

这可能是一个问题,因为你不是super user

解决方法是在hdfs中启用访问控制列表并为用户授予权限。 要启用对ACL的支持,请在NameNode配置中将dfs.namenode.acls.enabled设置为true。

欲了解更多信息检查:link

+0

暂时我使用解决问题的chown将文件夹/ rep_data/store/data /的所有者从hadoop更改为root。 – Saran

+0

您可以将您的用户(hadoop)添加到sudoer组,并在下次使用'sudo '。 –