जेफिरनेट लोगो

Apache Flink के लिए Amazon प्रबंधित सेवा अब Apache Flink संस्करण 1.18 | का समर्थन करती है अमेज़न वेब सेवाएँ

दिनांक:

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

अपाचे फ्लिंक के लिए अमेज़ॅन प्रबंधित सेवा, जो अपाचे फ़्लिंक अनुप्रयोगों को चलाने में पूरी तरह से प्रबंधित, सर्वर रहित अनुभव प्रदान करता है, अब समर्थन करता है अपाचे फ्लिंक 1.18.1, लेखन के समय अपाचे फ़्लिंक का नवीनतम संस्करण।

इस पोस्ट में, हम Apache Flink की कुछ दिलचस्प नई सुविधाओं और क्षमताओं पर चर्चा करते हैं, जिन्हें सबसे हालिया प्रमुख रिलीज़, 1.16, 1.17 और 1.18 के साथ पेश किया गया है, और अब Apache Flink के लिए प्रबंधित सेवा में समर्थित है।

नए कनेक्टर्स

इससे पहले कि हम संस्करण 1.18.1 के साथ उपलब्ध अपाचे फ्लिंक की नई कार्यक्षमताओं के बारे में जानें, आइए उन नई क्षमताओं का पता लगाएं जो कई नए ओपन सोर्स कनेक्टर्स की उपलब्धता से आती हैं।

OpenSearch

एक निष्ठावान OpenSearch कनेक्टर अब आपकी परियोजनाओं में शामिल होने के लिए उपलब्ध है, जो अपाचे फ्लिंक एप्लिकेशन को इलास्टिक्स खोज संगतता मोड पर भरोसा किए बिना सीधे ओपनसर्च में डेटा लिखने में सक्षम बनाता है। यह कनेक्टर इसके साथ संगत है अमेज़न ओपन सर्च सर्विस प्रावधान किया गया और ओपनसर्च सेवा सर्वर रहित.

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

डिफ़ॉल्ट रूप से, कनेक्टर OpenSearch संस्करण 1.x क्लाइंट लाइब्रेरी का उपयोग करता है। आप इसके द्वारा संस्करण 2.x पर स्विच कर सकते हैं सही निर्भरताएँ जोड़ना.

अमेज़ॅन डायनेमोडीबी

Apache Flink डेवलपर्स अब डेटा लिखने के लिए एक समर्पित कनेक्टर का उपयोग कर सकते हैं अमेज़ॅन डायनेमोडीबी. यह कनेक्टर पर आधारित है अपाचे फ़्लिंक AsyncSink, गैर-अवरुद्ध लेखन अनुरोधों और अनुकूली बैचिंग का उपयोग करके कुशल सिंक कनेक्टर्स के कार्यान्वयन को सरल बनाने के लिए, AWS द्वारा विकसित और अब Apache Flink परियोजना का एक अभिन्न अंग है।

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

यह कनेक्टर केवल सिंक के रूप में काम करता है। आप इसका उपयोग DynamoDB से पढ़ने के लिए नहीं कर सकते। DynamoDB में डेटा देखने के लिए, आपको अभी भी इसका उपयोग करके एक लुकअप लागू करने की आवश्यकता है फ़्लिंक एसिंक I/O एपीआई या SQL के लिए एक कस्टम उपयोगकर्ता-परिभाषित फ़ंक्शन (UDF) लागू करना।

MongoDB

एक और दिलचस्प कनेक्टर के लिए है MongoDB. इस मामले में, दोनों के लिए स्रोत और सिंक दोनों उपलब्ध हैं एसक्यूएल और टेबल एपीआई और आकड़ों का प्रवाह एपीआई. नया कनेक्टर अब आधिकारिक तौर पर Apache Flink प्रोजेक्ट का हिस्सा है और समुदाय द्वारा समर्थित है। यह नया कनेक्टर सीधे MongoDB द्वारा प्रदान किए गए पुराने कनेक्टर को प्रतिस्थापित करता है, जो केवल पुराने फ़्लिंक सिंक और सोर्स एपीआई का समर्थन करता है।

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

