权限错误| Apach钻查询| HDFS

时间:2017-01-17 09:00:46

标签: hadoop ambari apache-drill

我正在尝试通过Apache Drill(分布式模式)查询hdfs集群上存在的镶木地板文件。 我创建了一个名为'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钻取UI查询它时: SELECT * FROM hdfs/user/tj/region.parquet 它抛出异常如下:

  

org.apache.drill.common.exceptions.UserRemoteException:SYSTEM ERROR:   RemoteException:权限被拒绝:   用户=,   存取= EXECUTE,   索引节点= “/用户/ 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 $服务器$ ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:640)   在org.apache.hadoop.ipc.RPC $ Server.call(RPC.java:982)at at   org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2313)at at   org.apache.hadoop.ipc.Server $ Handler $ 1.run(Server.java:2309)at 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:1724)   在org.apache.hadoop.ipc.Server $ Handler.run(Server.java:2307)[错误   Id:24bf0cf0-0181-4c72-97ee-4b4eb98771bf on   :31010]

如何修复此权限问题以使用apache drill查询hadoop群集文件?

如何以hdfs用户身份执行查询?

1 个答案:

答案 0 :(得分:0)

我认为您已配置用户模拟。您可以按照以下链接为apache钻取提供查看权限。我实际上并没有使用apache,所以如果工作正常,请在评论中更新。

Configure user impersonation link