2012-03-15 13 views
9

साथ छत्ता का उपयोग कैसे करें मैं 3 क्लस्टर पर Hadoop और हाइव स्थापित। आम तौर पर मैं छत्ता और Hadoop उपयोग कर सकते हैं, लेकिन जब मैं अन्य उपयोगकर्ता के साथ प्रवेश करें, मैं हाइव का उपयोग नहीं कर सकते हैं। त्रुटि है:अन्य उपयोगकर्ता

हाइव> शो टेबल;

में विफल: मेटाडाटा में त्रुटि: javax.jdo.JDOFatalDataStoreException: एक कनेक्शन प्राप्त नहीं कर सकता, पूल त्रुटि एक मान्य वस्तु नहीं बना सका, कारण: एक केवल पढ़ने के लिए उपयोगकर्ता या केवल पढ़ने के लिए डेटाबेस में एक उपयोगकर्ता के लिए अनुमति नहीं है एक कनेक्शन पर केवल पढ़ने के लिए मोड अक्षम करें।

NestedThrowables:

org.apache.commons.dbcp.SQLNestedException: एक कनेक्शन प्राप्त नहीं कर सकता, पूल त्रुटि एक मान्य वस्तु नहीं बना सका, कारण: एक केवल पढ़ने के लिए उपयोगकर्ता या केवल पढ़ने के लिए डेटाबेस में एक उपयोगकर्ता किसी कनेक्शन पर केवल-पढ़ने योग्य मोड को अक्षम करने की अनुमति नहीं है।

में विफल: निष्पादन त्रुटि, वापसी कोड 1 org.apache.hadoop.hive.ql.exec.DDLTask से

मैं अन्य उपयोगकर्ता, और फ़ोल्डर जो मैं स्थापित के लिए निर्धारित अनुमति chmod 777 के साथ प्रवेश करें हडूप और हाइव, मैं हाइव का उपयोग कर सकते हैं। लेकिन जब मैं दूसरे उपयोगकर्ता पर लॉग ऑन करता हूं, तो यह त्रुटि होती है। मेरा मतलब है, मैं जब मैं Hadoop पर छत्ता उपयोग करने के लिए लॉग ऑन करें अनुमति सेट करना होगा। एक बार कॉन्फ़िगर अनुमति के साथ Hadoop पर छत्ता का उपयोग कैसे कर सकते हैं ????

उत्तर

6

मैं आपको बता नहीं सकता क्यों यह काम किया, लेकिन यह मेरे लिए तय की।

cd ../hive/metatstore_db/ 
rm *.lck 

मुझे अपने हैडऑप खाते और रूट खाते में पृथक ताले वाले कोई समस्या थी।

+0

मैंने ऊपर वर्णित दोनों चीजों की कोशिश की लेकिन अभी भी एक ही त्रुटि हो रही है .. किसी भी विचार अगर आप लोगों ने मुझे बताया है तो कृपया मुझे बताएं –

+0

किसी भी .lck फ़ाइलों के लिए अपना सर्वर खोजें और देखें और देखें कि वे किसी स्थान पर हैं या नहीं यह प्रासंगिक लगता है? जैसे मैंने कहा कि मैंने बहुत सारे शोध किए हैं लेकिन कभी नहीं सोचा कि यह क्यों काम करता है। –

+0

मुझे एक ही समस्या थी। अनुमतियाँ बदलने और हटाने ताला फ़ाइलें मदद से किया था। – Sumod

13

मैं एक ही मुद्दा था और निम्नलिखित तरीके से इसका समाधान नहीं होता। मुद्दा दो संभावित कारणों से है।

  • या तो, आप रूप में लॉग इन उपयोगकर्ता (कर 'Whoami') डर्बी metastore डेटाबेस हाइव द्वारा प्रयोग किया जाता डायरेक्ट्री तक पहुंच लिखने नहीं है। तो, अधिकांश मामलों में/var/lib/hive/metastore/metastore_db पर जाएं (यह डिफ़ॉल्ट है) और सत्यापित करें कि क्या आपके उपयोगकर्ता आईडी को ls कर अनुमति है या नहीं। यदि आपके उपयोगकर्ता आईडी में अनुमति नहीं है, तो आपको निर्देशिका के मालिक से आपको लिखने की अनुमति देने के लिए कहा जाना चाहिए। तो, मालिक/सुपर उपयोगकर्ता के रूप में लॉगिन और निष्पादित