इस कनेक्टर की कई उल्लेखनीय विशेषताओं में से एक जो उल्लेख करने योग्य है वह है लुकअप के लिए स्रोत का उपयोग करते समय कैशिंग को सक्षम करने की क्षमता। बॉक्स से बाहर, सिंक कम से कम एक बार गारंटी का समर्थन करता है। जब एक प्राथमिक कुंजी परिभाषित की जाती है, तो सिंक इडेम्पोटेंट अप्सर्ट्स के माध्यम से बिल्कुल एक बार शब्दार्थ का समर्थन कर सकता है। जब प्राथमिक कुंजी परिभाषित की जाती है, तो सिंक कनेक्टर, इडेम्पोटेंट अपसर्ट के साथ, बिल्कुल एक बार शब्दार्थ का भी समर्थन करता है।

नया कनेक्टर संस्करण

कोई नई सुविधा नहीं है, लेकिन पुराने अपाचे फ़्लिंक एप्लिकेशन को अपडेट करते समय विचार करने योग्य एक महत्वपूर्ण कारक नया कनेक्टर संस्करण है। Apache Flink संस्करण 1.17 से शुरू होकर, अधिकांश कनेक्टर्स को मुख्य Apache Flink वितरण से बाह्यीकृत किया गया है और स्वतंत्र संस्करण का पालन किया गया है।

सही निर्भरता शामिल करने के लिए, आपको फ़ॉर्म के साथ आर्टिफैक्ट संस्करण निर्दिष्ट करना होगा: <connector-version>-<flink-version>

उदाहरण के लिए, नवीनतम काफ्का कनेक्टर के साथ भी काम कर रहा है Apache Kafka के लिए Amazon प्रबंधित स्ट्रीमिंग (अमेज़ॅन एमएसके), लेखन के समय संस्करण 3.1.0 है। यदि आप Apache Flink 1.18 का उपयोग कर रहे हैं, तो उपयोग की निर्भरता निम्नलिखित होगी:

<dependency> 
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-kafka</artifactId> 
    <version>3.1.0-1.18</version>
</dependency>

के लिए अमेज़ॅन किनिस, नया कनेक्टर संस्करण 4.2.0 है। अपाचे फ़्लिंक 1.18 के लिए निर्भरता निम्नलिखित होगी:

<dependency>
    <groupId>org.apache.flink</groupId>
    <artifactId>flink-connector-kinesis</artifactId> 
    <version>4.2.0-1.18</version>
</dependency>

निम्नलिखित अनुभागों में, हम Apache Flink 1.18 में अब उपलब्ध और Apache Flink के लिए Amazon प्रबंधित सेवा में समर्थित अधिक शक्तिशाली नई सुविधाओं पर चर्चा करते हैं।

एसक्यूएल

