برنامج Apache Sqoop التعليمي - استيراد / تصدير البيانات بين HDFS و RDBMS



برنامج Apache Sqoop التعليمي: Sqoop هي أداة لنقل البيانات بين Hadoop وقواعد البيانات العلائقية. تغطي هذه المدونة Sooop الاستيراد والتصدير من MySQL.

قبل البدء في هذا البرنامج التعليمي Apache Sqoop ، دعنا نعود خطوة إلى الوراء. هل يمكنك تذكر أهمية استيعاب البيانات ، كما ناقشناها في مدونتنا السابقة على اباتشي فلوم . الآن ، كما نعلم أن Apache Flume هي أداة استيعاب البيانات للمصادر غير المهيكلة ، لكن المؤسسات تخزن بياناتها التشغيلية في قواعد البيانات العلائقية. لذلك ، كانت هناك حاجة إلى أداة يمكنها استيراد وتصدير البيانات من قواعد البيانات العلائقية. هذا هو سبب ولادة Apache Sqoop. يمكن لـ Sqoop التكامل بسهولة مع Hadoop وتفريغ البيانات المنظمة من قواعد البيانات العلائقية على HDFS ، مما يكمل قوة Hadoop. هذا هو السبب، يتطلب معرفة سليمة من Apache Sqoop و Flume.

في البداية ، تم تطوير Sqoop وصيانته بواسطة Cloudera. في وقت لاحق ، في 23 يوليو 2011 ، تم احتضانها من قبل أباتشي. في أبريل 2012 ، تمت ترقية مشروع Sqoop ليكون مشروع Apache عالي المستوى.





في مدونة Apache Flume التعليمية هذه ، سنغطي:



سنبدأ هذا البرنامج التعليمي Apache Sqoop من خلال تقديم Apache Sqoop. ثم المضي قدمًا ، سوف نفهم مزايا استخدام Apache Sqoop.

برنامج Apache Sqoop التعليمي: مقدمة Sqoop

Apache Sqoop - Apache Sqoop Tutorial - Edurekaبشكل عام ، تتفاعل التطبيقات مع قاعدة البيانات العلائقية باستخدام RDBMS ، وهذا يجعل قواعد البيانات العلائقية واحدة من أهم المصادر التي تولد البيانات الضخمة. يتم تخزين هذه البيانات في خوادم RDB في البنية العلائقية. هنا ، يلعب Apache Sqoop دورًا مهمًا في ، مما يوفر تفاعلًا ممكنًا بين خادم قاعدة البيانات العلائقية و HDFS.

لذلك ، Apache Sqoop هي أداة في وهو مصمم لنقل البيانات بين HDFS (تخزين Hadoop) وخوادم قواعد البيانات الارتباطية مثل MySQL و Oracle RDB و SQLite و Teradata و Netezza و Postgres إلخ. يقوم Apache Sqoop باستيراد البيانات من قواعد البيانات العلائقية إلى HDFS ، وتصدير البيانات من HDFS إلى قواعد البيانات الارتباطية. ينقل البيانات المجمعة بكفاءة بين Hadoop ومخازن البيانات الخارجية مثل مستودعات بيانات المؤسسة وقواعد البيانات العلائقية وما إلى ذلك.



هكذا حصل Sqoop على اسمه - ' سك L to Had افتح & Hadoop إلى SQL '.

بالإضافة إلى ذلك ، يتم استخدام Sqoop لاستيراد البيانات من مخازن البيانات الخارجية إلى أدوات نظام Hadoop البيئي مثل خلية نحل & HBase .

الآن ، كما نعرف ما هو Apache Sqoop. لذلك ، دعونا نتقدم في برنامج Apache Sqoop التعليمي الخاص بنا ونفهم سبب استخدام المنظمات Sqoop على نطاق واسع.

Apache Sqoop Tutorial: لماذا Sqoop؟

بالنسبة لمطور Hadoop ، تبدأ اللعبة الفعلية بعد تحميل البيانات في HDFS. إنهم يلعبون حول هذه البيانات من أجل الحصول على رؤى مختلفة مخفية في البيانات المخزنة في HDFS.

