2016-02-01 5 views
7

का उपयोग करते समय थ्रिफ्ट एसएएसएल संबंधित अपवाद IAuth2 के आधार पर PasswdAuthenticationProvider इंटरफ़ेस का एक कस्टम कार्यान्वयन बनाया है। मुझे लगता है कि समस्या का सामना करने के लिए कोड अप्रासंगिक है, फिर भी, यह here पाया जा सकता है।हाइवसेवर 2: कस्टम PasswdAuthenticationProvider

मैं निम्नलिखित गुणों के साथ hive-site.xml कॉन्फ़िगर कर दिया है:

<property> 
    <name>hive.server2.authentication</name> 
    <value>CUSTOM</value> 
</property> 
<property> 
    <name>hive.server2.custom.authentication.class</name> 
    <value>com.telefonica.iot.cosmos.hive.authprovider.OAuth2AuthenticationProviderImpl</value> 
</property> 

तब मैं हाइव सेवा को पुनः आरंभ है और मैं सफलता के साथ एक JDBC आधारित दूरस्थ क्लाइंट से कनेक्ट हैं।

2016-02-01 11:52:44,515 INFO [pool-5-thread-5]: authprovider.HttpClientFactory (HttpClientFactory.java:<init>(66)) - Setting max total connections (500) 
2016-02-01 11:52:44,515 INFO [pool-5-thread-5]: authprovider.HttpClientFactory (HttpClientFactory.java:<init>(67)) - Setting default max connections per route (100) 
2016-02-01 11:52:44,799 INFO [pool-5-thread-5]: authprovider.HttpClientFactory (OAuth2AuthenticationProviderImpl.java:Authenticate(65)) - Doing request: GET https://account.lab.fiware.org/user?access_token=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx HTTP/1.1 
2016-02-01 11:52:44,800 INFO [pool-5-thread-5]: authprovider.HttpClientFactory (OAuth2AuthenticationProviderImpl.java:Authenticate(76)) - Response received: {"organizations": [], "displayName": "frb", "roles": [{"name": "provider", "id": "106"}], "app_id": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx", "email": "[email protected]", "id": "frb"} 
2016-02-01 11:52:44,801 INFO [pool-5-thread-5]: authprovider.HttpClientFactory (OAuth2AuthenticationProviderImpl.java:Authenticate(104)) - User frb authenticated 
2016-02-01 11:52:44,868 INFO [pool-5-thread-5]: thrift.ThriftCLIService (ThriftCLIService.java:OpenSession(188)) - Client protocol version: HIVE_CLI_SERVICE_PROTOCOL_V6 
2016-02-01 11:52:44,871 INFO [pool-5-thread-5]: session.SessionState (SessionState.java:start(358)) - No Tez session required at this point. hive.execution.engine=mr. 
2016-02-01 11:52:44,873 INFO [pool-5-thread-5]: session.SessionState (SessionState.java:start(358)) - No Tez session required at this point. hive.execution.engine=mr. 

समस्या एक आवर्ती ढंग से निम्न त्रुटि प्रतीत होता है कि बाद है:

2016-02-01 11:52:48,227 ERROR [pool-5-thread-4]: server.TThreadPoolServer (TThreadPoolServer.java:run(215)) - Error occurred during processing of message. 
java.lang.RuntimeException: org.apache.thrift.transport.TTransportException 
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219) 
    at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:189) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.thrift.transport.TTransportException 
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 
    at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:182) 
    at org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125) 
    at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:253) 
    at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41) 
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216) 
    ... 4 more 
2016-02-01 11:53:18,323 ERROR [pool-5-thread-5]: server.TThreadPoolServer (TThreadPoolServer.java:run(215)) - Error occurred during processing of message. 
java.lang.RuntimeException: org.apache.thrift.transport.TTransportException 
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:219) 
    at org.apache.thrift.server.TThreadPoolServer$WorkerProcess.run(TThreadPoolServer.java:189) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: org.apache.thrift.transport.TTransportException 
    at org.apache.thrift.transport.TIOStreamTransport.read(TIOStreamTransport.java:132) 
    at org.apache.thrift.transport.TTransport.readAll(TTransport.java:84) 
    at org.apache.thrift.transport.TSaslTransport.receiveSaslMessage(TSaslTransport.java:182) 
    at org.apache.thrift.transport.TSaslServerTransport.handleSaslStartMessage(TSaslServerTransport.java:125) 
    at org.apache.thrift.transport.TSaslTransport.open(TSaslTransport.java:253) 
    at org.apache.thrift.transport.TSaslServerTransport.open(TSaslServerTransport.java:41) 
    at org.apache.thrift.transport.TSaslServerTransport$Factory.getTransport(TSaslServerTransport.java:216) 
    ... 4 more 