Apache Flink SQL में, उपयोगकर्ता प्रदान कर सकते हैं संकेत उन प्रश्नों को जोड़ने के लिए जिनका उपयोग ऑप्टिमाइज़र को क्वेरी योजना में प्रभाव डालने के लिए सुझाव देने के लिए किया जा सकता है। विशेष रूप से, स्ट्रीमिंग अनुप्रयोगों में, लुकअप जुड़ता है किसी तालिका को समृद्ध करने के लिए उपयोग किया जाता है, जो स्ट्रीमिंग डेटा का प्रतिनिधित्व करता है, उस डेटा के साथ जो किसी बाहरी सिस्टम, आमतौर पर एक डेटाबेस से पूछा जाता है। संस्करण 1.16 के बाद से, लुकअप जॉइन के लिए कई सुधार पेश किए गए हैं, जिससे आप जॉइन के व्यवहार को समायोजित कर सकते हैं और प्रदर्शन में सुधार कर सकते हैं:

  • कैश खोजें एक शक्तिशाली सुविधा है, जो आपको सबसे अधिक उपयोग किए जाने वाले रिकॉर्ड को मेमोरी में कैश करने की अनुमति देती है, जिससे डेटाबेस पर दबाव कम हो जाता है। पहले, लुकअप कैश कुछ कनेक्टर्स के लिए विशिष्ट था। Apache Flink 1.16 के बाद से, यह विकल्प आंतरिक रूप से लुकअप का समर्थन करने वाले सभी कनेक्टर्स के लिए उपलब्ध हो गया है (फ्लिप-221). इस लेखन के समय, जेडीबीसी, करंड, तथा एचबेस कनेक्टर लुकअप कैश का समर्थन करते हैं। लुकअप कैश में तीन उपलब्ध मोड हैं: FULL, एक छोटे डेटासेट के लिए जिसे पूरी तरह से मेमोरी में रखा जा सकता है, PARTIAL, एक बड़े डेटासेट के लिए, केवल सबसे हालिया रिकॉर्ड को कैशिंग करना, या NONE, कैश को पूरी तरह से अक्षम करने के लिए। के लिए PARTIAL कैश, आप बफर करने के लिए पंक्तियों की संख्या और लाइव-टू-लाइव को भी कॉन्फ़िगर कर सकते हैं।
  • एसिंक लुकअप एक और विशेषता है जो प्रदर्शन में काफी सुधार कर सकती है। Async लुकअप Apache Flink SQL के समान कार्यक्षमता प्रदान करता है एसिंक आई/ओ डेटास्ट्रीम एपीआई में उपलब्ध है। यह अपाचे फ्लिंक को पिछले लुकअप पर प्रतिक्रिया प्राप्त होने तक प्रोसेसिंग थ्रेड को अवरुद्ध किए बिना डेटाबेस में नए अनुरोध भेजने की अनुमति देता है। Async I/O के समान, आप ऑर्डर लागू करने या अव्यवस्थित परिणामों की अनुमति देने के लिए async लुकअप को कॉन्फ़िगर कर सकते हैं, या बफर क्षमता और टाइमआउट को समायोजित कर सकते हैं।
  • आप एक कॉन्फिगर भी कर सकते हैं लुकअप पुनः प्रयास रणनीति के साथ सम्मिलन में PARTIAL or NONE बाहरी डेटाबेस में विफल लुकअप के मामले में व्यवहार को कॉन्फ़िगर करने के लिए लुकअप कैश।

इन सभी व्यवहारों को एक का उपयोग करके नियंत्रित किया जा सकता है LOOKUP संकेत, जैसे कि निम्नलिखित उदाहरण में, जहां हम एसिंक लुकअप का उपयोग करके एक लुकअप जॉइन दिखाते हैं:

SELECT 
    /*+ LOOKUP('table'='Customers', 'async'='true', 'output-mode'='allow_unordered') */ 
    O.order_id, O.total, C.address
FROM Orders AS O 
JOIN Customers FOR SYSTEM_TIME AS OF O.proc_time AS C 
  ON O.customer_id = O.customer_id

पायफ्लिंक

इस अनुभाग में, हम PyFlink में नए सुधारों और समर्थन पर चर्चा करते हैं।

पायथन 3.10 सपोर्ट

Apache Flink के नवीनतम संस्करणों ने PyFlink उपयोगकर्ताओं के लिए कई सुधार पेश किए। सबसे पहले और सबसे महत्वपूर्ण, Python 3.10 अब समर्थित है, और Python 3.6 समर्थन पूरी तरह से हटा दिया गया है (FLINK-29421). Apache Flink के लिए प्रबंधित सेवा वर्तमान में PyFlink अनुप्रयोगों को चलाने के लिए Python 3.10 रनटाइम का उपयोग करती है।

फ़ीचर समता के करीब पहुँचना

प्रोग्रामिंग एपीआई के नजरिए से, PyFlink हर संस्करण में जावा के करीब पहुंच रहा है। डेटास्ट्रीम एपीआई अब साइड आउटपुट और प्रसारण स्थिति जैसी सुविधाओं का समर्थन करता है, और विंडोिंग एपीआई पर अंतराल बंद कर दिया गया है। PyFlink अब नए कनेक्टर्स को भी सपोर्ट करता है अमेज़न Kinesis डेटा स्ट्रीम सीधे डेटास्ट्रीम एपीआई से।

