权限错误 |阿帕奇钻查询 |高密度文件系统

Posted

技术标签:

【中文标题】权限错误 |阿帕奇钻查询 |高密度文件系统【英文标题】:Permission Error | Apach Drill Query | HDFS 【发布时间】:2017-01-17 09:00:46 【问题描述】:

我正在尝试通过 Apache Drill(分布式模式)查询 hdfs 集群上的 parquet 文件。 我创建了一个名为“hdfs”的新存储插件,其中包含以下配置


  "type": "file",
  "enabled": true,
  "connection": "hdfs://<my-name-node-host>:8020",
  "config": null,
  "workspaces": 
    "root": 
      "location": "/",
      "writable": true,
      "defaultInputFormat": null
    
  ,
  "formats": 
    "json": 
      "type": "json",
      "extensions": [
        "json"
      ]
    ,
    "parquet": 
      "type": "parquet"
    
  

在 hadoop fs 中,/user/tj/ 文件夹中有示例文件 region.parquet。默认情况下,它的所有者和组为hdfs:hdfs,我想保留它。

但是当我尝试通过以下 sql 查询从 Apache Drill UI 中查询它时: SELECT * FROM hdfs./user/tj/region.parquet 它抛出如下异常:

org.apache.drill.common.exceptions.UserRemoteException:系统错误: RemoteException:权限被拒绝: 用户=, 访问=执行, inode="/user/tj/region.parquet/.drill.parquet_metadata":hdfs:hdfs:-rw-r--r-- 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:319) 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:259) 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:205) 在 org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:190) 在 org.apache.hadoop.hdfs.server.namenode.FSDirectory.checkPermission(FSDirectory.java:1827) 在 org.apache.hadoop.hdfs.server.namenode.FSDirStatAndListingOp.getFileInfo(FSDirStatAndListingOp.java:108) 在 org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:3972) 在 org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:1130) 在 org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:851) 在 org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 在 org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640) 在 org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2313) 在 org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2309) 在 java.security.AccessController.doPrivileged(Native Method) 在 javax.security.auth.Subject.doAs(Subject.java:422) 在 org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1724) 在 org.apache.hadoop.ipc.Server$Handler.run(Server.java:2307) [错误 编号:24bf0cf0-0181-4c72-97ee-4b4eb98771bf 开启 :31010]

如何解决此权限问题以使用 apache Drill 查询 hadoop 集群文件?

如何以 hdfs 用户执行查询?

【问题讨论】:

【参考方案1】:

我认为您已经配置了用户模拟。您可以按照以下链接授予 apache 演习的查看权限。我实际上没有使用 apache 钻头,所以如果它工作正常,请在评论中更新。

Configure user impersonation link

【讨论】:

根据文档,不支持用户模拟的客户端:Drill Web Console,REST API。我正在使用 Drill Web 控制台,所以如何实现。 无论如何,我以 hdfs 用户身份在所有主机上启动了 Drillbit 服务作为快速修复 - 现在可以使用。感谢您的帮助。

以上是关于权限错误 |阿帕奇钻查询 |高密度文件系统的主要内容,如果未能解决你的问题,请参考以下文章

高分替兄弟求VB编程题

Linux系统之find日常使用大全

模块化配电系统在高密度数据中心的应用

系统创建文件失败...权限被拒绝 - cPanel

如何解决有关自定义 500 和 503 错误页面的问题

Android 10 API 29(操作系统错误:权限被拒绝,errno = 13)保存文件(颤振)