我正在尝试通过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用户身份执行查询?
答案 0 :(得分:0)
我认为您已配置用户模拟。您可以按照以下链接为apache钻取提供查看权限。我实际上并没有使用apache,所以如果工作正常,请在评论中更新。