बैच प्रोसेसिंग के लिए स्पार्क / फ्लिंक पर अपाचे बीम के क्या लाभ हैं?


83

अपाचे बीम कई रनर बैकएंड का समर्थन करता है, जिसमें अपाचे स्पार्क और फ्लिंक शामिल हैं। मैं स्पार्क / फ्लिंक से परिचित हूं और बैच प्रोसेसिंग के लिए बीम के पेशेवरों / विपक्षों को देखने की कोशिश कर रहा हूं।

बीम शब्द गणना उदाहरण को देखते हुए , यह महसूस करता है कि यह देशी स्पार्क / फ्लिंक समकक्षों के समान है, शायद थोड़ा अधिक वर्बोज़ सिंटैक्स के साथ।

वर्तमान में मुझे इस तरह के कार्य के लिए स्पार्क / फ्लिंक पर बीम चुनने का बड़ा लाभ नहीं दिखता है। एकमात्र अवलोकन जो मैं अब तक कर सकता हूं:

  • प्रो: विभिन्न निष्पादन बैकेंड पर अमूर्तता।
  • Con: यह अमूर्त स्पार्क / फ़िंक में वास्तव में निष्पादित होने पर कम नियंत्रण रखने की कीमत पर आता है।

क्या बेहतर उदाहरण हैं जो बीम मॉडल के अन्य पेशेवरों / विपक्षों को उजागर करते हैं? क्या कोई जानकारी है कि नियंत्रण की हानि प्रदर्शन को कैसे प्रभावित करती है?

ध्यान दें कि मैं स्ट्रीमिंग पहलुओं में अंतर के लिए नहीं पूछ रहा हूं, जो आंशिक रूप से इस प्रश्न में शामिल हैं और इस लेख में संक्षेप में प्रस्तुत किया गया है (स्पार्क 1. एक्स के कारण पुराना)।

जवाबों:


110

कुछ चीजें हैं जो बीम मौजूदा इंजनों में से कई में जोड़ता है।

  • बैच और स्ट्रीमिंग को एकीकृत करना। कई सिस्टम बैच और स्ट्रीमिंग दोनों को संभाल सकते हैं, लेकिन वे अक्सर अलग एपीआई के माध्यम से ऐसा करते हैं। लेकिन बीम में, विलंबता, पूर्णता और लागत के एक स्पेक्ट्रम पर बैच और स्ट्रीमिंग केवल दो बिंदु हैं। वहाँ बैच से स्ट्रीमिंग के लिए कोई सीखने / पुनर्लेखन चट्टान नहीं है। इसलिए यदि आप आज एक बैच पाइपलाइन लिखते हैं, लेकिन कल आपकी विलंबता में बदलाव की आवश्यकता है, तो इसे समायोजित करना अविश्वसनीय रूप से आसान है। आप मोबाइल गेमिंग उदाहरणों में इस तरह की यात्रा देख सकते हैं ।

  • एपीआई जो अमूर्तता के स्तर को बढ़ाते हैं : बीम के एपीआई आपके डेटा और आपके तर्क के गुणों को कैप्चर करने पर ध्यान केंद्रित करते हैं, बजाय अंतर्निहित रनटाइम लीक के विवरण के। यह पोर्टेबिलिटी के लिए दोनों कुंजी है (अगला पैराग्राफ देखें) और रनटाइम्स को बहुत अधिक लचीलापन दे सकता है कि वे कैसे निष्पादित करते हैं। ParDo संलयन (उर्फ फ़ंक्शन रचना) की तरह कुछ एक बहुत ही बुनियादी अनुकूलन है जो कि अधिकांश धावक पहले से ही करते हैं। कुछ धावकों के लिए अन्य अनुकूलन अभी भी कार्यान्वित किए जा रहे हैं। उदाहरण के लिए, बीम का सोर्स एपीआईविशेष रूप से एक पाइप लाइन के भीतर होने वाले ओवरस्पीडिंग से बचने के लिए बनाया गया है। इसके बजाय, वे धावकों को उपलब्ध मशीनों के दौरान गतिशील रूप से पुनर्संतुलन कार्य के लिए सही हुक देते हैं। यह स्ट्रैगलर शार्क को अनिवार्य रूप से समाप्त करके प्रदर्शन में भारी अंतर ला सकता है। सामान्य तौर पर, जितना अधिक स्मार्ट हम रनर्स में बना सकते हैं, उतना ही बेहतर होगा। यहां तक ​​कि सबसे सावधान हाथ ट्यूनिंग डेटा, कोड और वातावरण शिफ्ट के रूप में विफल हो जाएगा।

  • रनटाइम में पोर्टेबिलिटी। : क्योंकि डेटा आकृतियों और रनटाइम आवश्यकताओं को बड़े करीने से अलग किया जाता है, एक ही पाइपलाइन को कई तरीकों से चलाया जा सकता है। और इसका मतलब है कि जब आप बाद में क्लाउड से या एक कोशिश की और सच्ची प्रणाली से काटने के किनारे पर कुछ करने के लिए आगे बढ़ना है तो आप पुनर्लेखन कोड को समाप्त नहीं करते हैं। आप पर्यावरण और प्रदर्शन के मिश्रण को खोजने के लिए विकल्पों की तुलना आसानी से कर सकते हैं जो आपकी वर्तमान आवश्यकताओं के लिए सबसे अच्छा काम करता है। और वह चीजों का मिश्रण हो सकता है - एक खुले स्रोत धावक के साथ आधार पर संवेदनशील डेटा संसाधित करना और क्लाउड में किसी प्रबंधित सेवा पर अन्य डेटा को संसाधित करना।

बीम मॉडल को डिजाइन करना कई लोगों के लिए एक उपयोगी अमूर्तता है, विभिन्न इंजन मुश्किल हैं। बीम न तो सभी इंजनों की कार्यक्षमता का चौराहा है (बहुत सीमित!) और न ही संघ (बहुत अधिक रसोई सिंक!)। इसके बजाय, बीम जहां डेटा प्रोसेसिंग चल रहा है, वहां सबसे आगे रहने की कोशिश करता है, दोनों कार्यक्षमता को धकेलता है और रनटाइम इंजन से पैटर्न को खींचता है।

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

अपाचे फ्लिंक भी बैच और स्ट्रीमिंग को एकीकृत करता है और बीम के समान स्तर पर कम या अधिक उच्च एपीआई प्रदान करता है।
निकुस

स्पार्क स्ट्रक्चर्ड स्ट्रीमिंग ब्रिज (पिछले एपीआई गैप) बैच और रीयल-टाइम डेटा के बीच।
विभा
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.