Hadoop多用户配置的目的就是多个hadoop用户可以共同使用HDFS,但是只能操作属于自己的空间,不能跨用户空间操作(当然/tmp是属于大家的,任何用户都会对这个文件夹有写操作)。
Hadoop多用户配置,相当于给每个用户一个hadoop客户端,每个用户都可以使用hadoop的命令操作属于自己的HDFS空间。
本地集群中的一台机器hadoop-master2中已经存在一个用户hadoop,现在增加一个用户hong,并且之前的hadoop用户下已经部署好hadoop集群
1、在root用户下增加用户,并设置密码
[root@hadoop-master2 ~]# adduser hong [root@hadoop-master2 ~]# passwd hong
2、在hadoop用户下将hadoop传到hong用户下:
[hadoop@hadoop-master2 RoilandGroup]$ scp -r hadoop-2.6.0 hong@hadoop-master2:~/
3、在hong用户下配置$HADOOP_HOME,PATH变量
vi ~/.bash_profile
export HADOOP_HOME=/usr/local/RoilandGroup/hadoop-2.6.0 export SPARK_HOME=/usr/local/RoilandGroup/spark export PATH=$PATH:$HADOOP_HOME/bin:$SPARK_HOME/bin
source ~/.bash_profile
4、传输完成后可能会有权限改变的情况,比如hadoop命令不能用等等,这时需要改变一下权限:
chmod -R 775 $HADOOP_HOME
5、进入hadoop用户,对HDFS增加hadoop用户目录:
HDFS的创建的缺省文件是默认是在/user文件夹下的,比如hadoop用户使用hadoop fs -mkdir test
,其实就是创建了一个/user/tseg/test的文件夹。
所以在此应该先建立属于hong用户的HDFS用户目录:/user/hong
hadoop fs -mkdir /user/hong hadoop fs -chown hong /user/hong //将文件夹的owner设为another hadoop fs -chgrp hong /user/hong //将文件夹的group设为another
这是因为Hadoop认为谁启动了hadoop谁就是超级hadoop用户。
6、在hadoop用户下改变/tmp文件夹权限。
因为不管哪个用户都会对/tmp文件夹有写操作,所以必须要改变/tmp的权限:
hadoop fs -chmod -R 777 /tmp
7、在hadoop超级用户hadoop下重启hadoop
stop-all.sh start-all.sh
8、在hong用户运行wordcount
[hong@hadoop-master2 data]$ vi test.txt [hong@hadoop-master2 data]$ hadoop fs -put test.txt test [hong@hadoop-master2 data]$ hadoop jar /usr/local/RoilandGroup/hadoop-2.6.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount test output
结果