थ्रेड मोड में सुधार

PyFlink बहुत कुशल है। PyFlink में Flink API ऑपरेटरों को चलाने का ओवरहेड जावा या स्काला की तुलना में न्यूनतम है, क्योंकि रनटाइम वास्तव में आपके एप्लिकेशन की भाषा की परवाह किए बिना सीधे JVM में ऑपरेटर कार्यान्वयन को चलाता है। लेकिन जब आपके पास उपयोगकर्ता-परिभाषित फ़ंक्शन होता है, तो चीजें थोड़ी भिन्न होती हैं। पाइथॉन कोड की एक पंक्ति जितनी सरल lambda x: x + 1, या पांडा फ़ंक्शन जितना जटिल, पायथन रनटाइम में चलना चाहिए।

डिफ़ॉल्ट रूप से, Apache Flink प्रत्येक टास्क मैनेजर पर JVM के बाहर एक पायथन रनटाइम चलाता है। प्रत्येक रिकॉर्ड को क्रमबद्ध किया जाता है, अंतर-प्रक्रिया संचार के माध्यम से पायथन रनटाइम को सौंप दिया जाता है, डिसेरिएलाइज़ किया जाता है, और पायथन रनटाइम में संसाधित किया जाता है। फिर परिणाम को क्रमबद्ध किया जाता है और वापस जेवीएम को सौंप दिया जाता है, जहां इसे डीसेरिएलाइज़ किया जाता है। यह पायफ्लिंक है प्रक्रिया मोड. यह बहुत स्थिर है लेकिन यह ओवरहेड का परिचय देता है, और कुछ मामलों में, यह एक प्रदर्शन बाधा बन सकता है।

संस्करण 1.15 के बाद से, Apache Flink भी समर्थन करता है थ्रेड मोड पायफ्लिंक के लिए। इस मोड में, पायथन उपयोगकर्ता-परिभाषित फ़ंक्शन जेवीएम के भीतर ही चलाए जाते हैं, क्रमांकन/डिसेरिएलाइज़ेशन और अंतर-प्रक्रिया संचार ओवरहेड को हटाते हैं। थ्रेड मोड है कुछ सीमाएँ; उदाहरण के लिए, THREAD मोड का उपयोग पांडा या UDAFs (उपयोगकर्ता-परिभाषित समग्र फ़ंक्शन, जिसमें कई इनपुट रिकॉर्ड और एक आउटपुट रिकॉर्ड शामिल हैं) के लिए नहीं किया जा सकता है, लेकिन यह PyFlink एप्लिकेशन के प्रदर्शन में काफी सुधार कर सकता है।

संस्करण 1.16 के साथ, थ्रेड मोड का समर्थन काफी हद तक बढ़ा दिया गया है, जिसमें पायथन डेटास्ट्रीम एपीआई भी शामिल है।

THREAD मोड Apache Flink के लिए प्रबंधित सेवा द्वारा समर्थित है, और हो सकता है सीधे आपके PyFlink एप्लिकेशन से सक्षम किया गया.

एप्पल सिलिकॉन समर्थन

यदि आप PyFlink अनुप्रयोगों को विकसित करने के लिए Apple सिलिकॉन-आधारित मशीनों का उपयोग करते हैं, तो PyFlink 1.15 के लिए विकास करते हुए, आपको संभवतः Apple सिलिकॉन पर कुछ ज्ञात पायथन निर्भरता समस्याओं का सामना करना पड़ा है। इन मुद्दों को अंततः हल कर लिया गया है (FLINK-25188). इन सीमाओं ने Apache Flink के लिए प्रबंधित सेवा पर चल रहे PyFlink अनुप्रयोगों को प्रभावित नहीं किया। संस्करण 1.16 से पहले, यदि आप एम1, एम2, या एम3 चिपसेट का उपयोग करने वाली मशीन पर एक पायफ़लिंक एप्लिकेशन विकसित करना चाहते थे, तो आपको कुछ का उपयोग करना पड़ता था समाधान, क्योंकि सीधे मशीन पर PyFlink 1.15 या इससे पहले का संस्करण स्थापित करना असंभव था।

