2017-03-01 16 views
8

के साथ काम नहीं कर रहे छिद्र प्रतिरूपण मैंने एक कस्टम प्रमाणीकरण प्रदाता विकसित किया है और प्रमाणीकरण के संबंध में सब कुछ ठीक लगता है: 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 उपयोग कर रहा हूँ

किसी को भी मेरी मदद कर सकते हैं, कृपया?

+0

इन 'hadoop.proxyuser..' गुण कहाँ स्थापित कर रहे हैं? – franklinsijo

+0

'hadoop.proxyuser ... 'सेटिंग्स' core-site.xml' के भीतर हैं। अन्य 'hive-site.xml' के भीतर हैं। मैंने जांच की है कि वे कस्टम ऑथ प्रदाता से पहुंच योग्य हैं। – frb

+0

@frb क्या आपने बदलाव करने के बाद hiveserver2 को पुनरारंभ किया था? – Marco99

उत्तर

0

अगर "hive.metastore.execute.setugi" चरण 1 और HiverServer2 मेजबान नोड (रों) और हाइव Metastore मेजबान नोड (रों) क्रमश: चरण 2 में के रूप में सही पर सेट है कृपया जांच करें। ध्यान दें कि यह गुण क्लाइंट/गेटवे नोड्स, हिवरसेवर 2 और हाइव मेटास्टोर होस्ट नोड्स दोनों पर सेट होना चाहिए।

संदर्भ: http://doc.mapr.com/display/MapR/Hive+User+Impersonation

+0

'hive.metastore.execute.setugi'' hive-site.xml' में 'true' पर सेट है। यह गुण फ़ाइलें नोड क्लाइंट, हाइवसेवर 2, हाइव मेटास्टोर और MySQL सर्वर चलाने वाले नोड पर स्थित है, इस प्रकार यह उन सभी सेवाओं के लिए सुलभ है। – frb

संबंधित मुद्दे