2015-02-11 17 views
9

यह अपाचे स्पार्क और हडूप जैसी बड़ी डेटा सामग्री का उपयोग करके हमारा पहला कदम है।अपाचे स्पार्क त्रुटि: akka.tcp से कनेक्ट नहीं हो सका: // स्पार्कमास्टर @

हमारे पास क्लौडेरा सीडीएच 5.3 स्थापित है। क्लौडेरा प्रबंधक से हम स्पार्क स्थापित करना चुनते हैं। क्लर्क क्लस्टर में नोड्स में से एक में बहुत अच्छी तरह से चल रहा है।

मेरी मशीन से मैंने एक छोटा सा एप्लीकेशन बनाया जो हैडूप एचडीएफएस पर संग्रहीत एक टेक्स्ट फ़ाइल को पढ़ने के लिए जोड़ता है।

मैं ग्रहण से आवेदन को चलाने के लिए कोशिश कर रहा हूँ और यह इन संदेशों

15/02/11 14:44:01 INFO client.AppClient$ClientActor: Connecting to master spark://10.62.82.21:7077... 15/02/11 14:44:02 WARN client.AppClient$ClientActor: Could not connect to akka.tcp://[email protected]:7077: akka.remote.InvalidAssociation: Invalid address: akka.tcp://[email protected]:7077 15/02/11 14:44:02 WARN Remoting: Tried to associate with unreachable remote address [akka.tcp://[email protected]:7077]. Address is now gated for 5000 ms, all messages to this address will be delivered to dead letters. Reason: Connection refused: no further information: /10.62.82.21:7077

प्रदर्शित करता है

आवेदन है एक वर्ग निम्न पंक्ति

JavaSparkContext sc = new JavaSparkContext(new SparkConf().setAppName("Spark Count").setMaster("spark://10.62.82.21:7077"));

का उपयोग कर एक प्रसंग बना जहां यह आईपी मशीन स्पार्क पर काम कर रहा आईपी है।

तो मैं निम्नलिखित लाइन का उपयोग HDFS से एक फ़ाइल पढ़ने की कोशिश

sc.textFile("hdfs://10.62.82.21/tmp/words.txt")

जब मैं आवेदन मुझे मिल चलाने

+0

क्या आपके पास एक ही मशीन के लिए एक से अधिक आईपी कॉन्फ़िगर किए गए हैं? – Harman

+0

असल में, मुझे कोई जानकारी नहीं है, लेकिन अगर मैं आईपी के बजाय डोमेन नाम का उपयोग करता हूं तो वही अपवाद फेंक दिया जाता है। – Fanooos

+0

अगर आप ifconfig – Harman

उत्तर

6

अपने स्पार्क मास्टर लॉग की जाँच करें, आप की तरह कुछ देखना चाहिए:

15/02/11 13:37:14 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://[email protected]:7077] 
15/02/11 13:37:14 INFO Remoting: Remoting now listens on addresses: [akka.tcp://[email protected]:7077] 
15/02/11 13:37:14 INFO Master: Starting Spark master at spark://mymaster:7077 

फिर जब अपने गुरु से कनेक्ट कर रहा, ठीक उसी होस्ट नाम का उपयोग सुनिश्चित करें जैसा कि ऊपर लॉग में पाया हो (कर आईपी ​​पते का उपयोग न करें):

.setMaster("spark://mymaster:7077")); 

स्पार्क स्टैंडअलोन इस होस्टनाम/आईपी सामान के साथ थोड़ा सा पसंद है।

+0

मशीन का डोमेन नाम है और यदि मैं आईपी के बजाय इसका इस्तेमाल करता हूं तो वही अपवाद फेंक दिया जाता है। – Fanooos

+0

क्या आपने मास्टर के लॉग की जांच की? –

+0

एक और स्पार्क स्टैंडअलोन पिटफॉल यह है कि यह सहकर्मी प्रणाली के लिए एक सहकर्मी के रूप में कार्य करता है। आपका ग्राहक/ड्राइवर आवेदन मास्टर द्वारा जुड़ने योग्य होना चाहिए। आपने अपनी फ़ायरवॉल सेटिंग्स को अक्षम कर दिया है और अपने स्पार्ककॉन्फ़ में जोड़ सकते हैं: .set ("spark.driver.host", "mydriverapp") .set ("spark.driver.port", "7076") –

4

जब आप शेल कमांड "sbin/start-master.sh" का उपयोग करके अपना स्पार्क मास्टर बनाते हैं। पता http://localhost:8080 पर जाएं और "यूआरएल" पंक्ति जांचें।

+0

