HDFS 文件权限

HDFS文件权限

HDFS实现的文件权限模型与Linux文件权限非常类似 ,也有superuser , 但是hdfs中superuser是不是root呢 , 这个有点区别, 在hdfs中superuser是启动namenode的用户 , 例如,如果你用root用户安装的并且启动hdfs,那么superuser就是root, 如果用hadoop用户安装并且启动的hdfs那么superuser就是haddop ;

当我们用过命令 ,或者通过HDFS Client API访问Hdfs的时候 ,提示权限不足 ,我们可以考虑是不是你当前用户对你访问的路径权限不够 ,以及你当前superuser到底是什么用户, 然后使用superuser对你操作的路劲进行分配权限 。

我写了一个简单的程序使用java client api, 在hdfs中创建一个目录 ,然后抛出一下异常 ,

org.apache.hadoop.security.AccessControlException: Permission denied: user=hadoop, access=WRITE, inode="/":root:supergroup:drwxr-xr-x

经过分析,我的hdfs安装的时候 ,我是用root用户进行安装, 启动的, 那么根路径只有root用户才有权限操作 ,而我java程序默认使用hadoop用户进行去访问 ,自然是不会有权限
解决也比较简单 , 我可以使用root用户在服务器上,创建一个/test目录 ,然后把该目录的owner赋值给hadoop , 可以通过一下命令完成。

# cd /opt/hadoop-2.6.4/
# bin/hadoop fs -mkdir /test
# bin/hadoop -chown -R hadoop:hadoop /test

另一种解决办法,就是安装启动使用hadoop这个用户 , 那么superuser就是hadoop

你可能感兴趣的:(Hadoop安装,Hadoop)