क्यों यह /var/log/hive/hiveserver2.log में पाया एक सफल रन का एक उदाहरण है? मैंने hive.server2.authentication के डिफ़ॉल्ट मान का उपयोग करते समय कई अन्य प्रश्नों में देखा है, यानी SASL, और ग्राहक हैंडशेक नहीं कर रहा है। लेकिन मेरे मामले में, ऐसी संपत्ति का मूल्य CUSTOM है। मैं इसे समझ नहीं सकता, और किसी भी मदद की वास्तव में सराहना की जाएगी।

संपादित करें 1

मैंने पाया HiveServer2 ... HiveServer2 से ही करने के लिए समय-समय पर अनुरोध कर रहे हैं! ये अनुरोध हैं जो थ्रिफ्ट एसएएसएल त्रुटियों के परिणामस्वरूप हैं:

$ sudo tcpdump -i lo port 10000 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
listening on lo, link-type EN10MB (Ethernet), capture size 65535 bytes 
... 
... 
10:18:48.183469 IP dev-fiwr-bignode-11.hi.inet.ndmp > dev-fiwr-bignode-11.hi.inet.55758: Flags [.], ack 7, win 512, options [nop,nop,TS val 1034162147 ecr 1034162107], length 0 
^C 
21 packets captured 
42 packets received by filter 
0 packets dropped by kernel 
[[email protected] ~]$ sudo netstat -nap | grep 55758 
tcp  0  0 10.95.76.91:10000   10.95.76.91:55758   CLOSE_WAIT 7190/java   
tcp  0  0 10.95.76.91:55758   10.95.76.91:10000   FIN_WAIT2 -     
[[email protected] ~]$ ps -ef | grep 7190 
hive  7190  1 1 10:10 ?  00:00:10 /usr/java/jdk1.7.0_71//bin/java -Xmx1024m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/var/log/hadoop/hive -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/lib/hadoop -Dhadoop.id.str=hive -Dhadoop.root.logger=INFO,console -Djava.library.path=:/usr/lib/hadoop/lib/native/Linux-amd64-64:/usr/lib/hadoop/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Xmx1024m -Xmx4096m -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /usr/lib/hive/lib/hive-service-0.13.0.2.1.7.0-784.jar org.apache.hive.service.server.HiveServer2 -hiveconf hive.metastore.uris=" " -hiveconf hive.log.file=hiveserver2.log -hiveconf hive.log.dir=/var/log/hive 
1011  14158 12305 0 10:19 pts/1 00:00:00 grep 7190 

कोई विचार?

संपादित 2

HiveServer2 को HiveServer2 से भेजे गए कनेक्शन के बारे में और अधिक शोध की। डेटा पैकेट हमेशा 5 बाइट्स भेजे जाते हैं, निम्नलिखित वाले (हेक्साडेसिमल): 22 41 30 30 31

इन कनेक्शनों के बारे में कोई विचार?

उत्तर

0

अंततः मैंने इसे "निश्चित" किया।

iptables -A INPUT -i lo -p tcp --dport 10000 -j DROP 
के

: चूंकि संदेश Ambari HiveServer2 मशीन (अजीब पिंग के कुछ राजा) में चल रहे एजेंट द्वारा भेजा गया था, मैं बस एक iptables नियम लूपबैक इंटरफेस पर टीसीपी/10000 बंदरगाह के लिए सभी कनेक्शनों को अवरुद्ध जोड़ा बेशक, अब अंबारी ने चेतावनी दी है कि हाइवसेवर 2 जीवित नहीं है (पिंग्स गिराए गए हैं)। और उपरोक्त नियम हटा दिया जाना चाहिए यदि मैं अंबरारी से सर्वर को पुनरारंभ करना चाहता हूं (प्रारंभिक स्क्रिप्ट में एक और जीवित जांच है); फिर पुनरारंभ करने के बाद मैं फिर से नियम सक्षम कर सकता हूं। खैर, मैं उसके साथ रह सकता हूँ।

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