当使用 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的权限问题:

HDFS文件系统的权限模型与 POSIX 模型类似

The Hadoop Distributed File System (HDFS) implements a permissions model for files and directories that shares much of the POSIX model. 
Each file and directory is associated with an owner and a group.

当创建文件或目录时,它的owner(所有者)是客户端进程的 user identity.

When a file or directory is created, its owner is the user identity of the client process, 
and its group is the group of the parent directory (the BSD rule).

访问HDFS时,需要验证:user name(用户名) 和 group list(所属的用户组)

Each client process that accesses HDFS has a two-part identity composed of the user name, and groups list. 
Whenever HDFS must do a permissions check for a file or directory ‘foo’ accessed by a client process

Hadoop支持两种不同的操作模型(simple 和 kerberos)从而决定 user identity,由配置选项:hadoop.security.authentication property 来决定使用哪种模型

As of Hadoop 0.22, Hadoop supports two different modes of operation to determine the user’s identity, 
specified by the hadoop.security.authentication property:

对于Simple模型而言,客户端进程的身份(identity) 是由提交 操作命令的那台主机所在的操作系统(的用户名)决定的。本文报的“权限不够”的错误,是在 Simple模型下出错的,至于kerberos模型,可参考官方文档:Apache Hadoop 2.7.2 HDFS 中的介绍

In this mode of operation, the identity of a client process is determined by the host operating system. 
On Unix-like systems, the user name is the equivalent of `whoami`.

参考链接:https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-hdfs/HdfsPermissionsGuide.html

原文:http://www.cnblogs.com/hapjin/p/4846853.html

解决从本地文件系统上传到HDFS时的权限问题的更多相关文章

  1. Ubuntu本地文件上传至HDFS文件系统出现的乱码问题及解决方案

    1.问题来源及原因 用shell命令上传到HDFS中之后出现中文乱码,在shell命令窗口查看如图: 在eclipse中的文件HDFS查看工具查看如图: 原因:上传至HDFS文件系统的文本文件(这里是 ...

  2. 解决从linux本地文件系统上传文件到HDFS时的权限问题

    当使用 hadoop fs -put localfile /user/xxx 时提示: put: Permission denied: user=root, access=WRITE, inode=& ...

  3. Hadoop_13_Hadoop Shell脚本采集日志上传到HDFS

    案例1:开发shell采集脚本 1.点击流日志每天都10T,在业务应用服务器上,需要准实时上传至数据仓库(Hadoop HDFS)上 2.一般上传文件都是在凌晨24点操作,由于很多种类的业务数据都要在 ...

  4. Git的使用-如何将本地项目上传到Github

    默认你的电脑上已经安装了git. 第一步:我们需要先创建一个本地的版本库(其实也就是一个文件夹). 你可以直接右击新建文件夹,也可以右击打开Git bash命令行窗口通过命令来创建. 现在我通过命令行 ...

  5. 使用 vscode将本地项目上传到github以及删除github上的某个文件夹

    安装Git后,可以看到windows环境下有两个命令输入窗口Git CMD 和Git Bash Git GUI是可视化图形界面 Git中的Bash是基于CMD的,在CMD的基础上增添一些新的命令与功能 ...

  6. JavaScript进阶(九)JS实现本地文件上传至阿里云服务器

    JS实现本地文件上传至阿里云服务器 前言 在前面的博客< JavaScript进阶(八)JS实现图片预览并导入服务器功能>(点击查看详情)中,实现了JS将本地图片文件预览并上传至阿里云服务 ...

  7. Git的使用--如何将本地项目上传到Github(三种简单、方便的方法)

    一.第一种方法: 1.首先你需要一个github账号,所以还没有的话先去注册吧! https://github.com/ 我们使用git需要先安装git工具,这里给出下载地址,下载后一路(傻瓜式安装) ...

  8. 本地图片上传与H5适配知识

    最近用到本地图片上传作为API的参数,在网上看了许多,记录一下,以后可能用的着(仅自己记录用,看不清请绕路) function getObjectURL(file) { var url = null ...

  9. Git学习系列之如何正确且高效地将本地项目上传到Github(图文详解)

    不多说,直接上干货! 首先你需要一个Github账号,所以还没有的话先去注册吧! https://github.com/ 见 如何走上更高平台分享传递干货知识:(开通个人Github面向开源及私有软件 ...

随机推荐

  1. [学习笔记]Ubuntu下安装配置SQLSERVER2017

    摘要自微软官网: https://docs.microsoft.com/zh-cn/sql/linux/quickstart-install-connect-ubuntu 安装步骤: 1. 导入公共秘 ...

  2. Java微信二次开发(七)

    自定义菜单 第一步:新建包com.wtz.menu,新建类Button.java package com.wtz.menu; /** * @author wangtianze QQ:864620012 ...

  3. Java之Date Time API (Java 8 新特性)

    Java 8 – Date Time API Java 8 comes with a much improved and much required change in the way date an ...

  4. luogu3107

    洛谷P3107题面 相对较为模板化的代码 f[i][j][bo1][bo2]记录到第i位,数字num出现了x次(j初始为20,若当前数字不为num,j++:否则j--:最后只要记录j<=20的总 ...

  5. BZOJ1047[HAOI2007]理想的正方形——二维ST表

    题目描述 有一个a*b的整数组成的矩阵,现请你从中找出一个n*n的正方形区域,使得该区域所有数中的最大值和最小值的差最小. 输入 第一行为3个整数,分别表示a,b,n的值第二行至第a+1行每行为b个非 ...

  6. BZOJ1018[SHOI2008]堵塞的交通——线段树

    题目描述 有一天,由于某种穿越现象作用,你来到了传说中的小人国.小人国的布局非常奇特,整个国家的交通系统可以被看成是一个2行C列的矩形网格,网格上的每个点代表一个城市,相邻的城市之间有一条道路,所以总 ...

  7. APICloud之封装webApp

    注册用户 https://www.apicloud.com/ 使用步骤 进入开发控制台 创建应用 选择webApp 根据自己的情况填写信息,然后创建即可 应用创建后的界面 端设置 app界面设置 证书 ...

  8. BZOJ5338 [TJOI2018] Xor 【可持久化Trie树】【dfs序】

    题目分析: 很无聊的一道题目.首先区间内单点对应异或值的询问容易想到trie树.由于题目在树上进行,case1将路径分成两段,然后dfs的时候顺便可持久化trie树做询问.case2维护dfs序,对d ...

  9. mysql format函数对数字类型转化的坑

    原值param = 1234.5678 format(param, 2) (不建议)      结果,字符串类型,123,4.57  会导致你图表char 生成失败,直接变0 convert(para ...

  10. Watchdogs利用Redis实施大规模挖矿,常见数据库蠕虫如何破?

    背景 2月20日17时许,阿里云安全监测到一起大规模挖矿事件,判断为Watchdogs蠕虫导致,并在第一时间进行了应急处置. 该蠕虫短时间内即造成大量Linux主机沦陷,一方面是利用Redis未授权访 ...