Spark应用对接Hive metastore报"There is no primary group for UGI spark"问题咨询
问题根因
org.apache.hadoop.hive.ql.metadata.HiveException: MetaException(message:Got exception: java.io.IOException There is no primary group for UGI spark (auth:SIMPLE));
该报错核心是Hadoop UGI(用户组信息)安全模型要求:SIMPLE认证模式下运行进程的操作系统用户必须存在对应的主用户组,才能完成Hive元数据交互和HDFS权限校验。你当前Docker容器内运行作业的spark用户没有配置主用户组,且缺少Hadoop、Hive侧的权限组归属。
需添加的用户组及操作步骤
- 首先配置容器内
spark用户的主用户组:
先创建同名spark用户组,再将其设置为spark用户的主组:groupadd spark usermod -g spark spark - 添加到HDFS超级用户组:通常集群对应的组名为
hadoop或hdfs,加入该组后可获得HDFS基础读写权限,满足作业写入数据的要求 - 添加到Hive服务组:通常组名为
hive,加入该组后可正常访问Hive metastore元数据,以及操作Hive库表对应的HDFS存储路径
额外注意事项
- 容器内
spark用户的UID、GID必须和Hadoop集群各节点上的spark用户UID、GID完全一致,否则会出现跨节点权限不匹配的问题 - 提前在HDFS上创建spark用户的根目录并配置正确权限:
hdfs dfs -mkdir -p /user/spark hdfs dfs -chown -R spark:spark /user/spark hdfs dfs -chmod 755 /user/spark - 若作业需要操作特定Hive库表,需额外保证
spark用户对这些库表对应的HDFS路径有读写权限
内容的提问来源于stack exchange,提问作者eugen-fried
相关产品推荐
相关产品推荐

