SQOOP
Apache Sqoop हा Hadoop इकोसिस्टमचा भाग आहे. रिलेशनल डेटाबेस सिस्टममधून हडूपवर बराच डेटा हस्तांतरित करावा लागत असल्याने, हे कार्य जलद करण्यासाठी एका समर्पित साधनाची आवश्यकता होती. येथेच Apache Sqoop चित्रात आले जे आता RDBMS फाईल्समधून MapReduce प्रक्रियेसाठी Hadoop इकोसिस्टममध्ये डेटा हस्तांतरित करण्यासाठी मोठ्या प्रमाणावर वापरले जाते.
जेव्हा डेटा हस्तांतरित करण्याचा विचार येतो, तेव्हा काळजी घेणे आवश्यक आहे. यात खालील गोष्टींचा समावेश आहे: डेटामध्ये सातत्य असणे आवश्यक आहे; डाउनस्ट्रीम पाइपलाइनची तरतूद करण्यासाठी ते तयार केले पाहिजे आणि वापरकर्त्यांनी उत्पादन प्रणाली संसाधनांचा वापर सुनिश्चित केला पाहिजे; इतर गोष्टींबरोबरच. MapReduce ऍप्लिकेशन बाह्य रिलेशनल डेटाबेसमध्ये असलेल्या डेटामध्ये थेट प्रवेश करण्यास सक्षम नाही. ही पद्धत क्लस्टर नोड्समधून खूप जास्त भार निर्मितीच्या जोखमीवर सिस्टमला उघड करू शकते.
SQOOP :
पूर्वी जेव्हा हडूप नव्हते किंवा त्या वेळी बिग डेटाची संकल्पना नव्हती तेव्हा सर्व डेटा रिलेशनल डेटाबेस मॅनेजमेंट सिस्टममध्ये संग्रहित करण्यासाठी वापरला जातो. परंतु आजकाल बिग डेटाच्या संकल्पनांचा परिचय झाल्यानंतर, डेटा अधिक संक्षिप्त आणि प्रभावी पद्धतीने संग्रहित करणे आवश्यक आहे. अशा प्रकारे स्कूप अस्तित्वात येतो.
त्यामुळे रिलेशनल डेटाबेस मॅनेजमेंट सिस्टममध्ये साठवलेला सर्व डेटा हडूप स्ट्रक्चरमध्ये हस्तांतरित करणे आवश्यक आहे. त्यामुळे एवढ्या मोठ्या प्रमाणात डेटा हस्तांतरित करणे शक्य नाही परंतु Sqoop च्या मदतीने आपण ते करू शकतो. अशाप्रकारे Sqoop हे साधन म्हणून परिभाषित केले जाते जे रिलेशनल डेटाबेस मॅनेजमेंट सिस्टमपासून हडूप सर्व्हरवर डेटा ट्रान्सफर ऑपरेशन्स करण्यासाठी वापरले जाते. अशा प्रकारे स्त्रोताच्या एका बिंदूपासून स्त्रोताच्या दुसर्या बिंदूवर मोठ्या प्रमाणात डेटा हस्तांतरित करण्यात मदत होते.
स्कूपची काही महत्त्वाची वैशिष्ट्ये :
Sqoop आम्हाला SQL Querys मधील निकाल Hadoop वितरित फाइल सिस्टीममध्ये जोडण्यासाठी देखील मदत करते. Sqoop आम्हाला प्रक्रिया केलेला डेटा थेट पोळे किंवा Hbase मध्ये लोड करण्यास मदत करते. हे Kerberos च्या मदतीने डेटाचे सुरक्षा ऑपरेशन करते. Sqoop च्या मदतीने, आम्ही प्रक्रिया केलेल्या डेटाचे कॉम्प्रेशन करू शकतो. Sqoop निसर्गात अत्यंत शक्तिशाली आणि कार्यक्षम आहे. Sqoop मध्ये दोन प्रमुख ऑपरेशन्स केल्या जातात:
आयात करा
निर्यात करा
मुळात Sqoop मध्ये होणारे ऑपरेशन्स सहसा वापरकर्त्यासाठी अनुकूल असतात. Sqoop ने वापरकर्त्याच्या आदेशावर प्रक्रिया करण्यासाठी कमांड-लाइन इंटरफेसचा वापर केला. Sqoop वापरकर्त्याशी संवाद साधण्यासाठी Java API चा वापर करून पर्यायी मार्ग देखील वापरू शकतो. मुळात, जेव्हा त्याला वापरकर्त्याकडून कमांड प्राप्त होते, तेव्हा ते Sqoop द्वारे हाताळले जाते आणि त्यानंतर कमांडची पुढील प्रक्रिया होते. Sqoop केवळ वापरकर्ता आदेशाच्या आधारावर डेटाची आयात आणि निर्यात करण्यास सक्षम असेल तो डेटाचे एकत्रीकरण तयार करण्यास सक्षम नाही.
Sqoop हे एक साधन आहे ज्यामध्ये खालील रीतीने कार्य करते, ते प्रथम वापरकर्त्याद्वारे कमांड-लाइन इंटरफेसमध्ये प्रदान केलेल्या युक्तिवादाचे विश्लेषण करते आणि नंतर त्या युक्तिवादांना पुढील टप्प्यावर पाठवते जेथे केवळ मॅप कार्यासाठी युक्तिवाद प्रेरित केले जातात. एकदा मॅपला युक्तिवाद प्राप्त झाल्यानंतर ते कमांड लाइन इंटरफेसमधील युक्तिवाद म्हणून वापरकर्त्याने परिभाषित केलेल्या संख्येवर अवलंबून एकाधिक मॅपर्स सोडण्याची आज्ञा देते. एकदा या जॉब्स इंपोर्ट कमांडसाठी झाल्यानंतर, प्रत्येक मॅपर टास्क डेटाच्या संबंधित भागासह नियुक्त केला जातो जो कमांड लाइन इंटरफेसमध्ये वापरकर्त्याद्वारे परिभाषित केलेल्या कीच्या आधारे आयात केला जातो. प्रक्रियेची कार्यक्षमता वाढवण्यासाठी Sqoop समांतर प्रक्रिया तंत्र वापरते ज्यामध्ये डेटा सर्व मॅपर्समध्ये समान प्रमाणात वितरित केला जातो. यानंतर, प्रत्येक मॅपर जावा डेटाबेस कनेक्शन मॉडेल वापरून डेटाबेससह वैयक्तिक कनेक्शन तयार करतो आणि नंतर Sqoop द्वारे नियुक्त केलेल्या डेटाचा वैयक्तिक भाग आणतो. एकदा डेटा प्राप्त केल्यावर कमांड लाइनमध्ये प्रदान केलेल्या युक्तिवादाच्या आधारावर डेटा HDFS किंवा Hbase किंवा Hive मध्ये लिहिला जातो. अशा प्रकारे Sqoop आयात प्रक्रिया पूर्ण झाली.
Sqoop मधील डेटाची निर्यात प्रक्रिया त्याच प्रकारे केली जाते, Sqoop निर्यात साधन जे उपलब्ध आहे ते Hadoop वितरित प्रणालीमधील फाइल्सच्या सेटला रिलेशनल डेटाबेस मॅनेजमेंट सिस्टमला परत करण्याची परवानगी देऊन ऑपरेशन करते. आयात प्रक्रियेदरम्यान इनपुट म्हणून दिलेल्या फायलींना रेकॉर्ड म्हणतात, त्यानंतर जेव्हा वापरकर्ता त्याचे कार्य सबमिट करतो तेव्हा ते मॅप टास्कमध्ये मॅप केले जाते जे हडूप डेटा स्टोरेजमधून डेटाच्या फाइल्स आणते आणि या डेटा फाइल्स कोणत्याही संरचित डेटामध्ये निर्यात केल्या जातात. डेस्टिनेशन जे रिलेशनल डेटाबेस मॅनेजमेंट सिस्टमच्या स्वरूपात आहे जसे की MySQL, SQL सर्व्हर आणि ओरॅकल इ.
आता दोन मुख्य ऑपरेशन्स तपशीलवार समजून घेऊया:
स्कूप इंपोर्ट :
Sqoop आयात कमांड ऑपरेशनच्या अंमलबजावणीत मदत करते. इम्पोर्ट कमांडच्या मदतीने, आम्ही रिलेशनल डेटाबेस मॅनेजमेंट सिस्टममधून हॅडूप डेटाबेस सर्व्हरवर टेबल इंपोर्ट करू शकतो. हडूप संरचनेतील रेकॉर्ड मजकूर फायलींमध्ये संग्रहित केले जातात आणि प्रत्येक रेकॉर्ड हडूप डेटाबेस सर्व्हरमध्ये स्वतंत्र रेकॉर्ड म्हणून आयात केला जातो. डेटा इंपोर्ट करताना आम्ही Hive मध्ये लोड आणि विभाजन देखील तयार करू शकतो..Sqoop डेटाच्या वाढीव आयातीला देखील सपोर्ट करते, याचा अर्थ आम्ही डेटाबेस इंपोर्ट केला असेल आणि आम्हाला आणखी काही रो जोडायच्या असतील, त्यामुळे या फंक्शन्सच्या मदतीने आम्ही फक्त जोडू शकतो. विद्यमान डेटाबेससाठी नवीन पंक्ती, संपूर्ण डेटाबेस नाही.
Normal Import
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --delete-target-dir --target-dir TARGET_DIRControlling Import(where)
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --where "WHERE CONDITION" --delete-target-dir --target-dir TARGET_DIRControlling Import(query)
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --query "sql_query_where WHERE \$CONDITIONS" --delete-target-dir --target-dir TARGET_DIRIncermental(append)
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --incermental append --check-column COLUMN_NAME --last-value LAST_VALUE --delete-target-dir --target-dir TARGET_DIRIncermental(lastmodified)
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --incermental lastmodified --check-column COLUMN_NAME --last-value LAST_VALUE --merge-key COLUMN_NAME --delete-target-dir --target-dir TARGET_DIRNormal Import as parquetfile
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --delete-target-dir --target-dir TARGET_DIR --as-parquetfileNormal Import as avrofile
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --delete-target-dir --target-dir TARGET_DIR --as-avrodatafileNormal Import default format text
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --delete-target-dir --target-dir TARGET_DIR --as-textfileNormal Import --as-textfile
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --delete-target-dir --target-dir TARGET_DIR --as-textfilecreateScoop job
scoop job --create sc_job --import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --delete-target-dir --target-dir TARGET_DIRimport all table
sqoop import-all-tables --connect mysql://host/dbname --username --password --warehouse-dir /user/cloudera/all_table --exclude customer8,customer9,customer10Sqoop Export :
Sqoop with AWS s3(form s3 to local db)
sqoop export -Dfs.s3a.access.key=ACCESS_KEY -Dfs.s3a.secret.key=SECRET_KEY -Dfs.s3a.endpoint=URL --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --export-dir TARGET_S3a_DIRSqoop export
sqoop export --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --table TABLE_NAME --export-dir SOURCE_DIRSqoop multi threading Normal Import with multi mapper (-m 4)
sqoop import --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 4 --split-by COLUMN_NAME --table TABLE_NAME --delete-target-dir --target-dir TARGET_DIRSqoop export with staging table for remove db lass
sqoop export --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --staging-table STAGING_TABLE_NAME --table TABLE_NAME --delete-target-dir --export-dir SOURCE_DIR1)sqoop.export.records per statement
- It is to specify the number of rows that will be used in each insert statement.2)sqoop.export.statements.per.transaction
- We can determine how many insert statements will be issued on the database prior to commit transactionsqoop export
-sqoop.export.records.per.statement=3 --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --staging-table STAGING_TABLE_NAME --table TABLE_NAME --delete-target-dir --export-dir SOURCE_DIRgoto 3 insert statement(per row) to hive default value is 100
sqoop export -sqoop.export.records.per.transaction=2 --connect jdbc:mysql://HOST_NAME/DB_NAME --username USER_NAME -password PASSWORD -m 1 --staging-table STAGING_TABLE_NAME --table TABLE_NAME --delete-target-dir --export-dir SOURCE_DIRSqoop निर्यात कमांड ऑपरेशनच्या अंमलबजावणीत मदत करते. एक्सपोर्ट कमांडच्या मदतीने जे ऑपरेशनची उलट प्रक्रिया म्हणून काम करते. एक्सपोर्ट कमांडच्या मदतीने आपण हडूप डेटाबेस फाईल सिस्टीममधून रिलेशनल डेटाबेस मॅनेजमेंट सिस्टममध्ये डेटा ट्रान्सफर करू शकतो. जो डेटा निर्यात केला जाईल तो ऑपरेशन पूर्ण होण्यापूर्वी रेकॉर्डमध्ये प्रक्रिया केला जातो. डेटाची निर्यात दोन चरणांनी केली जाते, पहिली म्हणजे मेटाडेटासाठी डेटाबेस तपासणे आणि दुसऱ्या टप्प्यात डेटाचे स्थलांतर समाविष्ट आहे.
Sqoop च्या मदतीने हडूपमध्ये आयात आणि निर्यात कार्य कसे केले जाते याची कल्पना येथे तुम्हाला मिळेल.
स्कूपचे फायदे :
Sqoop च्या मदतीने, आम्ही Oracle, Teradata, इत्यादी सारख्या विविध संरचित डेटा स्टोअरसह डेटाचे हस्तांतरण ऑपरेशन करू शकतो. Sqoop आम्हाला ETL ऑपरेशन्स अतिशय जलद आणि किफायतशीर पद्धतीने करण्यास मदत करते. Sqoop च्या साहाय्याने, आम्ही डेटाची समांतर प्रक्रिया करू शकतो ज्यामुळे एकूण प्रक्रिया अधिक घट्ट होते. Sqoop त्याच्या ऑपरेशन्ससाठी MapReduce यंत्रणा वापरते जी फॉल्ट टॉलरन्सला देखील समर्थन देते.
Sqoop चे तोटे :
ऑपरेशनच्या अंमलबजावणी दरम्यान अपयश उद्भवते, समस्या हाताळण्यासाठी एक विशेष उपाय आवश्यक आहे. रिलेशनल डेटाबेस मॅनेजमेंट सिस्टमशी कनेक्शन स्थापित करण्यासाठी Sqoop JDBC कनेक्शन वापरते जे एक अकार्यक्षम मार्ग आहे. Sqoop निर्यात ऑपरेशनचे कार्यप्रदर्शन हार्डवेअर कॉन्फिगरेशन रिलेशनल डेटाबेस व्यवस्थापन प्रणालीवर अवलंबून असते.