解决从本地文件系统上传到HDFS时的权限问题
2015-09-29 17:27
507 查看
当使用 hadoop fs -put localfile /user/xxx 时提示:
put: Permission denied: user=root, access=WRITE, inode="/user/shijin":hdfs:supergroup:drwxr-xr-x
表明:权限不够。这里涉及到两个方面的权限。一个是本地文件系统中localfile 文件的权限,一个是HDFS上 /user/xxx目录的权限。
先看看 /user/xxx目录的权限:drwxr-xr-x - hdfs supergroup 表示它属于hdfs用户,组名为 supergroup
因此需要使用 sudo -u hdfs hadoop fs -put localfile /user/xxx 来指定使用 hdfs 用户来执行上传命令。参考
当高兴地执行sudo -u hdfs hadoop fs -put localfile /user/xxx 以为能成功上传时,又报错:
put: localfile No such file or directory 说找不到本地文件localfile,可是用 ls 明明 能看到 localfile ,后来在一篇文章(参考)中发现发来是lcoalfile的权限问题。
因为我现在是使用hdfs用户来执行命令。而hdfs用户对 localfile 是没有相关权限的。此时,问题基本解决了,就是让hdfs 用户对 lcoalfile 有相关权限,(注意目录权限该该目录下文件权限的影响,参考:linux下文件与目录权限关系)
一种简单的解决方法。直接把需要上传的文件复制到/tmp目录下。因为/tmp目录的权限为 rwxrwxrwx。然后执行:
sudo -u hdfs hadoop fs -put localfile /user/xxx 上传成功。
put: Permission denied: user=root, access=WRITE, inode="/user/shijin":hdfs:supergroup:drwxr-xr-x
表明:权限不够。这里涉及到两个方面的权限。一个是本地文件系统中localfile 文件的权限,一个是HDFS上 /user/xxx目录的权限。
先看看 /user/xxx目录的权限:drwxr-xr-x - hdfs supergroup 表示它属于hdfs用户,组名为 supergroup
因此需要使用 sudo -u hdfs hadoop fs -put localfile /user/xxx 来指定使用 hdfs 用户来执行上传命令。参考
当高兴地执行sudo -u hdfs hadoop fs -put localfile /user/xxx 以为能成功上传时,又报错:
put: localfile No such file or directory 说找不到本地文件localfile,可是用 ls 明明 能看到 localfile ,后来在一篇文章(参考)中发现发来是lcoalfile的权限问题。
因为我现在是使用hdfs用户来执行命令。而hdfs用户对 localfile 是没有相关权限的。此时,问题基本解决了,就是让hdfs 用户对 lcoalfile 有相关权限,(注意目录权限该该目录下文件权限的影响,参考:linux下文件与目录权限关系)
一种简单的解决方法。直接把需要上传的文件复制到/tmp目录下。因为/tmp目录的权限为 rwxrwxrwx。然后执行:
sudo -u hdfs hadoop fs -put localfile /user/xxx 上传成功。
相关文章推荐
- HDFS基本命令
- hadoop2.7.0升级到2.7.1,版本升级
- 解读HDFS
- HDFS详细介绍
- HDFS命令
- hadoop2.7.0集群,使用中遇到的bug及解决办法
- Hadoop 目前只是“穷人的 ETL”
- 学习日志---mapreduce详细过程分析
- Kafka+Storm+HDFS整合实践
- flume-ng+Kafka+Storm+HDFS 实时系统搭建
- 自定义/指定 HDFS Block存放位置
- HDFS 2.7.1 所有配置项
- hadoop-yarn启动流程分析
- 深入理解hadoop yarn
- 自动化挂载HDFS文件系统到本地目录
- spark读取hdfs数据本地性异常
- spark读取hdfs数据本地性异常
- spark读取hdfs数据本地性异常
- spark读取hdfs数据本地性问题
- flume1.4.0 保存文件到hdfs错误调试