हम अभी भी उन ग्राहकों की संख्या पर आश्चर्यचकित हैं जो HDFS से आधुनिक ऑब्जेक्ट स्टोरेज जैसे कि MinIO में माइग्रेट करने के लिए हमारे पास आते हैं। हमने सोचा था कि अब तक सभी ने बदलाव कर लिया होगा, लेकिन हर हफ़्ते, हम एक प्रमुख, उच्च तकनीकी संगठन से बात करते हैं जिसने बदलाव करने का फैसला किया है।
अक्सर, उन चर्चाओं में, उनके बुनियादी ढांचे के ऐसे तत्व होते हैं जिन्हें वे अपने माइग्रेशन के बाद बनाए रखना चाहते हैं। ऐसे फ्रेमवर्क और सॉफ़्टवेयर हैं जो HDFS इकोसिस्टम से निकले हैं, जिनमें बहुत सारे डेवलपर शामिल हैं और अभी भी आधुनिक डेटा स्टैक में उनका स्थान है। वास्तव में, हमने अक्सर कहा है कि HDFS इकोसिस्टम से बहुत कुछ अच्छा निकला है। मूल मुद्दा बारीकी से युग्मित भंडारण और कंप्यूट के साथ है, जरूरी नहीं कि बिग डेटा युग से आए उपकरणों और सेवाओं के साथ।
यह ब्लॉग पोस्ट इस बात पर ध्यान केंद्रित करेगा कि आप मूल्यवान उपकरणों और सेवाओं को हटाए बिना और बदले बिना उस माइग्रेशन को कैसे कर सकते हैं। वास्तविकता यह है कि यदि आप अपने बुनियादी ढांचे का आधुनिकीकरण नहीं करते हैं, तो आप AI/ML में वह प्रगति नहीं कर सकते हैं जिसकी आपके संगठन को आवश्यकता है, लेकिन आपको वहां पहुंचने के लिए सब कुछ छोड़ने की ज़रूरत नहीं है।
हम पहले ही कुछ दौर से गुजर चुके हैं
कंप्यूट नोड्स: Kubernetes कंप्यूट नोड्स पर स्टेटलेस अपाचे स्पार्क और अपाचे हाइव कंटेनरों को कुशलतापूर्वक प्रबंधित करता है, जिससे इष्टतम संसाधन उपयोग और गतिशील स्केलिंग सुनिश्चित होती है।
स्टोरेज लेयर: मिनियो
एक्सेस लेयर: मिनियो ऑब्जेक्ट स्टोरेज तक सभी पहुंच S3 API के माध्यम से एकीकृत होती है, जो संग्रहीत डेटा के साथ इंटरैक्ट करने के लिए एक सहज इंटरफ़ेस प्रदान करती है।
सुरक्षा परत: डेटा सुरक्षा सर्वोपरि है। मिनियो प्रति-ऑब्जेक्ट कुंजियों का उपयोग करके सभी डेटा को एन्क्रिप्ट करता है, जिससे अनधिकृत पहुंच के खिलाफ मजबूत सुरक्षा सुनिश्चित होती है।
पहचान प्रबंधन: मिनियो एंटरप्राइज, अनुप्रयोगों या उपयोगकर्ताओं को प्रमाणित करने की अनुमति देने के लिए WSO2, कीक्लोक, ओक्टा, पिंग आइडेंटिटी जैसे पहचान प्रदाताओं के साथ पूरी तरह से एकीकृत होता है।
Hadoop के लिए एक पूर्णतः आधुनिकीकृत प्रतिस्थापन जो आपके संगठन को Hive, YARN और किसी भी अन्य Hadoop पारिस्थितिकी तंत्र डेटा उत्पाद को रखने की अनुमति देता है, जो ऑब्जेक्ट स्टोरेज के साथ एकीकृत हो सकता है, जो आधुनिक डेटा स्टैक में लगभग सब कुछ है।
S3a Hadoop से दूर जाने की चाह रखने वाले अनुप्रयोगों के लिए एक आवश्यक एंडपॉइंट है, जो Hadoop पारिस्थितिकी तंत्र के भीतर अनुप्रयोगों की एक विस्तृत श्रृंखला के साथ संगतता प्रदान करता है। 2006 से, S3-संगत ऑब्जेक्ट-स्टोरेज बैकएंड को Hadoop पारिस्थितिकी तंत्र के भीतर कई डेटा प्लेटफ़ॉर्म में डिफ़ॉल्ट सुविधा के रूप में सहजता से एकीकृत किया गया है। यह एकीकरण उभरती हुई प्रौद्योगिकियों में S3 क्लाइंट कार्यान्वयन को शामिल करने से जुड़ा है।
सभी Hadoop-संबंधित प्लेटफ़ॉर्म पर, hadoop-aws
मॉड्यूल और aws-java-sdk-bundle
को अपनाना मानक अभ्यास है, जो S3 API के लिए मज़बूत समर्थन सुनिश्चित करता है। यह मानकीकृत दृष्टिकोण HDFS और S3 स्टोरेज बैकएंड से अनुप्रयोगों के सुचारू संक्रमण की सुविधा प्रदान करता है। उचित प्रोटोकॉल निर्दिष्ट करके, डेवलपर्स आसानी से Hadoop से आधुनिक ऑब्जेक्ट स्टोरेज में अनुप्रयोगों को स्विच कर सकते हैं। S3 के लिए प्रोटोकॉल योजना s3a:// द्वारा इंगित की जाती है, जबकि HDFS के लिए, इसे hdfs:// के रूप में दर्शाया जाता है।
हाडोप से आधुनिक ऑब्जेक्ट स्टोरेज पर माइग्रेट करने के लाभों के बारे में विस्तार से बात करना संभव है। यदि आप इसे पढ़ रहे हैं, तो आप पहले से ही काफी हद तक जानते हैं कि हाडोप जैसे विरासत प्लेटफ़ॉर्म से माइग्रेट किए बिना AI और अन्य आधुनिक डेटा उत्पादों में प्रगति संभवतः बंद हो जाएगी। इसका कारण प्रदर्शन और पैमाने में निहित है।
इसमें कोई संदेह नहीं है कि आधुनिक कार्यभार को संसाधित किए जा रहे डेटा की मात्रा और वर्तमान में आवश्यक कार्यों की जटिलता के साथ प्रतिस्पर्धा करने के लिए उत्कृष्ट प्रदर्शन की आवश्यकता होती है। जब प्रदर्शन केवल दिखावटी बेंचमार्किंग के बारे में नहीं होता है, बल्कि एक कठोर आवश्यकता होती है, तो Hadoop प्रतिस्थापन के लिए दावेदारों का क्षेत्र
माइग्रेशन को आगे बढ़ाने वाला दूसरा तत्व क्लाउड-नेटिव स्केल है। जब क्लाउड की अवधारणा भौतिक स्थान से कम और एक
इस अवधारणा का एक हिस्सा वेंडर लॉक-इन से मुक्ति से मिलने वाले आर्थिक लाभ हैं, जो किसी संगठन को विशिष्ट कार्यभार के लिए सर्वश्रेष्ठ-इन-क्लास विकल्प चुनने की अनुमति देता है। यह उल्लेख करना ज़रूरी नहीं है कि डेटा की सुरक्षा के लिए उसकी तीन अलग-अलग प्रतियाँ बनाए रखने से मुक्ति अतीत की बात हो गई है।
हमारी वास्तुकला की बारीकियों में जाने से पहले, आपको कुछ घटकों को चालू करने की आवश्यकता होगी। Hadoop से माइग्रेट करने के लिए, आपको निश्चित रूप से इसे शुरू से ही इंस्टॉल करना होगा। यदि आप इस अनुभव का अनुकरण करना चाहते हैं, तो आप यहाँ Hadoop के हॉर्टनवर्क्स वितरण को सेट करके इस ट्यूटोरियल को शुरू कर सकते हैं।
अन्यथा, आप निम्नलिखित स्थापना चरणों से शुरू कर सकते हैं:
अम्बारी सेट अप: अगला,
अपाचे स्पार्क स्थापित करें: बड़े पैमाने पर डेटा को प्रोसेस करने के लिए स्पार्क आवश्यक है।
मिनियो स्थापित करें : अपने परिवेश के आधार पर, आप दो स्थापना तरीकों में से चुन सकते हैं:
इन तत्वों को सफलतापूर्वक स्थापित करने के बाद, आप स्पार्क और हाइव को HDFS के बजाय मिनियो का उपयोग करने के लिए कॉन्फ़िगर कर सकते हैं। Ambari UI http://<ambari-server>:8080/ पर नेविगेट करें और डिफ़ॉल्ट क्रेडेंशियल का उपयोग करके लॉग इन करें: username: admin, password: admin
,
अम्बारी में, सेवाओं पर जाएँ, फिर HDFS, फिर नीचे दिए गए स्क्रीनशॉट की तरह कॉन्फ़िगरेशन पैनल पर जाएँ। इस अनुभाग में, आप HDFS के बजाय MinIO के साथ S3a का उपयोग करने के लिए अम्बारी को कॉन्फ़िगर कर रहे हैं।
नीचे स्क्रॉल करें और Custom core-site
पर जाएँ। यह वह जगह है जहाँ आप S3a को कॉन्फ़िगर करेंगे।
sudo pip install yq alias kv-pairify='yq ".configuration[]" | jq ".[]" | jq -r ".name + \"=\" + .value"'
यहाँ से, आपका कॉन्फ़िगरेशन आपके इंफ्रास्ट्रक्चर पर निर्भर करेगा। लेकिन, नीचे दिया गया तरीका core-site.xml
के लिए 12 नोड्स और 1.2TiB मेमोरी पर चलने वाले MinIO के साथ S3a को कॉन्फ़िगर करने का तरीका दर्शा सकता है।
cat ${HADOOP_CONF_DIR}/core-site.xml | kv-pairify | grep "mapred" mapred.maxthreads.generate.mapoutput=2 # Num threads to write map outputs mapred.maxthreads.partition.closer=0 # Asynchronous map flushers mapreduce.fileoutputcommitter.algorithm.version=2 # Use the latest committer version mapreduce.job.reduce.slowstart.completedmaps=0.99 # 99% map, then reduce mapreduce.reduce.shuffle.input.buffer.percent=0.9 # Min % buffer in RAM mapreduce.reduce.shuffle.merge.percent=0.9 # Minimum % merges in RAM mapreduce.reduce.speculative=false # Disable speculation for reducing mapreduce.task.io.sort.factor=999 # Threshold before writing to drive mapreduce.task.sort.spill.percent=0.9 # Minimum % before spilling to drive
इस माइग्रेशन पैटर्न पर दस्तावेज़ों की जांच करके कुछ अनुकूलन का पता लगाया जा सकता है
जब आप कॉन्फ़िगरेशन से संतुष्ट हों तो सभी को पुनः प्रारंभ करें।
आपको स्पार्क2 कॉन्फ़िगरेशन पैनल पर भी नेविगेट करना होगा।
Custom spark-defaults
तक स्क्रॉल करें और मिनियो के साथ कॉन्फ़िगर करने के लिए निम्नलिखित प्रॉपर्टी जोड़ें:
spark.hadoop.fs.s3a.access.key minio spark.hadoop.fs.s3a.secret.key minio123 spark.hadoop.fs.s3a.path.style.access true spark.hadoop.fs.s3a.block.size 512M spark.hadoop.fs.s3a.buffer.dir ${hadoop.tmp.dir}/s3a spark.hadoop.fs.s3a.committer.magic.enabled false spark.hadoop.fs.s3a.committer.name directory spark.hadoop.fs.s3a.committer.staging.abort.pending.uploads true spark.hadoop.fs.s3a.committer.staging.conflict-mode append spark.hadoop.fs.s3a.committer.staging.tmp.path /tmp/staging spark.hadoop.fs.s3a.committer.staging.unique-filenames true spark.hadoop.fs.s3a.committer.threads 2048 # number of threads writing to MinIO spark.hadoop.fs.s3a.connection.establish.timeout 5000 spark.hadoop.fs.s3a.connection.maximum 8192 # maximum number of concurrent conns spark.hadoop.fs.s3a.connection.ssl.enabled false spark.hadoop.fs.s3a.connection.timeout 200000 spark.hadoop.fs.s3a.endpoint http://minio:9000 spark.hadoop.fs.s3a.fast.upload.active.blocks 2048 # number of parallel uploads spark.hadoop.fs.s3a.fast.upload.buffer disk # use disk as the buffer for uploads spark.hadoop.fs.s3a.fast.upload true # turn on fast upload mode spark.hadoop.fs.s3a.impl org.apache.hadoop.spark.hadoop.fs.s3a.S3AFileSystem spark.hadoop.fs.s3a.max.total.tasks 2048 # maximum number of parallel tasks spark.hadoop.fs.s3a.multipart.size 512M # size of each multipart chunk spark.hadoop.fs.s3a.multipart.threshold 512M # size before using multipart uploads spark.hadoop.fs.s3a.socket.recv.buffer 65536 # read socket buffer hint spark.hadoop.fs.s3a.socket.send.buffer 65536 # write socket buffer hint spark.hadoop.fs.s3a.threads.max 2048 # maximum number of threads for S3A
कॉन्फ़िगरेशन परिवर्तन लागू होने के बाद सभी को पुनः आरंभ करें।
कॉन्फ़िगरेशन समाप्त करने के लिए हाइव पैनल पर जाएँ।
Custom hive-site
तक नीचे स्क्रॉल करें और निम्नलिखित प्रॉपर्टी जोड़ें:
hive.blobstore.use.blobstore.as.scratchdir=true hive.exec.input.listing.max.threads=50 hive.load.dynamic.partitions.thread=25 hive.metastore.fshandler.threads=50 hive.mv.files.threads=40 mapreduce.input.fileinputformat.list-status.num-threads=50
आप अधिक फ़ाइन-ट्यूनिंग कॉन्फ़िगरेशन जानकारी पा सकते हैं
बस, अब आप अपने एकीकरण का परीक्षण कर सकते हैं।
इस ब्लॉग पोस्ट में Hadoop से माइग्रेट करने के लिए एक आधुनिक दृष्टिकोण की रूपरेखा दी गई है, जिसके लिए आपको अपने मौजूदा सिस्टम को पूरी तरह से बदलने की आवश्यकता नहीं है। Apache Spark और Apache Hive को प्रबंधित करने के लिए Kubernetes का लाभ उठाकर और स्टेटफुल ऑब्जेक्ट स्टोरेज के लिए MinIO को एकीकृत करके, संगठन एक संतुलित आर्किटेक्चर प्राप्त कर सकते हैं जो गतिशील स्केलिंग और कुशल संसाधन उपयोग का समर्थन करता है। यह सेटअप न केवल आपके डेटा प्रोसेसिंग वातावरण की क्षमताओं को बनाए रखता है बल्कि उन्हें और अधिक मजबूत और भविष्य-प्रूफ बनाता है।
मिनियो के साथ, आपको ऐसे स्टोरेज समाधान का लाभ मिलता है जो कमोडिटी हार्डवेयर पर उच्च प्रदर्शन प्रदान करता है, इरेज़र कोडिंग (Hadoop के डेटा प्रतिकृति की अतिरेक को समाप्त करना) के माध्यम से लागत कम करता है, और विक्रेता लॉक-इन और कैसंड्रा-आधारित मेटाडेटा स्टोर की आवश्यकता जैसी सीमाओं को दरकिनार करता है। ये लाभ उन संगठनों के लिए महत्वपूर्ण हैं जो अपने मौजूदा डेटा सिस्टम के मूल तत्वों को त्यागे बिना उन्नत AI/ML कार्यभार का लाभ उठाना चाहते हैं।
इस बारे में अधिक विस्तृत चर्चा या विशिष्ट मार्गदर्शन के लिए कि आप अपने संगठन की विशिष्ट आवश्यकताओं को पूरा करने के लिए इस माइग्रेशन रणनीति को कैसे अनुकूलित कर सकते हैं, बेझिझक हमसे संपर्क करें। चाहे [email protected] पर ईमेल के माध्यम से या हमारे समुदाय पर