असंरेखित चेकपॉइंट सुधार

Apache Flink 1.15 पहले से ही इंक्रीमेंटल चेकप्वाइंट और बफ़र डिब्लोटिंग का समर्थन करता है। इन सुविधाओं का उपयोग, विशेष रूप से संयोजन में, चेकपॉइंट के प्रदर्शन को बेहतर बनाने के लिए किया जा सकता है, जिससे चेकपॉइंटिंग अवधि को अधिक पूर्वानुमानित बनाया जा सकता है, खासकर बैकप्रेशर की उपस्थिति में। इन सुविधाओं के बारे में अधिक जानकारी के लिए देखें अपाचे फ़्लिंक अनुप्रयोगों के लिए अपनी अमेज़ॅन प्रबंधित सेवा में बफर डीब्लोटिंग और अनअलाइन्ड चेकपॉइंट्स के साथ चेकपॉइंटिंग को अनुकूलित करें.

संस्करण 1.16 और 1.17 के साथ, स्थिरता और प्रदर्शन में सुधार के लिए कई बदलाव पेश किए गए हैं।

डेटा विषमता को संभालना

अपाचे फ्लिंक का उपयोग करता है घटना-समय शब्दार्थ का समर्थन करने के लिए वॉटरमार्क. वॉटरमार्क विशेष रिकॉर्ड होते हैं, जिन्हें आम तौर पर स्रोत ऑपरेटर से प्रवाह में इंजेक्ट किया जाता है, जो इवेंट टाइम विंडोिंग एकत्रीकरण जैसे ऑपरेटरों के लिए इवेंट समय की प्रगति को चिह्नित करते हैं। एक सामान्य तकनीक नवीनतम देखी गई घटना के समय से वॉटरमार्क में देरी कर रही है, ताकि घटनाओं को कम से कम कुछ हद तक क्रम से बाहर रखा जा सके।

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

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

तेज़ स्रोतों की समस्या का समाधान करने के लिए, अपाचे फ़्लिंक 1.17 से शुरू करके, आप स्रोत विभाजन के वॉटरमार्क संरेखण को सक्षम कर सकते हैं (FLINK-28853). डिफ़ॉल्ट रूप से अक्षम यह तंत्र यह सुनिश्चित करता है कि कोई भी विभाजन अन्य विभाजनों की तुलना में अपने वॉटरमार्क को बहुत तेजी से आगे न बढ़ाए। आप कई स्रोतों को एक साथ जोड़ सकते हैं, जैसे कई इनपुट विषय, समान संरेखण समूह आईडी निर्दिष्ट करना, और वर्तमान वॉटरमार्क से अधिकतम बहाव की अवधि को कॉन्फ़िगर करना। यदि एक विशिष्ट विभाजन बहुत तेजी से घटनाएँ प्राप्त कर रहा है, तो स्रोत ऑपरेटर उस विभाजन का उपभोग तब तक रोक देता है जब तक कि बहाव कॉन्फ़िगर सीमा से कम न हो जाए।

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

निम्नलिखित कोड स्निपेट दिखाता है कि आप बाउंडेड-आउट-ऑफ-ऑर्डरनेस वॉटरमार्क उत्सर्जित करने वाले काफ्का स्रोत पर स्रोत विभाजन का वॉटरमार्क संरेखण कैसे सेट कर सकते हैं:

KafkaSource<Event> kafkaSource = ...
DataStream<Event> stream = env.fromSource(
    kafkaSource,
    WatermarkStrategy.<Event>forBoundedOutOfOrderness( Duration.ofSeconds(20))
        .withWatermarkAlignment("alignment-group-1", Duration.ofSeconds(20), Duration.ofSeconds(1)),
    "Kafka source"));

