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/hadoop
export $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/another
hadoop fs -chown another /user/another //将文件夹的owner设为another
hadoop 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.sh
start-all.sh
8)在another用户运行wordcount
//上传文件到/user/another/input
hadoop fs -put $HADOOP_HOME/etc/hadoop input
//运行wordcount
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples.jar wordcount input output
附录
抽空写的shell脚本,可以实现hadoop多用户配置,从不懂shell脚本到写出完整的shell程序还是花费了不少时间,收取小小1分,算是对作者的鼓励:)点击下载