لذلك ، من أجل هذا التحليل ، يجب نقل البيانات الموجودة في أنظمة إدارة قواعد البيانات العلائقية إلى HDFS. مهمة الكتابة رمز لاستيراد وتصدير البيانات من قاعدة البيانات العلائقية إلى HDFS غير مثير للاهتمام وممل. هذا هو المكان الذي يأتي فيه Apache Sqoop لإنقاذ وإزالة آلامهم. تقوم بأتمتة عملية استيراد وتصدير البيانات.

يجعل Sqoop حياة المطورين سهلة من خلال توفير CLI لاستيراد البيانات وتصديرها. عليهم فقط توفير المعلومات الأساسية مثل مصادقة قاعدة البيانات ، والمصدر ، والوجهة ، والعمليات وما إلى ذلك. إنه يعتني بالجزء المتبقي.

يقوم Sqoop داخليًا بتحويل الأمر إلى مهام MapReduce ، والتي يتم تنفيذها بعد ذلك عبر HDFS. يستخدم إطار عمل YARN لاستيراد البيانات وتصديرها ، مما يوفر التسامح مع الخطأ فوق التوازي.

وظيفة goto c ++

للمضي قدمًا في مدونة Sqoop Tutorial هذه ، سوف نفهم الميزات الرئيسية لـ Sqoop ثم ننتقل إلى بنية Apache Sqoop.

Apache Sqoop Tutorial: الملامح الرئيسية لـ Sqoop

يوفر Sqoop العديد من الميزات البارزة مثل:

  1. حمولة كاملة : يمكن لـ Apache Sqoop تحميل الجدول بأكمله بأمر واحد. يمكنك أيضًا تحميل جميع الجداول من قاعدة بيانات باستخدام أمر واحد.
  2. تدريجي حمل : يوفر Apache Sqoop أيضًا إمكانية التحميل الإضافي حيث يمكنك تحميل أجزاء من الجدول كلما تم تحديثه.
  3. موازى استيراد و تصدير : يستخدم Sqoop إطار عمل YARN لاستيراد البيانات وتصديرها ، مما يوفر التسامح مع الخطأ فوق التوازي.
  4. استيراد النتائج من SQL الاستعلام : يمكنك أيضًا استيراد النتيجة التي تم إرجاعها من استعلام SQL في HDFS.
  5. ضغط : يمكنك ضغط بياناتك باستخدام خوارزمية انكماش (gzip) مع وسيطة ضغط ، أو عن طريق تحديد وسيطة ضغط الترميز. يمكنك أيضًا تحميل الجدول المضغوط بتنسيق اباتشي خلية .
  6. موصلات إلى عن على الكل رائد RDBMS قواعد بيانات : يوفر Apache Sqoop موصلات لقواعد بيانات RDBMS متعددة تغطي المحيط بالكامل تقريبًا.
  7. كيربيروس الأمان دمج : Kerberos هو بروتوكول مصادقة لشبكة الكمبيوتر يعمل على أساس 'التذاكر' للسماح للعقد بالاتصال عبر شبكة غير آمنة لإثبات هويتها لبعضها البعض بطريقة آمنة. يدعم Sqoop مصادقة Kerberos.
  8. حمل البيانات مباشرة إلى HIVE / HBase : يمكنك تحميل البيانات مباشرة إلى اباتشي خلية لتحليل وتفريغ بياناتك أيضًا في HBase ، وهي قاعدة بيانات NoSQL.
  9. الدعم إلى عن على تراكم : يمكنك أيضًا إرشاد Sqoop لاستيراد الجدول في Accumulo بدلاً من دليل في HDFS.

الهيكل هو الذي يمكّن Apache Sqoop من هذه الفوائد. الآن ، نظرًا لأننا نعرف ميزات Apache Sqoop ، فلننتقل إلى الأمام ونفهم هندسة Apache Sqoop وعملها.

Apache Sqoop Tutorial: Sqoop Architecture & Working

دعونا نفهم كيف يعمل Apache Sqoop باستخدام الرسم البياني أدناه:

تستورد أداة الاستيراد جداول فردية من RDBMS إلى HDFS. يتم التعامل مع كل صف في الجدول كسجل في HDFS.

