hadoop 命令操作hdfs 目录权限 管理

与其 通过规章制度让大家 遵守 某项规定 ,时而还要担惊受怕 总有那么一小嘬人 冒天下之大不韪 以身试法 践踏 规定,一劳永逸 解决 信任问题的终极办法 看似有些独裁 专制,对于有特立独行思想的刺头,最好的根治手段就是阉割。现实中 用 囚笼 囚禁 犯人,在 计算机系统中则是 通过权限管理 限制每一个人的操作 范围。

image.png

由于公司的大数据平台 搭建的比较简陋,还要让 之前根本没有接触过 hadoop平台的开发 算法人员使用,他们的错误操作 经常给你带来 意外的惊喜和 感动的泪水,我心里有十万个 MMP。。。

所以刚开始就想干脆像 初中小学那样写个班规似的 使用规范吧,但是规范的约束力是有限的,需要大家相互信任,但是总有人会错误操作的风险,怎么办 怎么办,只能通过强制的方法 解决这个局面。
好汉 大部分都是被逼上梁山的,平台的演进大多也是根据眼前出现的问题 不断精益求精的。所以搭建 权限管理 势在必行。

先简单 介绍一下 思想,其实 有两种 方式 ,
一种是配置 ugi 的xml ,
一种是 直接在 linux 创建相应的用户和组 ,然后把 hdfs 的某一文件夹的操作权限 赋予 该用户和组,
第一种侵入性小,配置简单 ,第二种则简单粗暴 好操作 但如果有成百上千的hadoop操作用户 则是一个不简单 的力气活,最好有一个脚本可以自动化 操作这些。为了 尽快见效,我选择了第二种,而且 还要搭配着与我们的hadoop 任务提交机器 使用。

我们数据算法小组 现在 一共五个人 ,人少就给每个人 设置了一个账号 权限 ,还另外设置了一个 dev 及guests 的账号,方便 其他组和 新加入的小伙伴临时使用
下面开始操作 了
1.在 hadoop master 的节点 创建 这些账户 ,为了这些账户好管理,也要创建一个 组,组可以先用户创建 也可以在用户之后创建

useradd medev && echo da@opo#8N5 | passwd --stdin medev
echo "medev ALL=(ALL) NOPASSWD:ALL" >> /etc/sudoers
groupadd datadev
usermod -a -G datadev medev
这些命令 需要在 root 用户下使用

2.登录到每个用户 的shell 中,然后 把 原来 java hadoop path 的环境变量 粘贴复制到 新创建的用户的 ~/.bashrc,保存并退出,然后
vi ~/.bashrc

export JAVA_HOME=/usr/local/java
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export SCALA_HOME=/usr/local/scala
export SQOOP_HOME=/usr/local/sqoop
export PATH=$SQOOP_HOME/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/usr/local/java/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/java/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/root/bin:/usr/local/java/bin:/usr/local/hadoop/bin:/usr/local/hadoop/sbin:/usr/local/scala/bin

source ~/.bashrc
【注意,第二步 我们只给 dev 和guests 两个用户这样在 Master设置了,其他个人账号没有设置 ,主要是防止这些同事 无意登录到 Master 节点 错误操作,但是 所有新创建的 用户,我们在 任务提交机器都这样配置了】

3.使用hadoop fs -chown user:group /dirpath ,为 hdfs 上的 用户分配 目录操作权限,大前提是这样的原来的日志流目录还是 hadoop 管理员 hadoop 和组 supergroup 的,在 hdfs根目录下创建 一个总的 /outputs目录,dev 用户 可以操控这个 目录 及子目录,然后 其他的个人账号,只可以操控 在 /outputs/下的 各自的子目录集,比如 muller 只可以操作
/outputs/mulleroutput,整个 /outputs目录都属于 该用户组

hadoop fs -chown -R medev:datadev /Outputs/devoutput

这个操作需要在 hadoop管理员的身份执行

  1. 然后可以在 Master 使用 hadoop fs -put -get -mkdir -rm -r 命令 来测试,果然都可以实现目录权限的管理,不属于你的 只有查看 和mapreduce的权限,不能创建 不能删除 不能下载, 只能在自己的目录下肆意妄为。
    rm: Permission denied: user=meDev, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x

put: Permission denied: user=medev, access=WRITE, inode="/xial":hadoop:supergroup:drwxr-xr-x

mkdir: Permission denied: user=medev, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x

