设为首页 收藏本站
查看: 768|回复: 0

[经验分享] hadoop 多用户权限(转)

[复制链接]

尚未签到

发表于 2016-12-7 06:06:23 | 显示全部楼层 |阅读模式
  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需要当前用户拥有权限,不然还是不成功。设置成为用户目录就好了
from:http://blog.163.com/darkness@yeah/blog/static/131774484201272155937382/
 
另外,关于/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
ParameterValueDescriptionmapred.system.dir/var/mapr/cluster/mapred/jobTracker/systemThe shared directory where MapReduce stores control files.mapred.job.tracker.persist.jobstatus.dir/var/mapr/cluster/mapred/jobTracker/jobsInfoThe directory where the job status information is persisted in a file system to be available after it drops of the memory queue and between jobtracker restarts.mapreduce.jobtracker.staging.root.dir/var/mapr/cluster/mapred/jobTracker/stagingThe root of the staging area for users' job files In practice, this should be the directory where users' home directories are located (usually /user)
启动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目录进行操作

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.iyunv.com/thread-310538-1-1.html 上篇帖子: HADOOP JAVA MapReduce API 下篇帖子: Hadoop 单机部署与eclipse开发
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表