عندما نرسل أمر Sqoop ، يتم تقسيم مهمتنا الرئيسية إلى مهام فرعية تتم معالجتها بواسطة مهمة خريطة فردية داخليًا. مهمة الخريطة هي المهمة الفرعية ، التي تستورد جزءًا من البيانات إلى نظام Hadoop البيئي. بشكل جماعي ، تقوم جميع مهام الخريطة باستيراد البيانات بالكامل.

يعمل التصدير أيضًا بطريقة مماثلة.

تقوم أداة التصدير بتصدير مجموعة من الملفات من HDFS إلى RDBMS. تحتوي الملفات المعطاة كمدخلات إلى Sqoop على سجلات تسمى كصفوف في الجدول.

عندما نرسل وظيفتنا ، يتم تعيينها في مهام الخريطة التي تجلب جزء كبير من البيانات من HDFS. يتم تصدير هذه الأجزاء إلى وجهة بيانات منظمة. بدمج كل هذه الأجزاء من البيانات التي تم تصديرها ، نتلقى البيانات بأكملها في الوجهة ، والتي تكون في معظم الحالات عبارة عن RDBMS (MYSQL / Oracle / SQL Server).

مرحلة التخفيض مطلوبة في حالة التجمعات. ولكن ، يقوم Apache Sqoop فقط باستيراد وتصدير البيانات التي لا تقوم بأي تجميعات. قم بإطلاق مخطط عمل عدة مصممين خرائط بناءً على الرقم المحدد من قبل المستخدم. بالنسبة لاستيراد Sqoop ، سيتم تعيين جزء من البيانات المراد استيرادها لكل مهمة مصمم خرائط. يوزع Sqoop بيانات الإدخال بين مصممي الخرائط بالتساوي للحصول على أداء عالٍ. ثم يقوم كل مصمم خرائط بإنشاء اتصال بقاعدة البيانات باستخدام JDBC ويقوم بجلب جزء البيانات المعين بواسطة Sqoop وكتابته في HDFS أو Hive أو HBase استنادًا إلى الوسائط المتوفرة في CLI.

الآن بعد أن فهمنا بنية وعمل Apache Sqoop ، دعنا نفهم الفرق بين Apache Flume و Apache Sqoop.

Apache Sqoop Tutorial: Flume vs Sqoop

الفرق الرئيسي بين Flume و Sqoop هو:

  • يستوعب Flume البيانات غير المهيكلة أو البيانات شبه المنظمة في HDFS فقط.
  • بينما يمكن لـ Sqoop استيراد وتصدير البيانات المنظمة من RDBMS أو مستودعات بيانات Enterprise إلى HDFS أو العكس.

الآن ، بالتقدم في برنامج Apache Sqoop التعليمي الخاص بنا ، حان الوقت لتصفح أوامر Apache Sqoop.

Apache Sqoop Tutorial: Sqoop Commands

  • Sqoop - أمر الاستيراد

يتم استخدام أمر الاستيراد لاستيراد جدول من قواعد البيانات العلائقية إلى HDFS. في حالتنا ، سنقوم باستيراد جداول من قواعد بيانات MySQL إلى HDFS.

كما ترون في الصورة أدناه ، لدينا جدول الموظفين في قاعدة بيانات الموظفين والذي سنقوم باستيراده إلى HDFS.

أمر استيراد الجدول هو:

استيراد sqoop - ربط jdbc: mysql: // localhost / الموظفون - اسم المستخدم edureka - موظفو الجدول

كما ترى في الصورة أدناه ، بعد تنفيذ هذا الأمر ، سيتم تنفيذ مهام الخريطة في النهاية الخلفية.

بعد تنفيذ الكود ، يمكنك التحقق من واجهة مستخدم الويب الخاصة بـ HDFS ، أي المضيف المحلي: 50070 حيث يتم استيراد البيانات.

  • Sqoop - أمر استيراد مع الدليل الهدف

يمكنك أيضًا استيراد الجدول في دليل محدد في HDFS باستخدام الأمر التالي:

sqoop import --connect jdbc: mysql: // localhost / staff --username edureka --table staff --m 1 --target-dir / staff

يستورد Sqoop البيانات بالتوازي من معظم مصادر قواعد البيانات. م تُستخدم الخاصية لتحديد عدد مصممي الخرائط المراد تنفيذها.