सीडी/var/lib/छत्ता/metastore/metastore_db

chmod एक + rwx। --recursive

चेतावनी दीजिये कि यह सभी उपयोगकर्ताओं को अनुमति देगा। तदनुसार tweak आर-डब्ल्यू-एक्स बिट्स।

  • अन्य संभावित कारण यह है कि डर्बी एक एकल उपयोगकर्ता डेटाबेस है।इसलिए, कृपया

सीडी/var/lib/छत्ता/metastore/metastore_db

rm * .lck

1

का उपयोग कर से बचने की कोशिश एम्बेडेड डर्बी सर्वर पर जाकर ताला फ़ाइलें साफ़ क्योंकि यह निर्देशिकाओं पर निर्भर करता है और कई सीमाएं हैं।

MySQL सर्वर के साथ अपने हाइव को कॉन्फ़िगर करना हमेशा बेहतर होता है। तुम बस छत्ता-site.xml

<property> 
    <name>javax.jdo.option.ConnectionURL</name> 
    <value>jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true</value> 
</property> 
<property> 
    <name>javax.jdo.option.ConnectionDriverName</name> 
    <value>com.mysql.jdbc.Driver</value> 
</property> 
<property> 
    <name>javax.jdo.option.ConnectionUserName</name> 
    <value>user</value> 
</property> 
<property> 
    <name>javax.jdo.option.ConnectionPassword</name> 
    <value>password</value> 
</property> 

में विन्यास निम्न कार्य करें लेकिन जो नीचे दिए गए आदेशों द्वारा छत्ता उपयोग करना चाहते हैं सभी उपयोगकर्ताओं के लिए अनुमति देने के लिए याद करने के लिए की जरूरत है।

अनुमति दें

mysql> GRANT ALL ON hivedb.* TO [email protected]'00.00.00.00'; 

फ्लश विशेषाधिकार, सर्वर बताओ GRANT तालिकाएं

mysql> FLUSH PRIVILEGES; 
0

1) ताला निकाला जा रहा है एक विकल्प है फिर से लोड करने के लिए, लेकिन है कि कभी कभी काम को मार सकता है द्वारा किया जा रहा कुछ अन्य उपयोगकर्ता अचानक। 2) आप एक छोटी टीम के लिए विभिन्न फ़ोल्डर्स में हाइव का उपयोग कर सकते हैं। 3) यदि आप साझा करना चाहते हैं तो डर्बी सर्वर का उपयोग करें और ऊपर के रूप में एक्सएमएल सेट करें।

0

मेरे मामले में मैं एक mysql तालिका को हाइव करने के लिए आयात करने के लिए sqoop का उपयोग कर रहा था। हाइव में एक MySQL मेटास्टोर कॉन्फ़िगर किया गया था। लेकिन किसी भी तरह से sqoop यह नहीं जानता था क्योंकि यह हाइव की कॉन्फ़िगरेशन फ़ाइल तक पहुंचने में सक्षम नहीं था। एक बार जब मैं एचआईवीE_CONF_DIR पर्यावरण चर सेट करता हूं, तो यह काम करता है।

0

जांच करता है, तो उपयोगकर्ता यू वर्तमान में metastore_db फ़ाइल पर लिखने की अनुमति वाले है साथ में लॉग इन कर रहे हैं।

  1. जांच वर्तमान में उपयोगकर्ता $ Whoami

  2. नेविगेट करने के लिए/var/lib/छत्ता/metastore/metastore_db

  3. जांच फ़ाइल अनुमति% ls -l
  4. में लॉग इन: नीचे के रूप में चरणों का पालन करें
  5. यदि उपयोगकर्ता लिखने की अनुमति वाले नहीं, chmod कमांड

उम्मीद है कि इस Wil का उपयोग कर की अनुमति देना एल समस्या को हल करें

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