Hadoop多用户配置

来源:互联网 发布:把事情做到极致 知乎 编辑:程序博客网 时间:2024/06/05 16:00

0.Hadoop多用户配置的背景。
Hadoop多用户配置的目的就是多个hadoop用户可以共同使用HDFS,但是只能操作属于自己的空间,不能跨用户空间操作(当然/tmp是属于大家的,任何用户都会对这个文件夹有写操作)。
Hadoop多用户配置,相当于给每个用户一个hadoop客户端,每个用户都可以使用hadoop的命令操作属于自己的HDFS空间。
1. 具体配置
0)假设集群中的一台机器tseg0,已有一个普通用户tseg,现再增加一个用户another,且之前在tseg用户下已经部署好hadoop。
1)要在root权限下增加用户并设置密码,具体命令如下:

adduser another  //增加“another”用户passwd another   //为用户设置密码,此命令之后会让输入密码

2) 在tseg用户下将hadoop传到another用户下:

scp -r $HADOOP_HOME/ another@tseg0:~/

3)在another用户下配置$HADOOP_HOME,PATH变量

vim ~/.bashrc//之后进入.bashrc文件,添加下面export $HADOOP_HOME=/home/another/hadoopexport $PATH=$PATH:$HADOOP_HOME/bin//编辑完成后,source使其立即生效source ~/.bashrc

4)传输完成后可能会有权限改变的情况,比如hadoop命令不能用等等,这时需要改变一下权限:

chmod -R 775 $HADOOP_HOME

5)进入tseg用户,对HDFS增加hadoop用户目录:
HDFS的创建的缺省文件是默认是在/user文件夹下的,比如tseg用户使用hadoop fs -mkdir test ,其实就是创建了一个/user/tseg/test的文件夹。
所以在此应该先建立属于another用户的HDFS用户目录:/user/another

hadoop fs -mkdir /user/anotherhadoop fs -chown another /user/another //将文件夹的owner设为anotherhadoop fs -chgrp another /user/another //将文件夹的group设为another

为什么要在tseg用户下才能这样做呢?这是因为Hadoop认为谁启动了hadoop谁就是超级hadoop用户。
6)在tseg用户下改变/tmp文件夹权限。
因为不管哪个用户都会对/tmp文件夹有写操作,所以必须要改变/tmp的权限:

hadoop fs -chmod -R 777 /tmp

7)在hadoop超级用户tseg下重启hadoop

stop-all.shstart-all.sh

8)在another用户运行wordcount

//上传文件到/user/another/inputhadoop fs -put $HADOOP_HOME/etc/hadoop input  //运行wordcounthadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples.jar wordcount input output

附录

抽空写的shell脚本,可以实现hadoop多用户配置,从不懂shell脚本到写出完整的shell程序还是花费了不少时间,收取小小1分,算是对作者的鼓励:)点击下载

0 0
原创粉丝点击