يستورد Sqoop البيانات بالتوازي من معظم مصادر قواعد البيانات. يمكنك تحديد عدد مهام الخريطة (العمليات المتوازية) لاستخدامها لإجراء الاستيراد باستخدام ملف م أو - عدد رسامي الخرائط جدال. تأخذ كل من هذه الوسيطات قيمة عددية تتوافق مع درجة التوازي المراد توظيفها.

يمكنك التحكم في عدد مصممي الخرائط بشكل مستقل عن عدد الملفات الموجودة في الدليل. يعتمد أداء التصدير على درجة التوازي. بشكل افتراضي ، سيستخدم Sqoop أربع مهام بالتوازي لعملية التصدير. قد لا يكون هذا هو الأمثل ، ستحتاج إلى تجربة الإعداد الخاص بك. قد تقدم المهام الإضافية تزامنًا أفضل ، ولكن إذا كانت قاعدة البيانات معطلة بالفعل في تحديث الفهارس ، واستدعاء المشغلات ، وما إلى ذلك ، فقد يؤدي التحميل الإضافي إلى تقليل الأداء.

يمكنك أن ترى في الصورة أدناه ، أن عدد مهمة مصمم الخرائط هو 1.

عدد الملفات التي تم إنشاؤها أثناء استيراد جداول MySQL يساوي عدد المخططات التي تم إنشاؤها.

  • Sqoop - أمر الاستيراد مع شرط Where

يمكنك استيراد مجموعة فرعية من الجدول باستخدام جملة 'where' في أداة استيراد Sqoop. يقوم بتنفيذ استعلام SQL المقابل في خادم قاعدة البيانات المعني ويخزن النتيجة في دليل الهدف في HDFS. يمكنك استخدام الأمر التالي لاستيراد البيانات باستخدام ' أين شرط:

sqoop import --connect jdbc: mysql: // localhost / staff --username edureka --table staff --m 3 --where 'emp_no & gt 49000' --target-dir / Latest_Employees

  • سكووب - استيراد تزايدي

يوفر Sqoop وضع استيراد تزايدي يمكن استخدامه لاسترداد صفوف أحدث فقط من بعض مجموعة الصفوف التي تم استيرادها مسبقًا. يدعم Sqoop نوعين من الواردات المتزايدة: ألحق و آخر تعديل . يمكنك استخدام الوسيطة –incremental لتحديد نوع الاستيراد التزايدي المراد تنفيذه.

يجب أن تحدد ألحق الوضع عند استيراد جدول حيث تتم إضافة صفوف جديدة باستمرار مع زيادة قيم معرف الصف. أنت تحدد العمود الذي يحتوي على معرّف الصف بـ - تحقق من العمود . يقوم Sqoop باستيراد الصفوف حيث يكون لعمود الاختيار قيمة أكبر من القيمة المحددة مع - آخر قيمة .

يسمى إستراتيجية تحديث الجدول البديل التي يدعمها Sqoop آخر تعديل الوضع. يجب عليك استخدام هذا عندما يمكن تحديث صفوف الجدول المصدر ، وسيؤدي كل تحديث من هذا القبيل إلى تعيين قيمة العمود الذي تم تعديله مؤخرًا إلى الطابع الزمني الحالي.

عند تشغيل استيراد لاحق ، يجب عليك تحديد - آخر قيمة بهذه الطريقة لضمان استيراد البيانات الجديدة أو المحدثة فقط. تتم معالجة ذلك تلقائيًا عن طريق إنشاء استيراد تزايدي كوظيفة محفوظة ، وهي الآلية المفضلة لإجراء استيراد تزايدي متكرر.

أولاً ، نقوم بإدخال صف جديد سيتم تحديثه في HDFS الخاص بنا.

أمر الاستيراد المتزايد هو:

sqoop import --connect jdbc: mysql: // localhost / staff --username edureka --table staff --target-dir / Latest_Employees - الإضافي الإضافي - check-العمود emp_no - القيمة الأخيرة 499999

يمكنك أن ترى في الصورة أدناه ، يتم إنشاء ملف جديد مع البيانات المحدثة.

  • Sqoop - استيراد كافة الجداول

يمكنك استيراد جميع الجداول من خادم قاعدة بيانات RDBMS إلى HDFS. يتم تخزين بيانات كل جدول في دليل منفصل ويكون اسم الدليل هو نفسه اسم الجدول. من الضروري أن يحتوي كل جدول في قاعدة البيانات على حقل مفتاح أساسي. أمر استيراد كل الجدول من قاعدة بيانات هو:

