Processing math: 100%

org.apache.hadoop.security.AccessControlException Permission denied: user=anonymous, access=WRITE...

本文涉及的产品
智能开放搜索 OpenSearch行业算法版,1GB 20LCU 1个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
实时计算 Flink 版,5000CU*H 3个月
简介: 在尝试通过 HiveServer2 远程执行 DDL 操作时遇到权限错误,错误信息显示匿名用户(`anonymous`)无权执行写操作。解决方案包括:1) 使用 `hdfs dfs -chmod -R +777 /warehouse` 给目录授权(不推荐,仅适用于测试环境);2) 配置 Hive 和 Hadoop,创建具有权限的用户,如 `ad`,并将该用户添加到 Hive 的管理员角色和 Hadoop 的 proxyuser 配置中,然后重启相关服务。通过 `beeline` 测试连接和操作,确认权限问题已解决。

@[toc]

报错

当我使用 HiveServer2 远程连接对 Hive 进行 DDL 操作时,出现了权限错误,完整报错信息如下:

[2024-04-04 19:36:31] [08S01][1]
[2024-04-04 19:36:31] Error while processing statement: FAILED: Execution Error, return code 1 from org.apache.hadoop.hive.ql.exec.DDLTask. MetaException(message:Got exception: org.apache.hadoop.security.AccessControlException Permission denied: user=anonymous, access=WRITE, inode="/warehouse/ad/ods":ad:ad:drwxr-xr-x
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:506)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:346)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermissionWithContext(FSPermissionChecker.java:370)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:240)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1943)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1927)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkAncestorAccess(FSDirectory.java:1886)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.FSDirMkdirOp.mkdirs(FSDirMkdirOp.java:60)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.mkdirs(FSNamesystem.java:3405)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.mkdirs(NameNodeRpcServer.java:1159)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.mkdirs(ClientNamenodeProtocolServerSideTranslatorPB.java:740)
[2024-04-04 19:36:31] at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtosClientNamenodeProtocol2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
[2024-04-04 19:36:31] at org.apache.hadoop.ipc.ProtobufRpcEngine2ServerProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:604)
[2024-04-04 19:36:31] at org.apache.hadoop.ipc.ProtobufRpcEngine2ServerProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:572)
[2024-04-04 19:36:31] at org.apache.hadoop.ipc.ProtobufRpcEngine2ServerProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:556)
[2024-04-04 19:36:31] at org.apache.hadoop.ipc.RPCServer.call(RPC.java:1093)[2024040419:36:31]atorg.apache.hadoop.ipc.ServerRpcCall.run(Server.java:1043)
[2024-04-04 19:36:31] at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:971)
[2024-04-04 19:36:31] at java.security.AccessController.doPrivileged(Native Method)
[2024-04-04 19:36:31] at javax.security.auth.Subject.doAs(Subject.java:422)
[2024-04-04 19:36:31] at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1878)

报错显示,目前我登录的用户名为 anonymous,也就是匿名(游客)模式,但正在执行一个写操作,被拒绝了。

解决方法

方法1

通过 HDFS 命令对操作目录授权。

hdfs dfs -chmod -R +777 /warehouse

但是该方法治标不治本,而且我们处于匿名模式下也不安全,如果是测试环境则可以通过手动授权的方式快速解决。

方法2

既然是因为我们的用户权限问题,那么可以通过创建一个拥有权限的用户不就能解决了,这种方式还更加安全。

修改 Hive 的配置文件 hive-site.xml,在其中添加权限用户:

        <property>
                <name>hive.users.in.admin.role</name>
                <value>ad</value>
        </property>

修改 Hadoop 的配置文件 core-site.xml,在其中添加如下配置项:

    <!-- 设置集群的连接用户 -->
    <property>
        <name>hadoop.proxyuser.ad.hosts</name>
        <value>*</value>
    </property>

    <property>
       <name>hadoop.proxyuser.ad.groups</name>
        <value>*</value>
    </property>

配置项中的 ad 为我们在 Hive 中配置的对应用户。

配置完成后,同步 core-site.xml 文件到其它机器。

重启 Hadoop、Hive 元数据服务、HiveServer2 服务。

测试

beeline

!connect jdbc:hive2://hadoop201:10000

image.png

用户名为我们上面在 Hive 中配置的用户名,密码回车跳过即可,无需输入。

image.png

上面通过 beeline 连接方式创建了库 aaa,检查是否还有权限报错问题。

image.png

创建完成,没有错误,我们在 HDFS 上检查一下该目录的所属组:

image.png

OK,妥妥的。

相关文章
|
7月前
|
分布式计算 Hadoop 网络安全
|
分布式计算 Hadoop
【hadoop】解决Datanode denied communication with namenode because hostname cannot be resolved
【hadoop】解决Datanode denied communication with namenode because hostname cannot be resolved
488 0
|
3月前
|
分布式计算 Kubernetes Hadoop
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
大数据-82 Spark 集群模式启动、集群架构、集群管理器 Spark的HelloWorld + Hadoop + HDFS
207 6
|
3月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
96 2
|
22天前
|
存储 分布式计算 大数据
Flume+Hadoop:打造你的大数据处理流水线
本文介绍了如何使用Apache Flume采集日志数据并上传至Hadoop分布式文件系统(HDFS)。Flume是一个高可用、可靠的分布式系统,适用于大规模日志数据的采集和传输。文章详细描述了Flume的安装、配置及启动过程,并通过具体示例展示了如何将本地日志数据实时传输到HDFS中。同时,还提供了验证步骤,确保数据成功上传。最后,补充说明了使用文件模式作为channel以避免数据丢失的方法。
60 4
|
2月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第27天】在大数据时代,数据湖技术凭借其灵活性和成本效益成为企业存储和分析大规模异构数据的首选。Hadoop和Spark作为数据湖技术的核心组件,通过HDFS存储数据和Spark进行高效计算,实现了数据处理的优化。本文探讨了Hadoop与Spark的最佳实践,包括数据存储、处理、安全和可视化等方面,展示了它们在实际应用中的协同效应。
145 2
|
2月前
|
存储 分布式计算 Hadoop
数据湖技术:Hadoop与Spark在大数据处理中的协同作用
【10月更文挑战第26天】本文详细探讨了Hadoop与Spark在大数据处理中的协同作用,通过具体案例展示了两者的最佳实践。Hadoop的HDFS和MapReduce负责数据存储和预处理,确保高可靠性和容错性;Spark则凭借其高性能和丰富的API,进行深度分析和机器学习,实现高效的批处理和实时处理。
119 1
|
3月前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
94 1
|
3月前
|
存储 分布式计算 资源调度
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(一)
100 5
|
3月前
|
资源调度 数据可视化 大数据
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
大数据-04-Hadoop集群 集群群起 NameNode/DataNode启动 3台公网云 ResourceManager Yarn HDFS 集群启动 UI可视化查看 YarnUI(二)
43 4

相关实验场景

更多

推荐镜像

更多
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等