2015-08-05 12 views
6

का उपयोग कर स्प्रिंग वेब एप्लिकेशन से अपाचे स्पार्क जॉब चला रहा है मैंने हाल ही में स्पार्क का उपयोग करना शुरू कर दिया है और मैं स्प्रिंग वेब एप्लिकेशन से स्पार्क नौकरी चलाने के लिए चाहता हूं।यार्न क्लाइंट या किसी वैकल्पिक तरीके से

मेरे पास एक ऐसी स्थिति है जहां मैं स्प्रिंग बूट का उपयोग कर टॉमकैट सर्वर में वेब एप्लिकेशन चला रहा हूं। मेरा वेब एप्लिकेशन एक आरईएसटी वेब सेवा अनुरोध प्राप्त करता है जिसके आधार पर इसे यार्न क्लस्टर में स्पार्क गणना कार्य को ट्रिगर करने की आवश्यकता होती है। चूंकि मेरी नौकरी को चलाने में अधिक समय लग सकता है और एचडीएफएस से डेटा एक्सेस कर सकता है, इसलिए मैं यार्न-क्लस्टर मोड में स्पार्क नौकरी चलाने के लिए चाहता हूं और मैं स्पार्क संदर्भ को मेरी वेब परत में जीवंत नहीं रखना चाहता हूं। इसके लिए एक अन्य कारण यह है कि मेरा आवेदन बहु किरायेदार है, इसलिए प्रत्येक किरायेदार अपनी नौकरी चला सकता है, इसलिए यार्न-क्लस्टर मोड में प्रत्येक किरायेदार का काम अपने स्वयं के ड्राइवर को शुरू कर सकता है और अपने स्वयं के स्पार्क क्लस्टर में चला सकता है। वेब ऐप जेवीएम में, मुझे लगता है कि मैं एक जेवीएम में एकाधिक स्पार्क संदर्भ नहीं चला सकता।

मैं अपने वेब एप्लिकेशन में जावा प्रोग्राम से यार्न-क्लस्टर मोड में स्पार्क नौकरियां ट्रिगर करना चाहता हूं। इस लक्ष्य को हासिल करने का सबसे अच्छा तरीका क्या है। मैं विभिन्न विकल्पों की खोज कर रहा हूं और आपका मार्गदर्शन देख रहा हूं जिस पर सबसे अच्छा

1) मैं अपनी नौकरियां जमा करने के लिए स्पार्क-सबमिट कमांड लाइन खोल का उपयोग कर सकता हूं। लेकिन इसे अपने वेब एप्लिकेशन से ट्रिगर करने के लिए मुझे जावा प्रोसेसबिल्डर एपीआई या जावा प्रोसेसबिल्डर पर बनाए गए कुछ पैकेज का उपयोग करने की आवश्यकता है। इसमें 2 मुद्दे हैं। सबसे पहले यह करने के एक साफ तरीके की तरह नहीं लगता है। मेरे स्पार्क अनुप्रयोगों को ट्रिगर करने का एक प्रोग्रामिक तरीका होना चाहिए। दूसरी समस्या यह होगी कि मैं सबमिट किए गए एप्लिकेशन की निगरानी करने और इसकी स्थिति प्राप्त करने की क्षमता को खो दूंगा .. ऐसा करने का केवल कच्चा तरीका स्पार्क-सबमिट खोल की आउटपुट स्ट्रीम पढ़ रहा है, जो फिर से अच्छे दृष्टिकोण की तरह नहीं लगता है।

2) मैंने वसंत आवेदन से नौकरी जमा करने के लिए यार्न क्लाइंट का उपयोग करने की कोशिश की। निम्नलिखित कोड है कि मैं यार्न क्लाइंट के प्रयोग चिंगारी काम प्रस्तुत करने के लिए का उपयोग किया जाता है:

Configuration config = new Configuration(); 
System.setProperty("SPARK_YARN_MODE", "true");   
SparkConf conf = new SparkConf(); 
ClientArguments cArgs = new ClientArguments(sparkArgs, conf); 
Client client = new Client(cArgs, config, conf); 
client.run(); 

लेकिन जब मैं ऊपर कोड चलाने के लिए, यह केवल स्थानीय होस्ट पर कनेक्ट करने के लिए कोशिश करता है।

5/08/05 14:06:10 INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 0 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 15/08/05 14:06:12 INFO Client: Retrying connect to server: 0.0.0.0/0.0.0.0:8032. Already tried 1 time(s); retry policy is RetryUpToMaximumCountWithFixedSleep(maxRetries=10, sleepTime=1000 MILLISECONDS) 

तो मुझे नहीं लगता कि यह रिमोट मशीन से कनेक्ट कर सकते हैं: मैं इस त्रुटि मिलती है।

कृपया सुझाव दें, स्पार्क के नवीनतम संस्करण के साथ ऐसा करने का सबसे अच्छा तरीका क्या है। बाद में मैंने इस पूरे एप्लिकेशन को अमेज़ॅन ईएमआर में तैनात करने की योजना बनाई है। तो दृष्टिकोण वहाँ भी काम करना चाहिए।

अग्रिम धन्यवाद

+0

क्या आपने अपनी समस्या का समाधान किया? – Tony

+0

क्षमा करें, मैं अब इस पर काम नहीं कर रहा हूं। इसलिए मैंने यह देखने की कोशिश नहीं की कि कौन सा समाधान काम करता है। – Kristy

उत्तर

0

स्पार्क JobServer मदद कर सकता है: https://github.com/spark-jobserver/spark-jobserver, इस परियोजना RESTful वेब अनुरोध प्राप्त करता है और एक चिंगारी काम शुरू करते हैं। परिणाम जेसन प्रतिक्रिया के रूप में वापस आ गया है।

+0

लिंक-केवल उत्तर यहां अत्यधिक निराश हैं क्योंकि लिंक भविष्य में मृत हो सकते हैं।मेरा सुझाव है कि आप उद्धरण के स्रोतों के उद्धरण के साथ अपना उत्तर संपादित करें। –

0

मेरे पास स्पार्क ऐप चलाने की कोशिश करने वाले समान मुद्दे भी थे जो YARN क्लस्टर से कनेक्ट होते हैं - क्लस्टर के मुख्य नोड के लिए स्थानीय मशीन से कनेक्ट करने का प्रयास करने वाला कोई क्लस्टर कॉन्फ़िगर नहीं होता है, जो स्पष्ट रूप से विफल हो जाता है।

यह मेरे लिए काम करता है जब मैंने कोर-साइट.एक्सएमएल और यार्न-साइट.एक्सएमएल को क्लासपाथ (सामान्य एसबीटी या मेवेन प्रोजेक्ट स्ट्रक्चर में स्रोत/मुख्य/संसाधन) में रखा है - आवेदन क्लस्टर से सही ढंग से जुड़ा हुआ है।

उन फ़ाइलों के स्पार्क-सबमिट स्थान का उपयोग करते समय आमतौर पर HADOOP_CONF_DIR पर्यावरण चर द्वारा निर्दिष्ट किया जाता है, लेकिन स्टैंड-अलोन एप्लिकेशन के लिए इसका प्रभाव नहीं पड़ा।

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