यह सुविधा केवल इसके साथ उपलब्ध है फ्लिप-217 संगत स्रोत, स्रोत विभाजन के वॉटरमार्क संरेखण का समर्थन करते हैं। लेखन के समय, प्रमुख स्ट्रीमिंग स्रोत कनेक्टर्स में से केवल काफ्का स्रोत ही इस सुविधा का समर्थन करता है।

प्रोटोबफ़ प्रारूप के लिए प्रत्यक्ष समर्थन

SQL और टेबल API अब सीधे समर्थन करते हैं प्रोटोबफ़ प्रारूप. इस प्रारूप का उपयोग करने के लिए, आपको प्रोटोबफ जावा कक्षाएं उत्पन्न करने की आवश्यकता है .proto स्कीमा परिभाषा फ़ाइलें बनाएं और उन्हें अपने एप्लिकेशन में निर्भरता के रूप में शामिल करें।

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

अपाचे फ़्लिंक को खुला स्रोत रखना

अपाचे फ्लिंक उप-कार्यों के बीच डेटा भेजने के लिए आंतरिक रूप से अक्का पर निर्भर करता है। 2022 में, अक्का के पीछे की कंपनी लाइटबेंड ने लाइसेंस परिवर्तन की घोषणा की भविष्य के अक्का संस्करणों के लिए, अपाचे 2.0 से अधिक प्रतिबंधात्मक लाइसेंस तक, और अक्का 2.6, अपाचे फ्लिंक द्वारा उपयोग किया जाने वाला संस्करण, कोई और सुरक्षा अद्यतन या फिक्स प्राप्त नहीं करेगा।

हालाँकि अक्का ऐतिहासिक रूप से बहुत स्थिर रहा है और उसे बार-बार अपडेट की आवश्यकता नहीं होती है, यह लाइसेंस परिवर्तन अपाचे फ्लिंक परियोजना के लिए एक जोखिम का प्रतिनिधित्व करता है। अपाचे फ्लिंक समुदाय का निर्णय अक्का को संस्करण 2.6 के फोर्क से बदलने का था, जिसे कहा जाता है अपाचे पेक्को (FLINK-32468). यह फोर्क अपाचे 2.0 लाइसेंस को बरकरार रखेगा और समुदाय द्वारा सभी आवश्यक अपडेट प्राप्त करेगा। इस बीच, अपाचे फ्लिंक समुदाय इस बात पर विचार करेगा कि अक्का या पेक्को पर निर्भरता पूरी तरह से हटा दी जाए या नहीं।

राज्य संपीड़न

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

Apache Flink के लिए प्रबंधित सेवा के साथ इन-प्लेस संस्करण अपग्रेड

यदि आप वर्तमान में Apache Flink 1.15 या पुराने का उपयोग करके Apache Flink के लिए प्रबंधित सेवा पर एक एप्लिकेशन चला रहे हैं, तो अब आप इसका उपयोग करके स्थिति खोए बिना इसे 1.18 में अपग्रेड कर सकते हैं। AWS कमांड लाइन इंटरफ़ेस (एडब्ल्यूएस सीएलआई), एडब्ल्यूएस CloudFormation or AWS क्लाउड डेवलपमेंट किट (एडब्ल्यूएस सीडीके), या कोई उपकरण जो एडब्ल्यूएस एपीआई का उपयोग करता है।

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

इन-प्लेस अपडेट के साथ आगे बढ़ने से पहले, आपको अपने एप्लिकेशन में शामिल निर्भरताओं को सत्यापित और अपडेट करना होगा, यह सुनिश्चित करते हुए कि वे नए अपाचे फ्लिंक संस्करण के साथ संगत हैं। विशेष रूप से, आपको किसी अपाचे फ़्लिंक लाइब्रेरी, कनेक्टर्स और संभवतः स्काला संस्करण को अपडेट करने की आवश्यकता है।

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

