hue 用户权限分配

一世执手 提交于 2019-12-25 02:55:27

hue 用户权限分配

一、问题背景

CDH集群原来在使用hue部署oozie工作流的时候发现不能够运行工作流,因为当时hue创建用户时设置root为初始用户,而root用户不属于supergroup组,不能够调用集群中任何组件,为了解决这个问题,当时查参考了CDH权限不够,修改用户和用户组为root
这篇文章的做法后面来看,只是治标不治本,并没有完全解决后面hue中如果设置其他用户后,其他用户所具有的权限问题,也没有深入讲解CDH组件用户权限问题。

今天这篇文章讲解的几个点

  1. 如何将集群内部组件恢复到原来的设置,并且让现在拥有的root用户继续能够调用工作流
  2. 在hue中添加新的用户,并让新的用户具有调用其他组件的权限
  3. 那个用户才是hue默认的初始用户

二 、恢复集群默认设置

1. 各个组件目录所属用户以及权限恢复到默认

/var/log 目录下涉及目录所属用户修改

sudo chown -R hdfs:hadoop /var/log/hadoop-hdfs
sudo chown -R mapred:hadoop /var/log/hadoop-mapreduce
sudo chown -R yarn:hadoop /var/log/hadoop-yarn
sudo chown -R httpfs:httpfs /var/log/hadoop-httpfs
sudo chown -R impala:impala /var/log/impalad
sudo chown -R hive:hive /var/log/hive

/var/lib 目录下所需文件夹所属用户修改

sudo chown -R hdfs:hadoop /var/lib/hadoop-hdfs
sudo chown -R mapred:hadoop /var/lib/hadoop-mapreduce
sudo chown -R yarn:hadoop /var/lib/hadoop-yarn
sudo chown -R httpfs:httpfs /var/lib/hadoop-httpfs
sudo chown -R zookeeper:zookeeper /var/lib/zookeeper
sudo chown -R impala:impala /var/lib/impalad
sudo chown -R hive:hive /var/lib/hive

部分组件目录所属用户修改

