Apache Sqoop

Apache Sqoop چیست؟

Apache Sqoop برنامه ی کاربردی مبتنی بر کنسول و مبتنی بر جاوا است که برای انتقال توده ای از اطلاعات بین آپاچی هدوپ و مراکز ذخیره سازی داده غیر هدوپ مانند پایگاه داده های ارتباطی، پایگاه داده های NoSQL و انبارهای داده طراحی شده است. بنابراین Apache Sqoop  ابزاری در اکوسیستم هدوپ است که برای انتقال داده ها بین HDFS  (ذخیره سازی هدوپ) و سرورهای پایگاه داده ارتباطی مانند  MySQL، Oracle RDB، SQLite، Teradata، Netezza، Postgres  و غیره طراحی شده است.  Apache Sqoop داده ها از پایگاه داده های Relational به HDFS وارد کرده، و داده ها را از HDFS به پایگاه داده های ارتباطی صادر می کند و به صورتی کارآمد حجمی از داده ها را بین هدوپ و داده های خارجی مانند انبار داده های سازمانی، پایگاه های داده رابطه ای و غیره را انتقال می دهد. علاوه بر این، Sqoop  برای وارد کردن داده ها از انبارداده های خارجی به ابزار اکوسیستم هدوپ مانند Hive و HBase استفاده می شود.

شرکت هایی که از هدوپ استفاده می کنند، لازم است برخی از داده های خود را از سیستم های مدیریت پایگاه داده های رابطه ای سنتی (RDBMS ها) به اکوسیستم هدوپ منتقل کنند.

Apache Sqoop بخشی جدایی ناپذیر از هدوپ است که می تواند این انتقال را به صورت خودکار انجام دهد.  علاوه بر این، داده های وارد شده به هدوپ می توانند قبل از صادر شدن به  RDBMSبا MapReduce ، تبدیل شوند.  Apache Sqoop همچنین می تواند کلاس های Java را برای ارتباطات برنامه نویسی با داده های وارد شده ایجاد کند.

Apache Sqoop از معماری مبتنی بر اتصال استفاده می کند که اجازه می دهد تا از پلاگین ها برای اتصال با پایگاه داده های خارجی استفاده کند.

ویژگی‌های کلیدی Apache Sqoop

Sqoop  ویژگی های برجسته بسیاری دارد. مانند:

  • بارگذاری کامل: آپاچی Sqoop می تواند تمام جدول را با تنها یک فرمان بارگذاری کند.  شما همچنین می توانید تمام جداول یک پایگاه داده را با استفاده از تنها یک فرمان بارگذاری کنید.
  • بارگیری افزایشی: آپاچی Sqoop همچنین امکان بارگیری افزایشی را فراهم می کند که در آن می توانید بخشی از جدول را هر زمان که به روز رسانی انجام می شود، بارگیری کنید.
  • وارد/ صادر کردن موازی: Sqoop  از چارچوب YARN برای وارد و صادر کردن داده ها استفاده می کند که تحمل خطا را در سطوح بالای موازی سازی فراهم می سازد.
  • وارد کردن نتایج پرس و جو (query) SQL : شما همچنین می توانید نتیجه یک پرس و جو SQL را در HDFS وارد کنید.
  • فشرده سازی : شما می توانید داده های خود را با استفاده از الگوریتم فشرده سازی (gzip) با آرگومان – compress ، یا با مشخص کردن آرگومان compress-codec فشرده کنید. همچنین می توانید جدول فشرده را در Apache Hive بارگذاری کنید.
  • اتصالاتی برای تمام پایگاه های اصلی پایگاه داده های RDBMS: Apache Sqoop اتصالاتی برای پایگاه های داده های متعدد  RDBMSکه تقریبا تمام محیط را پوشش می دهند، فراهم می کند.
  • یکپارچه سازی امنیت: Kerberos Kerberos  یک پروتکل تصدیق شبکه کامپیوتری است که براساس «ticket» کار می کند که به گره ها اجازه ی برقراری ارتباط در یک شبکه غیر امن را می دهد تا هویت خود را به یک دیگر ثابت کنند.  Sqoop  از تایید هویت Kerberos پشتیبانی می کند.
  • بارگذاری داده ها به طور مستقیم به HIVE / Hbase : شما می توانید داده ها را به طور مستقیم به Apache Hive بارگیری کنید و همچنین اطلاعات خود را در HBase، که یک پایگاه داده NoSQL است، بارگذاری کنید.
  • پشتیبانی از Accumulo : همچنین شما می توانید Sqoop را برای وارد کردن جدول در Accumulo به جای یک دایرکتوری در HDFS تعلیم دهید.

این معماری است که Apache Sqoop را با این مزایا توانمند می کند.  اکنون که ویژگی های Apache Sqoop را می دانیم ، می توانیم جلوتر رفته و به معماری و کار با آن بپردازیم.

معماری Apache Sqoop

اجازه دهید با استفاده از نمودار زیر ببینیم Apache Sqoop چگونه کار می کند:

ابزار وارد کردن، جداول جداگانه را از RDBMS به HDFS وارد می کند.  هر سطر در یک جدول به عنوان یک رکورد در HDFS  پردازش می شود.

وقتی فرمان Sqoop را قبول می کنیم، وظیفه اصلی ما به وظایف زیر تقسیم می شود که توسط Map Task منحصر بفردی بصورت داخلی انجام می شود.  Map Task یک زیر- وظیفه است که بخشی از داده ها را به اکوسیستم هدوپ وارد می کند.  به طور کلی، تمام Map Task ها کلیه داده ها را وارد می کنند.

صادر کردن نیز به شیوه ای مشابه انجام می شود. ابزار صادر کردن مجموعه فایل هایی از HDFS را به یک RDBMS منتقل می کند.  فایل هایی که به عنوان ورودی به Sqoop داده می شوند شامل پرونده هایی هستند که به عنوان ردیف در جدول نامیده می شوند. هنگامی که ما وظیفه خود را انجام می دهیم، آن در Map Task ها که بخش هایی از داده های HDFS را می دهد، ثبت می شود.  این بخش ها به مقصد داده ساختار یافته داده، صادر می شوند. با ترکیب تمام این قطعات صادر شده داده ها، تمام اطلاعات را در مقصد دریافت می کنیم، که در بیشتر موارد یک (MYSQL / Oracle / SQL Server) RDBMS است.

فاز کاهش هنگام انبوه سازی مورد نیاز است اما Sqoop فقط داده ها را وارد و صادر کرده وهیچ گونه انبوه سازی انجام نمی دهد. نقشه کار، چند نقشه بردار را بسته به تعداد تعیین شده توسط کاربر، روانه می کند.  برای وارد کردن در  Sqoop، هر وظیفه نقشه برداری به یک قسمت از اطلاعات، معین می شود تا آن را وارد کند. Sqoop  داده های ورودی را میان نقشه بردارها به طور مساوی و برای به دست آوردن بالاترین عملکرد، توزیع می کند.  سپس هر نقشه بردار اتصالی با پایگاه داده با استفاده از JDBC ایجاد می کند و بخشی از اطلاعات اختصاص داده شده توسط Sqoop را می یابد و آن را در HDFS  ،Hive  یا HBase بر اساس آرگومان های ارائه شده در CLI می نویسد.

نویسنده نوشته: N.M

N.M

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *