apache spark - अपाचे स्पार्क: क्लाइंट और क्लस्टर तैनाती मोड के बीच अंतर




apache-spark apache-spark-standalone (2)

स्पार्क स्टैंडअलोन क्लाइंट परिनियोजन मोड और क्लस्टर परिनियोजन मोड के बीच व्यावहारिक अंतर क्या हैं? हर एक का उपयोग करने के समर्थक और चोर के क्या हैं?

चलो ग्राहक और क्लस्टर मोड के बीच के अंतर को देखने की कोशिश करते हैं।

ग्राहक:

  • ड्राइवर एक समर्पित सर्वर (मास्टर नोड) पर एक समर्पित प्रक्रिया के अंदर चलता है। इसका मतलब यह है कि इसके पास सभी उपलब्ध संसाधन हैं जो काम के निष्पादन के लिए निपटान है।
  • ड्राइवर एक समर्पित Netty HTTP सर्वर को खोलता है और सभी वर्कर नोड्स (बड़ा फायदा) को निर्दिष्ट JAR फाइलें वितरित करता है।
  • क्योंकि मास्टर नोड के पास स्वयं के समर्पित संसाधन हैं, आपको ड्राइवर प्रोग्राम के लिए कार्यकर्ता संसाधनों को "खर्च" करने की आवश्यकता नहीं है।
  • यदि ड्राइवर प्रक्रिया मर जाती है, तो आपको इसे निष्पादित करने के लिए रीसेट करने के लिए एक बाहरी निगरानी प्रणाली की आवश्यकता होती है।

क्लस्टर:

  • ड्राइवर क्लस्टर के कार्यकर्ता नोड्स में से एक पर चलता है। कार्यकर्ता को मास्टर नेता द्वारा चुना जाता है
  • ड्राइवर वर्कर के अंदर एक समर्पित, स्टैंडअलोन प्रक्रिया के रूप में चलता है।
  • ड्राइवर प्रोग्राम में कम से कम 1 कोर और श्रमिकों में से एक से एक समर्पित मेमोरी होती है (इसे कॉन्फ़िगर किया जा सकता है)।
  • ड्राइवर प्रोग्राम को मास्टर नोड से --supervise ध्वज का उपयोग करके देखा जा सकता है और यदि यह मर जाता है, तो इसे रीसेट किया जा सकता है।
  • क्लस्टर मोड में काम करते समय, आपके एप्लिकेशन के निष्पादन से संबंधित सभी JAR को सभी श्रमिकों के लिए सार्वजनिक रूप से उपलब्ध होने की आवश्यकता होती है। इसका मतलब है कि आप या तो मैन्युअल रूप से उन्हें एक साझा स्थान पर या प्रत्येक कार्यकर्ता के लिए एक फ़ोल्डर में रख सकते हैं।

इनमे से कौन बेहतर है? यकीन नहीं है, यह वास्तव में आपके लिए प्रयोग और निर्णय लेने के लिए है। यह कोई बेहतर निर्णय नहीं है, आप पूर्व और उत्तरार्द्ध से चीजें हासिल करते हैं, यह आपके ऊपर है कि कौन सा आपके उपयोग के मामले में बेहतर काम करता है।

मैं यह कैसे चुनूं कि मेरा कौन-सा एप्लिकेशन spark-submit का उपयोग करके चल रहा है

किस मोड को चलाने के लिए चुनने का तरीका है --deploy-mode फ्लैग का उपयोग करके। स्पार्क कॉन्फ़िगरेशन पृष्ठ से:

/bin/spark-submit \
  --class <main-class>
  --master <master-url> \
  --deploy-mode <deploy-mode> \
  --conf <key>=<value> \
  ... # other options
  <application-jar> \
  [application-arguments]

टीएल; डीआर: स्पार्क स्टैंडअलोन क्लस्टर में, क्लाइंट और क्लस्टर तैनात मोड के बीच अंतर क्या हैं? मैं कैसे सेट करूं कि मेरा एप्लिकेशन किस मोड पर चलने वाला है?

हमारे पास तीन मशीनों के साथ एक स्पार्क स्टैंडअलोन क्लस्टर है, उनमें से सभी स्पार्क 1.6.1 के साथ हैं:

  • एक मास्टर मशीन, जो भी है जहां हमारे आवेदन को spark-submit का उपयोग करके चलाया जाता है
  • 2 समान कार्यकर्ता मशीनें

स्पार्क डॉक्यूमेंटेशन से , मैंने पढ़ा:

(...) स्टैंडअलोन समूहों के लिए, स्पार्क वर्तमान में दो तैनाती मोड का समर्थन करता है। क्लाइंट मोड में, ड्राइवर को उसी प्रक्रिया में लॉन्च किया जाता है जब क्लाइंट एप्लिकेशन को सबमिट करता है। क्लस्टर मोड में, हालांकि, ड्राइवर को क्लस्टर के अंदर श्रमिक प्रक्रियाओं में से एक से लॉन्च किया जाता है, और क्लाइंट प्रक्रिया जैसे ही समाप्त होती है, आवेदन समाप्त होने की प्रतीक्षा किए बिना आवेदन जमा करने की अपनी जिम्मेदारी पूरी करता है।

हालाँकि, मैं इसे पढ़कर वास्तव में व्यावहारिक अंतरों को नहीं समझ पा रहा हूँ, और मुझे यह नहीं पता है कि अलग-अलग तैनाती मोड के फायदे और नुकसान क्या हैं।

इसके अतिरिक्त, जब मैं स्टार्ट-सबमिट का उपयोग करके अपना आवेदन शुरू करता हूं, भले ही मैंने प्रॉपर्टी spark.submit.deployMode सेट किया हो। spark.submit.deployMode "क्लस्टर" पर, मेरे संदर्भ के लिए स्पार्क UI निम्नलिखित प्रविष्टि दिखाता है:

इसलिए मैं व्यावहारिक अंतर को देखने के लिए दोनों तरीकों का परीक्षण करने में सक्षम नहीं हूं। कहा जा रहा है, मेरे सवाल हैं:

1) स्पार्क स्टैंडअलोन क्लाइंट तैनाती मोड और क्लस्टर तैनाती मोड के बीच व्यावहारिक अंतर क्या हैं? हर एक का उपयोग करने के समर्थक और चोर के क्या हैं?

2) मैं कैसे चुनूं कि मेरा कौन-सा एप्लिकेशन spark-submit का उपयोग करके चल रहा है?


मान लीजिए कि आप मास्टर नोड में SSH कर EMR में स्पार्क सबमिट करने जा रहे हैं। यदि आप विकल्प -deploy-mode क्लस्टर प्रदान कर रहे हैं, तो निम्नलिखित चीजें होंगी।

  1. आप टर्मिनल में विस्तृत लॉग नहीं देख पाएंगे।
  2. चूंकि ड्राइवर स्वयं मास्टर में नहीं बनाया गया है, इसलिए आप टर्मिनल से नौकरी समाप्त नहीं कर पाएंगे।

लेकिन - मोड-मोड क्लाइंट के मामले में:

  1. आप टर्मिनल में विस्तृत लॉग देख पाएंगे।
  2. आप टर्मिनल से ही नौकरी समाप्त कर सकेंगे।

ये मूल बातें हैं जिन पर मैंने अब तक गौर किया है।





apache-spark-standalone