sudo chown -R zookeeper:zookeeper /var/log/zookeeper/*
sudo chown -R zookeeper:zookeeper /var/lib/zookeeper/*
sudo chown -R impala:impala /var/log/impala-minidumps

2. 集群系统用户,以及系统组恢复默认

HDFS用户,组
依次将原来所有修改过的用户,组恢复默认,然后重启集群。

3. 重启集群中碰到的error

bind(2) error:Permission denied when trying to bind to '/var/run/hdfs-sockets/dn’ ——datanode

解决办法:

sudo chown -R hdfs:hadoop /var/run/hdfs-sockets

datanode data存储目录所属目录修改

sudo chown -R hdfs:hadoop /data1/dfs /data10/dfs /data11/dfs /data12/dfs /data13/dfs /data14/dfs /data15/dfs /data16/dfs /data2/dfs /data3/dfs /data4/dfs /data5/dfs /data6/dfs /data7/dfs /data8/dfs /data9/dfs
sudo chown -R hdfs:hadoop /data1/dfs/* /data10/dfs/* /data11/dfs/* /data12/dfs/* /data13/dfs/* /data14/dfs/* /data15/dfs/* /data16/dfs/* /data2/dfs/* /data3/dfs/* /data4/dfs/* /data5/dfs/* /data6/dfs/* /data7/dfs/* /data8/dfs/* /data9/dfs/*
sudo chown -R yarn:hadoop /data1/yarn/* /data10/yarn/* /data11/yarn/* /data12/yarn/* /data13/yarn/* /data14/yarn/* /data15/yarn/* /data16/yarn/* /data2/yarn/* /data3/yarn/* /data4/yarn/* /data5/yarn/* /data6/yarn/* /data7/yarn/* /data8/yarn/* /data9/yarn/*

4. 如何给root等新建用户赋予相应权限

这里说一下,如果hue中创建第一个用户是hdfs用户,hdfs用户是可以调用其他组件的,也就是说默认可以调用其他的组件的用户是hdfs,用如果添加新用户,需要将新用户添加到hdfs用户所属组supergroup组,再将其他组件的用户也添加到supergroup组,并将该用户所属目录权限放开到组权限,那么组内的其他用户就可以调用这个用户目录文件,因为他们同属于一个组。

root在hdfs目录所属用户,组修改

sudo su - hdfs -s /bin/bash -c "hadoop fs -chown root:supergroup /user/root/*"

集群所有机器添加supergroup组

sudo groupadd supergroup

然后将所有组件用户添加到该组,包括一些hue新建的用户,以root为例

sudo usermod -a -G supergroup root
sudo usermod -a -G supergroup yarn
sudo usermod -a -G supergroup hive
sudo usermod -a -G supergroup zookeeper
sudo usermod -a -G supergroup mapred
sudo usermod -a -G supergroup oozie
sudo usermod -a -G supergroup sqoop
sudo usermod -a -G supergroup impala

同步系统的权限信息到HDFS

sudo su - hdfs -s /bin/bash -c "hdfs dfsadmin -refreshUserToGroupsMappings"

将/user/root目录的权限由700,修改为770

sudo su - hdfs -s /bin/bash -c "hadoop fs -chmod 770 /user/root"
sudo su - hdfs -s /bin/bash -c "hadoop fs -chmod 770 /user/root/*"

5. root用户测试调用工作流遇到问题

运行工作流时,报错,信息如下:

Job init failed : org.apache.hadoop.yarn.exceptions.YarnRuntimeException: java.io.FileNotFoundException: File does not exist: hdfs://nns1/user/root/.staging/job_1576825280845_0017/job.splitmetainfo
	at org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl$InitTransition.createSplits(JobImpl.java:1582)
	at org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl$InitTransition.transition(JobImpl.java:1446)
	at org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl$InitTransition.transition(JobImpl.java:1404)
	at org.apache.hadoop.yarn.state.StateMachineFactory$MultipleInternalArc.doTransition(StateMachineFactory.java:385)
	at org.apache.hadoop.yarn.state.StateMachineFactory.doTransition(StateMachineFactory.java:302)
	at org.apache.hadoop.yarn.state.StateMachineFactory.access$300(StateMachineFactory.java:46)
	at org.apache.hadoop.yarn.state.StateMachineFactory$InternalStateMachine.doTransition(StateMachineFactory.java:448)
	at org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl.handle(JobImpl.java:998)
	at org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl.handle(JobImpl.java:138)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$JobEventDispatcher.handle(MRAppMaster.java:1366)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.serviceStart(MRAppMaster.java:1142)
	at org.apache.hadoop.service.AbstractService.start(AbstractService.java:193)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$5.run(MRAppMaster.java:1573)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1924)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.initAndStartAppMaster(MRAppMaster.java:1569)
	at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1502)
Caused by: java.io.FileNotFoundException: File does not exist: hdfs://nns1/user/root/.staging/job_1576825280845_0017/job.splitmetainfo
	at org.apache.hadoop.hdfs.DistributedFileSystem$20.doCall(DistributedFileSystem.java:1270)
	at org.apache.hadoop.hdfs.DistributedFileSystem$20.doCall(DistributedFileSystem.java:1262)
	at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
	at org.apache.hadoop.hdfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:1262)
	at org.apache.hadoop.mapreduce.split.SplitMetaInfoReader.readSplitMetaInfo(SplitMetaInfoReader.java:51)
	at org.apache.hadoop.mapreduce.v2.app.job.impl.JobImpl$InitTransition.createSplits(JobImpl.java:1577)
来源: http://10.6.23.2:8000/hue/jobbrowser#!id=job_1576825280845_0017

需要添加工作流运行环境变量参数:

hadoop用户名:工作流用户
HADOOP_USER_NAME=${wf:user()}

workflow action 内部环境变量配置
如果碰见执行复杂sql查询时报错:

Could not find any valid local directory for nmPrivate/container_1576825280845_0076_02_000010.tokens

需要检查一下/data*/yarn/nm/nmPrivate 用户组是否是yarn:hadoop,如果不是,需要改成yarn:hadoop

sudo chown -R yarn:hadoop /data1/yarn/* /data10/yarn/* /data11/yarn/* /data12/yarn/* /data13/yarn/* /data14/yarn/* /data15/yarn/* /data16/yarn/* /data2/yarn/* /data3/yarn/* /data4/yarn/* /data5/yarn/* /data6/yarn/* /data7/yarn/* /data8/yarn/* /data9/yarn/*

本篇所涉及的权限问题,仅限于新用户配置,调用工作流等hue用户权限,如果涉及到操作具体HIVE表或者数据库,需要配置Sentry+Kerberos,或者CDH官方推荐的LDAP,来进行更加细化的权限分配。
附上官方文档链接,英文好的朋友可以点楼下传送门:

官方权限配置文档

如果有什么不清楚的,可以再文章下方留言,希望对你有帮助。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!