http://blog.sina.com.cn/s/blog_605f5b4f0101897z.html
之前都是用root运行的,但是现在必须要解决这个问题。
hdfs的权限判断十分简单,就是拿发出指令的user name和文件的user name 做比较
private void check(INode inode, FsAction access
) throws AccessControlException {
if (inode == null) {
return;
}
FsPermission mode = inode.getFsPermission();
if (user.equals(inode.getUserName())) { //user class
if (mode.getUserAction().implies(access)) { return; }
}
else if (groups.contains(inode.getGroupName())) { //group class
if (mode.getGroupAction().implies(access)) { return; }
}
else { //other class
if (mode.getOtherAction().implies(access)) { return; }
}
throw new AccessControlException("Permission denied: user=" + user
+ ", access=" + access + ", inode=" + inode);
}
}
在多用户提交任务时遇到Permission denied, 的原因和任务提交的过程有关。
1. 首先提交任务的客户端会把任务相关文件打包放在hadoop.tmp.dir中,这是本地目录,需要通过本地系统权限验证。由于是临时目录直接设置成为777就行.
2. 客户端会将任务文件打包写入hdfs的mapreduce.jobtracker.staging.root.dir + "/" + user + "/.staging" 目录,需要经过hdfs权限验证。通常可以选择两种方法解决。
1) 保持mapreduce.jobtracker.staging.root.dir为默认,将此目录chmod 777
2) 在hdfs的/user目录下建立用户目录,并且chown为该用户,相当于在hdfs下创建一个用户。
然后设置mapreduce.jobtracker.staging.root.dir为/user, 这是官方推荐的,可以看到这个属性的描述是这样写的:
The root of the staging area for users' job files In practice, this should be the directory where users' home directories are located (usually /user)。
3)有人说可以在启动任务时加入hadoop.job.ugi属性指定用户和群组。 我验证这样不行。看源码里也是直接获取
ugi = UserGroupInformation.getCurrentUser();不过看hdfs权限策略这操行应该可以设置。
还有一些如设置dfs.permissions参数关闭权限校验,改源码直接不校验之类的。。。
最后要注意,任务的out put需要当前用户拥有权限,不然还是不成功。设置成为用户目录就好了
另外,关于/tmp目录也要注意:
ERROR org.apache.pig.impl.io.FileLocalizer - org.apache.hadoop.security.AccessControlException: org.apache.hadoop.security.AccessControlException: Permission denied: user=shashaa, access=WRITE, inode="tmp":pwang7:supergroup:rwxr-xr-x
碰到这种情况,当然是使用chmod把tmp目录的权限改为777了。
关于mapreduce.jobtracker.staging.root.dir
启动hadoop hdfs系统的用户即为超级用户,可以进行任意的操作。
如想让leaf用户也可执行hadoop的作业,执行如下操作:
用超级用户hadoop,创建文件 hadoop fs -mkdir /user/leaf
使用hadoop fs -chown 以及-chgrp 命令改变该文件的用户和用户组权限为leaf
在配置文件hdfs-site-xml 中添加项 dfs.permissions.enabled的值为 true (hadoop0.21版本)
要保证leaf这个用户几个节点能ssh无密码相互登录,java环境变量没问题(我们配置时就忽略了这点,幸亏大飞哥的帮助才搞定)
这样leaf用户就可以提交任务数据到HDFS的/user/leaf目录中,并且可执行hadoop任务,注意如果不修改staging,任务仍旧无法提交,虽然这时候可以对hdfs的/user/leaf目录进行操作
相关推荐
- **启动Hadoop时的权限问题**:由于Hadoop的配置通常要求由特定的非`root`用户(如`hadoop`用户)来运行服务,因此当Hadoop安装目录的所有者为`root`时,会导致Datanode在启动时遇到权限问题。 #### 三、解决方案 ...
3. 给 Hadoop 用户添加权限,使用命令 `sudo vim /etc/sudoers`,添加以下内容: ``` hadoop ALL=(ALL:ALL) ALL ``` 四、配置 SSH 无密码登录 1. 切换到 Hadoop 用户,使用命令 `su hadoop`。 2. 生成密钥对,...
- 这些属性可以在`hadoop-policy.xml`文件中配置,每个属性可以配置多个用户和用户组,使用逗号`,`分隔用户,使用空格分隔用户和用户组。 - 例如,配置某个属性允许用户`alice`和用户组`bobgroup1`、`group2`访问...
例如,你可以使用`winutils.exe`来设置HDFS的权限,或者初始化Hadoop的本地文件系统。在Windows上搭建和运行Hadoop集群时,`winutils.exe`是不可或缺的一部分。 在实际使用中,确保这两个文件位于正确的路径并配置...
这个文件包含了Windows平台上的Hadoop实用工具,比如用于设置HDFS的访问权限和配置Hadoop环境的命令行工具。安装并配置好winutils后,Windows用户可以通过Hadoop的HDFS API访问HDFS,进行数据读写操作。 在大数据...
在Linux环境中,尤其是在Hadoop集群的管理中,SSH(Secure SHell)是不可或缺的工具,它允许用户在不同节点之间安全地执行命令。在没有root权限的情况下,普通用户也能配置SSH,实现自动化操作,这对于集群维护和...
如何诊断并解决Hadoop集群中的各种错误,以及如何实施用户权限控制、数据加密和网络安全措施,都是运维人员必须掌握的技能。 总之,《Hadoop技术详解》这本书会深入讲解Hadoop的各个方面,包括其核心组件、生态系统...
- **权限模型**:定义了用户、组和权限的关系。 - **权限实现**:通过ACLs (Access Control Lists) 实现权限控制。 - **权限授权管理框架**:Sentry和Ranger提供了权限授权管理功能。 ##### 7.2 MaxCompute安全 ...
例如,它可以用于设置Hadoop环境变量、初始化HDFS命名空间、管理HDFS文件权限等。在Windows环境中安装和配置Hadoop时,"winutils.exe"是必需的,因为它弥补了Windows系统与Hadoop原生在Linux上依赖的一些命令的差异...
Hadoop的安装和运行需要一个特定的用户权限,因此在CentOS系统中创建一个名为hadoop的用户是开始之前的一个重要步骤。该用户将用于安装、配置和运行Hadoop集群。使用useradd命令创建用户,并指定/bin/bash作为用户的...
3. **创建更多应用案例**:由于具备安全的权限控制,Sentry鼓励开发更多基于Hadoop的多用户应用程序。 4. **合规性**:Sentry的设计符合多项法规标准,如SOX、PCI、HIPAA和EAL3,确保了企业与政府用户的数据合规性。...
在Linux环境中,用户可能需要处理权限问题,如使用sudo或修改Hadoop配置中的用户组。同时,网络配置也至关重要,尤其是对于分布式集群,需要确保节点间的通信正常。 总之,Hadoop-3.1.3在Linux上的安装和配置是一个...
`winutils.exe`是Hadoop在Windows上的一个实用工具,它模拟了Linux环境下的某些功能,比如设置文件权限、管理HDFS(Hadoop Distributed File System)等。在Windows上运行Hadoop时,`winutils.exe`是必不可少的,...
例如,它用于设置HADOOP_HOME环境变量,管理HDFS文件权限,启动和停止Hadoop守护进程等。由于Hadoop最初是为Linux设计的,winutils.exe是将Hadoop移植到Windows环境的关键组件。在安装和配置Hadoop时,确保正确放置...
总结上述知识点,Hadoop官方中文文档为用户提供了一个全面的指导手册,涵盖了从安装、配置、使用到权限和资源管理的各个重要方面。这本手册是理解和运用Hadoop技术的重要资源,尤其对于中文用户而言,它降低了语言...
HDFS是Hadoop的数据存储系统,它将大型数据集分布在多个节点上,以实现高可用性和容错性。Hadoop 2.6.0对HDFS进行了优化,提高了数据读写速度,并增强了故障恢复机制。 MapReduce是Hadoop的并行计算模型,它将大...
在Hadoop生态系统中,`winutils.exe` 和 `hadoop.dll` 是两个关键的组件,主要用于...不过,由于Hadoop主要面向Linux,Windows用户可能会遇到更多问题,因此建议熟悉Linux环境,以便更好地利用Hadoop的全部潜力。
本文档主要介绍 Hadoop 2 的安装过程,特别针对多节点集群环境下的配置方法。 #### 二、环境准备 1. **主机名配置**: - 在 `/etc/hosts` 文件中添加以下内容,用于定义各个节点的主机名。 ``` 192.168.16.201 ...