
1.创建一批普通用户,如test01、test02…并为其设置密码,命令如下:
useradd test01 创建用户
passwd test01 为test01设置密码
1
2
1
2
2.把该批普通用户加入hadoop用户组
gpasswd -a test01 hadoop把用户test01加入hadoop用户组
1
1
注:在文件/etc/passwd中记录着系统所有的用户;在文件/etc/shadow中记录着所有用户的密码,并一一对应;在文件/etc/group中记录着所有的用户组。
3.由于在/home/hadoop/.bashrc中配置了相关的环境变量,在启动spark-shell、hive、hbase时不需要加入相关路径,为了便于普通用户test01等的 *** 作,在test01等用户的.bashrc文件中配置相关环境变量,并用source ~./bashrc使其生效。
4.按照上述步骤设置后,可以正常启动spark-shell与hbase shell,但启动hive时出现报错:
Permission denied:user=test01,access=EXECUTE,inode="/tmp/hive":hadoop:supergroup:drwxrwx---
1
1
出现这个问题的原因是在hdfs上目录/tmp/hive的所有者为hadoop,所属用户组为supergroup,而相对于该目录用户test01属于其他用户,不具有任何权限,这里报错是不具有EXECUTE权限,要想解决这个问题,需要修改/tmp/hive的权限,命令如下:
hdfs dfs -chmod 777 /tmp修改/tmp的权限
1
1
再次启动hive便不会再报该错误。
5.在hadoop用户上可以正常运行如下程序,但是在test01用户登录运行时抛出异常
hadoop jar hadoop jar /home/hadoop/hadoop2.7.1/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar wordcount /test/input /test/output
1
1
注:这里运行的是wordcount示例,/test/input为数据所在路径;/test/output为输出结果目录,运行时自动创建。
在test01用户上执行该程序时抛出如下异常:
这里写图片描述
出现这个异常的原因是:
原来mapreduce.jobhistory.address 和mapreduce.jobhistory.webapp.addres 这两个address的地址使用的是CDH默认的配置值,这里需要改成hostname,这样可能就是原来的位置不对造成的。
这里参考了(http://blog.csdn.net/wjcquking/article/details/41242625)
发现需要在hadoop的配置文件mapred.site.xml中添加如下内容:
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value> #master为hostname
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/user</value> #/user为hdfs上的一个目录
</property>
1
2
3
4
5
6
7
8
9
10
11
12
13
1
2
3
4
5
6
7
8
9
10
11
12
13
在mapred.site.xml中添加如下内容后,把该文件发送到集群其余的机器;在hdfs上创建/user并修改其权限,使得用户test01对其有写权限。由于程序运行时要在hdfs上自动创建/test/output结果目录,则用户test01要对hdfs有写权限,这里为了便于 *** 作,修改hdfs权限为777.
至此,wordcount示例可以正常运行。
我们都知道hue+sentry可以管理hive的用户以及权限,但是其中有几个概念必须要要弄明白:1、hue的用户以及用户组是独立的,跟hive没有关系,hive没有用户的概念;2、利用hue给hive赋权时的role(角色)是可以随便命名的,只是赋权 *** 作的最小粒度是用户组,要想实现一个用户维护一个权限就必须是一个用户一个用户组(一个用户组内的所有用户权限都是一样的);3、新加的用户还必须在hvie服务所在的服务器添加相应的用户以及用户组;4、使用hue查询hive数据,程序都是由hive用户代理的,但是程序运行的资源池可以通过yarn的配置规则来指定。
1、第一步先建用户组
在添加用户组时需要指定permissions,目的是让新用户在登陆hue之后能看到哪些模块,以上截图的就是一般用户需要的(能跑hive任务,能查询hdfs信息,能查看job信息等)
2、第二步添加用户
点击下一步勾选新用户的用户组==》点击下一步激活用户==》完成
3、用户以及用户组设定之后,需要根据邮件申请的内容设置该账号的hive权限。
这里分两种情况,一个是新用户不需要放到之前的用户组中去,另一种是需要放到之前已经存在的组中去(这里重点说下,如果是这种情况,那么还必须创建一个跟用户名一致的附属主)。
这里我已经将脚本写好,放到服务器/root/add_new_user_as_hue.sh
通过以上 *** 作,我们已经实现了一个用户维护一个权限。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)