और अंत में, यदि आपका आवेदन स्टेटफुल है, तो हम इसे लेने की सलाह देते हैं स्नैपशॉट चल रहे एप्लिकेशन स्थिति का। यह आपको पिछले एप्लिकेशन संस्करण पर वापस जाने में सक्षम करेगा।

जब आप तैयार हों, तो अब आप इसका उपयोग कर सकते हैं अद्यतन अनुप्रयोग एपीआई कार्रवाई या अद्यतन-आवेदन AWS CLI कमांड एप्लिकेशन के रनटाइम संस्करण को अपडेट करने और इसे अपडेट की गई निर्भरता के साथ नए एप्लिकेशन आर्टिफैक्ट, JAR या ज़िप फ़ाइल पर इंगित करने के लिए है।

प्रक्रिया और एपीआई के बारे में अधिक विस्तृत जानकारी के लिए देखें Apache Flink के लिए इन-प्लेस संस्करण अपग्रेड. दस्तावेज़ में अपग्रेड प्रक्रिया में आपका मार्गदर्शन करने के लिए चरण-दर-चरण निर्देश और एक वीडियो शामिल है।

निष्कर्ष

इस पोस्ट में, हमने Apache Flink की कुछ नई सुविधाओं की जांच की, जो Apache Flink के लिए Amazon प्रबंधित सेवा में समर्थित हैं। यह सूची व्यापक नहीं है. Apache Flink ने कुछ बहुत ही आशाजनक सुविधाएँ भी पेश कीं, जैसे SQL और टेबल API के लिए ऑपरेटर-स्तरीय TTL [फ्लिप-292] और समय यात्रा [फ्लिप-308], लेकिन ये अभी तक एपीआई द्वारा समर्थित नहीं हैं, और वास्तव में अभी तक उपयोगकर्ताओं के लिए पहुंच योग्य नहीं हैं। इस कारण से, हमने उन्हें इस पोस्ट में शामिल नहीं करने का निर्णय लिया।

Apache Flink 1.18 के समर्थन के साथ, Apache Flink के लिए प्रबंधित सेवा अब नवीनतम जारी Apache Flink संस्करण का समर्थन करती है। हमने Apache Flink 1.18 के साथ उपलब्ध कुछ दिलचस्प नई सुविधाएँ और नए कनेक्टर देखे हैं और कैसे Apache Flink के लिए प्रबंधित सेवा आपको मौजूदा एप्लिकेशन को अपग्रेड करने में मदद करती है।

आप अपाचे फ़्लिंक ब्लॉग और रिलीज़ नोट्स से हालिया रिलीज़ के बारे में अधिक विवरण पा सकते हैं:

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


लेखक के बारे में

लोरेंजो निकोरालोरेंजो निकोरा एडब्ल्यूएस में वरिष्ठ स्ट्रीमिंग सॉल्यूशन आर्किटेक्ट के रूप में काम करता है, जो ईएमईए में ग्राहकों की मदद करता है। वह 25 वर्षों से अधिक समय से क्लाउड-नेटिव, डेटा-सघन सिस्टम का निर्माण कर रहे हैं, परामर्श के माध्यम से और फिनटेक उत्पाद कंपनियों के लिए वित्त उद्योग में काम कर रहे हैं। उन्होंने ओपन-सोर्स प्रौद्योगिकियों का बड़े पैमाने पर लाभ उठाया है और अपाचे फ्लिंक सहित कई परियोजनाओं में योगदान दिया है।

फ्रांसिस्को मोरिलोफ्रांसिस्को मोरिलो AWS में स्ट्रीमिंग सॉल्यूशंस आर्किटेक्ट हैं। फ़्रांसिस्को AWS ग्राहकों के साथ काम करता है, उन्हें AWS सेवाओं का उपयोग करके रीयल-टाइम एनालिटिक्स आर्किटेक्चर डिज़ाइन करने में मदद करता है, Apache Flink के लिए Amazon MSK और Amazon प्रबंधित सेवा का समर्थन करता है।

स्पॉट_आईएमजी

नवीनतम खुफिया

स्पॉट_आईएमजी