استيراد جميع الجداول sqoop - ربط jdbc: mysql: // localhost / الموظفين - اسم المستخدم edureka

  • Sqoop - قائمة قواعد البيانات

يمكنك سرد قواعد البيانات الموجودة في قاعدة بيانات العلاقات باستخدام Sqoop. تقوم أداة Sqoop list-databases بتحليل وتنفيذ استعلام 'SHOW DATABASES' مقابل خادم قاعدة البيانات. أمر سرد قواعد البيانات هو:

قائمة قواعد البيانات sqoop - ربط jdbc: mysql: // localhost / - اسم المستخدم edureka

  • Sqoop - قائمة الجداول

يمكنك أيضًا سرد جداول قاعدة بيانات معينة في خادم قاعدة بيانات MySQL باستخدام Sqoop. تحلل أداة جداول قائمة Sqoop وتنفذ استعلام 'إظهار الجداول'. أمر سرد الجداول هو قاعدة بيانات هو:

قائمة جداول sqoop - ربط jdbc: mysql: // localhost / staff --username edureka

  • سكووب - تصدير

كما ناقشنا أعلاه ، يمكنك أيضًا تصدير البيانات من HDFS إلى قاعدة بيانات RDBMS. يجب أن يكون الجدول الهدف موجودًا في قاعدة البيانات الهدف.يتم تخزين البيانات كسجلات في HDFS. تتم قراءة هذه السجلات وتحليلها وتحديدها باستخدام محدد يحدده المستخدم.العملية الافتراضية هي إدراج جميع السجلات من ملفات الإدخال إلى جدول قاعدة البيانات باستخدام عبارة INSERT. في وضع التحديث ، ينشئ Sqoop عبارة UPDATE التي تحل محل السجل الموجود في قاعدة البيانات.

لذلك ، نقوم أولاً بإنشاء جدول فارغ ، حيث سنقوم بتصدير بياناتنا.

أمر تصدير البيانات من HDFS إلى قاعدة البيانات العلائقية هو:

تصدير sqoop - ربط jdbc: mysql: // localhost / staff - username edureka --table emp --export-dir / user / edureka / staff

  • سكوب - Codegen

في التطبيق الموجه للكائنات ، يحتوي كل جدول قاعدة بيانات على فئة كائن وصول إلى البيانات تحتوي على أساليب 'getter' و 'setter' لتهيئة الكائنات. ينشئ Codegen فئة DAO تلقائيًا. يقوم بإنشاء فئة DAO في Java ، بناءً على بنية مخطط الجدول.

الأمر الخاص بإنشاء كود جافا هو:

sqoop codegen - ربط jdbc: mysql: // localhost / staff --username edureka --table staff

يمكنك رؤية المسار في الصورة أعلاه حيث يتم إنشاء الكود. دعنا نذهب إلى المسار ونتحقق من الملفات التي تم إنشاؤها.

آمل أن تكون هذه المدونة مفيدة وذات قيمة مضافة لك. إذا كنت مهتمًا بمعرفة المزيد ، فيمكنك متابعة ذلك الذي يخبرك عن البيانات الضخمة وكيف يتعامل Hadoop مع التحديات المتعلقة بالبيانات الضخمة.

الآن بعد أن فهمت Apache Sqoop ، تحقق من ملف من Edureka ، شركة تعليمية موثوقة عبر الإنترنت مع شبكة تضم أكثر من 250.000 متعلم راضٍ منتشرين في جميع أنحاء العالم تساعد الدورة التدريبية لشهادة Edureka Big Data Hadoop المتعلمين على أن يصبحوا خبراء في مجال HDFS ، و Yarn ، و MapReduce ، و Pig ، و Hive ، و HBase ، و Oozie ، و Flume ، و Sqoop باستخدام حالات الاستخدام في الوقت الفعلي في مجال البيع بالتجزئة ، ووسائل التواصل الاجتماعي ، والطيران ، والسياحة ، والمالية

لديك سؤال لنا؟ يرجى ذكر ذلك في قسم التعليقات وسنعاود الاتصال بك.