get: /usr/local/hadoop/part-00000.deflate.COPYING (Permission denied)
5.然后在 hadoop 任务提交机器 继续 创建同名的用户 和配置环境变量 即可,然后测试 完全没有压力

但是 我们还是 太天真了 ,我们 做好了 hdfs 目录 权限管理,却发现无法 进行 mapreduce了 ,在运行 hadoop 自带的 wordcount ,也报 权限不足,细细的看,发现 问题的严重性,独自的用户因为不属于 supergroup 组,无法rwx hadoop的根目录的 /tmp目录,此目录 是 放置 map 中间值得目录,难道你忘记了吗,hadoop 在进行 mapreduce时,会把中间结果保存在硬盘 上,实际是hdfs的 /tmp目录中,如果 操作用户 没有权限操作 /tmp也是无法进行mapReduce的,
17/10/27 19:52:21 INFO client.RMProxy: Connecting to ResourceManager at hadoop-master/194.168.255.155:8032 org.apache.hadoop.security.AccessControlException: Permission denied: user=linkedmeGuests, access=EXECUTE, inode="/tmp/hadoop-yarn":hadoop:supergroup:drwx------
所以 要 把 /tmp 目录的权限设置为 777,单单 /tmp设置了还不可以,还要把 其子目录都要配置为777的权限,切换到hadoop 管理员操作

hadoop fs -chmod -R 777 /tmp

然后 再运行 发现又失败了,发现 对output的目录没有操作权限,
17/10/27 19:56:30 INFO mapreduce.Job: Job job_1508742787565_0140 running in uber mode : false
17/10/27 19:56:30 INFO mapreduce.Job: map 0% reduce 0%
17/10/27 19:56:30 INFO mapreduce.Job: Job job_1508742787565_0140 failed with state FAILED due to: Job setup failed : org.apache.hadoop.security.AccessControlException: Permission denied: user=meGuests, access=WRITE, inode="/Outputs/DannyOutputs":Danny:datadev:drwxr-xr-x

这个当然了,我们规定了 每个账号用户的可以操作的output目录,其他别人的目录都不允许操作,所以 只要把output 的目录设置成自己的output目录 创建子目录才可以正常操作,结果运行成功了

另外的 重点 !!!
我们还要配置 一下 hdfs 相关 output目录的存储大小上限,这样 方便管理,不然有人 的output太大,都不晓得 竟然会超过 源日志 大小,这就尴尬了
》bin/hdfs dfs -put readme.txt /finance

》bin/hdfs dfs -du -s /finance
》3901 /finance

》bin/hdfs dfsadmin -setSpaceQuota 4000 /finance
设置/finance的大小上限为4000个字节

》bin/hdfs dfs -put readme1.txt /finance
由于已经超出4000个字节,则会报错
》bin/hdfs dfsadmin -clrSpaceQuota /finance 将配额清除掉
》bin/hdfs dfs -put readme1.txt /finance 这次上传就不会错了~

[apache-nutch-1.2.rar 大约248M]
bin/hdfs fsck /finance/apache-nutch-1.2.rar
参考 http://www.cnblogs.com/i80386/p/3580107.html

这样 把 这些 用户账号 分配并告知 使用者,并 告知 禁止使用root 和管理者用户角色 并不可使用他人账号 ,这样就可以愉快的进行 hdfs 的文件 权限管理了,
尤其要注意 ,密码不要太简单 ,因外要外网登陆,不然 被黑也是常事。

另外 hadoop的 acl 需要关注,未来也是需要 配置的,
http://www.jianshu.com/p/2c8949340f6c
还要配置 hadoop的 ugi

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容

  • 目的这篇教程从用户的角度出发,全面地介绍了Hadoop Map/Reduce框架的各个方面。先决条件请先确认Had...
    SeanC52111阅读 1,711评论 0 1
  • 经过一系列的前期环境准备,现在可以开始Hadoop的安装了,在这里去apache官网下载2.7.3的版本http:...
    欢醉阅读 1,658评论 8 28
  • 1 目的将hadoop 2.7.1 安装到 166、167、168 三台机器上2 提供环境练习环境192.168....
    灼灼2015阅读 3,391评论 4 40
  • HDFS的体系结构 设计目标 自动快速检测应对硬件错误 流式访问数据 转移计算本身比转移数据更加划算 简单的数据一...
    Spike_3154阅读 918评论 0 2
  • 之前的有点忘记了,这里在云笔记拿出来再玩玩.看不懂的可以留言 大家可以尝试下Ambari来配置Hadoop的相关环...
    HT_Jonson阅读 2,949评论 0 50