यह अच्छा है सलाह, मेरे परीक्षण में एक ही समय में मैंने पाया कि यूआरएल ने एक होस्टनाम दिखाया है, इससे कोई फर्क नहीं पड़ता कि इससे कोई फर्क नहीं पड़ता। केवल तभी जब मैं एक सेटिंग (SPARK_MASTER_IP) सेट करता हूं और उपयोग किए गए आईपी पते कनेक्ट होते हैं। – JimLohse

1

मुझे कोई स्वीकार्य उत्तर नहीं मिला, केवल जानकारी के लिए मैंने सोचा कि मैं कुछ चीजों का उल्लेख करूंगा।

सबसे पहले, conf निर्देशिका में spark-env.sh फ़ाइल में, SPARK_MASTER_IP और SPARK_LOCAL_IP सेटिंग्स होस्टनाम हो सकती हैं। आप उन्हें नहीं चाहते हैं, लेकिन वे हो सकते हैं।

जैसा कि एक और उत्तर में बताया गया है, स्पार्क मेजबाननाम बनाम आईपी पते के बारे में थोड़ा चुनौतीपूर्ण हो सकता है, क्योंकि इस हल की गई बग/सुविधा: See bug here। समस्या यह है कि यह स्पष्ट नहीं है कि क्या वे "हल" होकर हमें मेजबाननाम के बजाय आईपी का उपयोग करने के लिए कह रहे हैं?

ठीक है, मुझे अभी भी यही समस्या है, और सबसे पहले आप मूल बातें जांचते हैं।

क्या आप उस बॉक्स को पिंग कर सकते हैं जहां स्पार्क मास्टर चल रहा है? क्या आप मजदूर को मास्टर से पिंग कर सकते हैं? सबसे महत्वपूर्ण बात यह है कि क्या आप मास्टर बॉक्स से कार्यकर्ता को पासवर्ड-कम एसएसएच कर सकते हैं? Per 1.5.2 docs आपको इसे एक निजी कुंजी के साथ करने में सक्षम होना चाहिए और कार्यकर्ता को conf/गुलाम फ़ाइल में दर्ज किया गया है। मैंने अंत में प्रासंगिक अनुच्छेद की प्रतिलिपि बनाई।

आप ऐसी स्थिति प्राप्त कर सकते हैं जहां कर्मचारी मास्टर से संपर्क कर सके लेकिन मास्टर कार्यकर्ता को वापस नहीं ले सकता है, ऐसा लगता है कि कोई कनेक्शन नहीं बनाया जा रहा है। दोनों दिशाओं की जांच करें।

अंत में सीमित प्रयोग में सेटिंग्स के सभी संयोजनों में से केवल मुझे केवल एक ही मिला जो कि mattered: मास्टर पर, स्पार्क-env.sh में, SPARK_MASTER_IP को आईपी पते पर सेट करें, मेजबाननाम नहीं। फिर स्पार्क के साथ कार्यकर्ता से कनेक्ट करें: //192.168.0.10: 7077 और वोला इसे जोड़ता है! ऐसा लगता है कि यहां तक ​​कि अन्य कॉन्फ़िगरेशन पैरामीटरों में से कोई भी आवश्यक नहीं है।

यहाँ ssh और दास के बारे में किए गए दस्तावेज़ों से पैरा है conf में दायर:

लांच स्क्रिप्ट के साथ एक स्पार्क स्टैंडअलोन क्लस्टर लॉन्च करने के लिए, आप एक फ़ाइल conf बुलाया बनाना चाहिए/अपने स्पार्क निर्देशिका में दास, जो में उन सभी मशीनों के होस्टनाम होना चाहिए जहां आप प्रति स्पार्क श्रमिकों को शुरू करते हैं, प्रति पंक्ति एक। यदि conf/slaves मौजूद नहीं है, तो लॉन्च स्क्रिप्ट एक मशीन (लोकलहोस्ट) पर डिफ़ॉल्ट होती है, जो परीक्षण के लिए उपयोगी है। नोट, मास्टर मशीन एसएसएच के माध्यम से कार्यकर्ता मशीनों में से प्रत्येक तक पहुंचती है। डिफ़ॉल्ट रूप से, एसएसएच समानांतर में चलाया जाता है और को पासवर्ड-कम (एक निजी कुंजी का उपयोग करके) सेटअप की आवश्यकता होती है। यदि आपके पास पासवर्ड-कम सेटअप नहीं है, तो आप पर्यावरण वैरिएबल SPARK_SSH_FOREGROUND सेट कर सकते हैं और प्रत्येक कार्यकर्ता के लिए क्रमशः पासवर्ड प्रदान कर सकते हैं।

एक बार ऐसा करने के बाद, आईपी पते का उपयोग करके आपके कोड में काम करना चाहिए। हमें बताऐ! यह एक परेशान समस्या हो सकती है, और सीखना कि अधिकांश कॉन्फ़िगरेशन पैराम कोई फर्क नहीं पड़ता है।

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