के साथ काम नहीं कर रहे छिद्र प्रतिरूपण मैंने एक कस्टम प्रमाणीकरण प्रदाता विकसित किया है और प्रमाणीकरण के संबंध में सब कुछ ठीक लगता है: HiveServer2 अच्छी तरह से शुरू होता है और प्रमाणीकृत कनेक्शन ठीक से मान्य होते हैं। यहां तक कि, सरल हाइव क्वेरी काम करते हैं, जैसे कि show tables
।कस्टम प्रमाणीकरण प्रदाता
समस्या तब होती है जब मैं रिमोट हाइव क्लाइंट से क्वेरी निष्पादित करने का प्रयास करता हूं। चूंकि मैंने अपने क्रेडेंशियल्स को पास करने से कनेक्ट किया है (उपयोगकर्ता + पासवर्ड ... अच्छा, वास्तव में एक पासवर्ड नहीं, यह एक टोकन है, लेकिन यह प्रासंगिक नहीं है), और हाइव कॉन्फ़िगरेशन प्रतिरूपण के लिए तैयार है (नीचे देखें), मुझे उम्मीद है कि हाइवसेवर 2 ने प्रदर्शन किया मेरे उपयोगकर्ता के रूप में पूछताछ करें। फिर भी, यह hive
उपयोगकर्ता का उपयोग करता है, जिसमें मेरे एचडीएफएस उपयोगकर्ता स्थान पर कोई अनुमति नहीं है।
उदाहरण के लिए, अगर मैं एक तालिका बनाने:
hive-site.xml
:
com.telefonica.iot.idm.endpoint=https://account.lab.fiware.org
hive.server2.enable.doAs=true
hive.server2.authentication=CUSTOM
hive.server2.custom.authentication.class=com.telefonica.iot.cosmos.hive.authprovider.OAuth2AuthenticationProviderImpl
> create external table mytable (name string, job string, age string) row format delimited fields terminated by ',' location '/user/frb/testdir'
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=hive, access=EXECUTE, inode="/user/frb":frb:frb:drwxr-----
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkFsPermission(FSPermissionChecker.java:265)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.check(FSPermissionChecker.java:251)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkTraverse(FSPermissionChecker.java:205)
at org.apache.hadoop.hdfs.server.namenode.FSPermissionChecker.checkPermission(FSPermissionChecker.java:168)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.checkPermission(FSNamesystem.java:5519)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getFileInfo(FSNamesystem.java:3517)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.getFileInfo(NameNodeRpcServer.java:785)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.getFileInfo(ClientNamenodeProtocolServerSideTranslatorPB.java:764)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:585)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:928)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2013)
at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2009)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Subject.java:415)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1594)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2007)
)
प्रासंगिक कॉन्फ़िगरेशन पैरामीटर के बारे में, यह मेरा विन्यास (सरलीकृत, जैसे एक्सएमएल नहीं)
core-site.xml
:
hadoop.proxyuser.hive.groups=*
hadoop.proxyuser.hive.hosts=*
आप कस्टम हाइव प्रमाणीकरण प्रदाता कोड here पर एक नज़र डाल सकते हैं।
मैं हाइव 0.13.0 उपयोग कर रहा हूँ
किसी को भी मेरी मदद कर सकते हैं, कृपया?
इन 'hadoop.proxyuser..' गुण कहाँ स्थापित कर रहे हैं? – franklinsijo
'hadoop.proxyuser ... 'सेटिंग्स' core-site.xml' के भीतर हैं। अन्य 'hive-site.xml' के भीतर हैं। मैंने जांच की है कि वे कस्टम ऑथ प्रदाता से पहुंच योग्य हैं। – frb
@frb क्या आपने बदलाव करने के बाद hiveserver2 को पुनरारंभ किया था? – Marco99