Hadoop مقابل Spark: ما الفرق بينهما؟

27 مايو 2021

القراءة لمدة 5 دقائق

مؤلف

IBM Cloud Education Team

IBM Cloud Education

البنى الخاصة بـ Hadoop وSpark، وكيف تتم مقارنة أطر عمل البيانات الكبيرة في سياقات متعددة وسيناريوهات تناسب كل حل.

إن كلًّا من Hadoop وSpark، اللذَين تم تطويرهما بواسطة مؤسسة Apache Software Foundation، إطار عمل مفتوح المصدر ومستخدم على نطاق واسع لبنى البيانات الكبيرة، فكل إطار عمل يحتوي على نظام بنائي شامل من التقنيات مفتوحة المصدر التي تُعد، وتُعالج، وتدير، وتحلِّل مجموعات البيانات الكبيرة.

 

 
ما هو Apache Hadoop؟

Apache Hadoop هو أداة برمجية مفتوحة المصدر تتيح للمستخدمين إدارة مجموعات البيانات الكبيرة (من الجيجابايت إلى البيتابايت) من خلال تمكين شبكة من الحواسيب (أو "العقد") من حل المشكلات الكبيرة والمعقدة للبيانات. فهو حل قابل للتوسع، ومرن للغاية، وفعال من حيث التكلفة، فهو يقوم بتخزين ومعالجة البيانات المنظمة، وشبه المنظمة، وغير المنظمة (مثل سجلات تدفق النقرات على الإنترنت، وسجلات خادم الويب، وبيانات أجهزة استشعار إنترنت الأشياء (IOT)، وما إلى ذلك).

تشمل ميزات إطار عمل Hadoop ما يلي:

  • حماية البيانات في حالة حدوث عطل في الأجهزة
  • قابلية التوسع بشكل هائل؛ من خادم واحد إلى آلاف الأجهزة
  • تحليلات في الوقت الفعلي للتحليلات التاريخية وعمليات اتخاذ القرار
ما هو Apache Spark؟

Apache Spark — وهو مفتوح المصدر أيضًا — هو محرك لمعالجة البيانات لمجموعات البيانات الكبيرة. مثل Hadoop، يقوم Spark بتقسيم المهام الكبيرة عبر عقد مختلفة. ومع ذلك، يميل إلى الأداء بشكل أسرع من Hadoop، ويستخدم ذاكرة الوصول العشوائي (RAM) لتخزين ومعالجة البيانات بدلًا من نظام الملفات. وهذا يمكّن Spark من التعامل مع حالات استخدام لا يستطيع Hadoop التعامل معها.

تشمل ميزات إطار عمل Spark ما يلي:

النظام البنائي لـ Hadoop

يدعم Hadoop التحليلات المتقدمة للبيانات المخزنة (مثل التحليل التنبؤي، استخراج البيانات، التعلم الآلي (ML)، وما إلى ذلك). يتيح تقسيم مهام معالجة تحليلات البيانات الكبيرة إلى مهام أصغر، وتُنفَّذ المهام الصغيرة بالتوازي باستخدام خوارزمية (مثل MapReduce)، ثم يتم توزيعها عبر مجموعة Hadoop (أي العقد التي تقوم بالحسابات المتوازية على مجموعات البيانات الكبيرة).

يتكون نظام Hadoop البنائي من أربع وحدات رئيسية:

  1. Hadoop Distributed File System (HDFS): نظام التخزين الرئيسي للبيانات الذي يدير مجموعات البيانات الكبيرة بكفاءة عالية، مستفيدًا من أحدث تقنيات الأجهزة، كما يوفر الوصول إلى البيانات ذات الإنتاجية العالية والتسامح الكبير مع الأخطاء.
  2. Yet Another Resource Negotiator (YARN): مدير موارد المجموعة الذي يقوم بجدولة المهام وتخصيص الموارد (مثل وحدة المعالجة المركزية والذاكرة) للتطبيقات.
  3. Hadoop MapReduce: يقوم بتقسيم مهام معالجة البيانات الكبيرة إلى مهام أصغر، ويقوم بتوزيع المهام الصغيرة عبر العقد المختلفة، ثم يقوم بتشغيل كل مهمة.
  4. Hadoop Common (Hadoop Core): هو مجموعة من المكتبات والأدوات المشتركة التي تعتمد عليها الوحدات الثلاث الأخرى.
النظام البنائي لـ Spark

يُمثل Apache Spark، وهو أكبر مشروع مفتوح المصدر في معالجة البيانات، الإطار الوحيد للمعالجة الذي يجمع بين البيانات والذكاء الاصطناعي (AI). وهذا يمكّن المستخدمين من إجراء تحويلات وتحليلات البيانات على نطاق واسع، ثم تشغيل خوارزميات التعلم الآلي (ML) والذكاء الاصطناعي (AI) المتقدمة.

يتكون النظام Spark البنائي من خمس وحدات رئيسية:

  1. Spark Core: هو المحرك الأساسي للتنفيذ الذي يقوم بجدولة المهام وإرسالها وتنسيق عمليات الإدخال والإخراج (I/O).
  2. Spark SQL: يجمع المعلومات عن البيانات المنظمة لتمكين المستخدمين من تحسين معالجة البيانات المنظمة.
  3. Spark Streaming and Structured Streaming: كلاهما يضيف قدرات معالجة البث. يتولى Spark Streaming معالجة البيانات من مصادر البث المختلفة ويقسمها إلى دفعات صغيرة لتمكين البث المستمر. يعتمد Structured Streaming على Spark SQL لتقليل زمن الانتقال وتبسيط البرمجة.
  4. Machine Learning Library (MLlib): هي مجموعة من خوارزميات التعلم الآلي تتيح قابلية التوسع، بالإضافة إلى أدوات لاختيار الميزات وبناء مسارات التعلم الآلي. إن واجهة برمجة التطبيقات الأساسية في MLlib هي DataFrames، التي توفر التوحيد والاتساق عبر لغات البرمجة المختلفة مثل Java، وScala، وPython.
  5. GraphX: هو محرك حوسبة سهل الاستخدام يتيح بناء، وتعديل، وتحليل البيانات الهيكلية التفاعلية القابلة للتوسع.
مقارنة بين Hadoop وSpark

Spark هو تحسين Hadoop لنظام MapReduce، فالفارق الأساسي بين Spark وMapReduce يكمن في أن Spark يعالج البيانات ويحتفظ بها في الذاكرة للخطوات اللاحقة، في حين يعالج MapReduce البيانات على القرص. ونتيجةً لذلك، بالنسبة إلى أعباء العمل الأصغر، تكون سرعات معالجة البيانات لـ Spark أسرع بما يصل إلى 100 مرة أكثر من MapReduce (محتوى الرابط موجود خارج موقع ibm.com).

علاوة على ذلك، وبعكس عملية التنفيذ ذات المرحلتَين في MapReduce، ينشئ Spark الرسم البياني باتجاه واحد (DAG) لجدولة المهام وتنسيق العقد عبر مجموعة Hadoop. فهذه العملية لتتبع المهام تتيح التسامح مع الأخطاء، فتتم إعادة تطبيق العمليات المسجلة على البيانات من حالة سابقة.

لنلقِ نظرة فاحصة على الفروقات الرئيسية بين Hadoop وSpark في ستة سياقات حاسمة:

  1. الأداء: Spark أسرع لأنه يستخدم ذاكرة الوصول العشوائي (RAM) بدلًا من قراءة وكتابة البيانات الوسيطة على الأقراص، بينما يُخزِّن Hadoop البيانات في مصادر متعددة ويعالجها على دفعات عبر MapReduce.
  2. التكلفة يعمل Hadoop بتكلفة أقل لأنه يعتمد على أي نوع من أنواع تخزين القرص لمعالجة البيانات. بينما يعمل Spark بتكلفة أعلى لأنه يعتمد على الحوسبة في الذاكرة لمعالجة البيانات في الوقت الفعلي، وهو ما يتطلب استخدام كميات كبيرة من ذاكرة الوصول العشوائي لتشغيل العقد.
  3. المعالجة: بالرغم من أن كلتَا المنصتَين تعالج البيانات في بيئة موزعة، إلا إن Hadoop مثالي لمعالجة الدُفعات ومعالجة البيانات الخطية، وSpark مثالي لمعالجة البيانات في الوقت الفعلي ومعالجة تدفقات البيانات المباشرة غير المنظمة.
  4. القابلية للتوسع: عندما يزداد حجم البيانات بسرعة، يمكن لـ Hadoop التوسع بسرعة لتلبية الطلب عبر Hadoop Distributed File System (HDFS). وبالمقابل، يعتمد Spark على نظام HDFS القابل للتسامح مع الأخطاء لمعالجة كميات كبيرة من البيانات.
  5. الأمن: يعزز Spark الأمن من خلال التحقق من الهوية باستخدام سر مشترك أو تسجيل الأحداث، بينما يستخدم Hadoop طرقًا متعددة للتحقق من الهوية والتحكم في الوصول. ورغم أن Hadoop أكثر أمانًا بشكل عامّ، فإنه يمكن لـ Spark التكامل مع Hadoop لتحقيق مستوى أعلى من الأمن.
  6. التعلم الآلي: إن Spark هو المنصة الأفضل في هذه الفئة لأنه يتضمن مكتبة MLlib التي تنفِّذ عمليات التعلم الآلي التكرارية في الذاكرة، كما يتضمن أدوات تنفِّذ عمليات الانحدار، والتصنيف، والاستمرار، وبناء خطوط العمل، والتقييم، وغيرها.
المفاهيم الخاطئة حول Hadoop وSpark

المفاهيم الخاطئة الشائعة حول Hadoop

  • Hadoop غير مكلف: رغم أنه مفتوح المصدر وسهل الإعداد، فإن الحفاظ على تشغيل الخادم يمكن أن يكون مكلفًا. فعند استخدام ميزات مثل الحوسبة في الذاكرة والتخزين الشبكي، يمكن أن تصل تكلفة إدارة البيانات الكبيرة إلى 5000 دولار أمريكي.
  • Hadoop هو قاعدة بيانات: على الرغم من أن Hadoop يستخدم لتخزين، وإدارة، وتحليل البيانات الموزعة، إلا إنه لا يتم إجراء استعلامات عند استرجاع البيانات. وهذا يجعل Hadoop مستودع بيانات وليس قاعدة بيانات.
  • Hadoop لا يساعد الأعمال الصغيرة والمتوسطة (SMBs): "البيانات الكبيرة" ليست حصرية للشركات الكبيرة. يتضمن Hadoop ميزات بسيطة، مثل إعداد التقارير في Excel والتي تمكِّن الشركات الصغيرة من الاستفادة من قوته. فامتلاك واحدة أو اثنتين من مجموعات Hadoop يعزز بشكل كبير أداء الشركات الصغيرة.
  • Hadoop صعب الإعداد: على الرغم من أن إدارة Hadoop تكون صعبة في المستويات العليا، إلا إن هناك العديد من واجهات المستخدم الرسومية (GUIs) التي تبسط البرمجة لنظام MapReduce.

المفاهيم الخاطئة الشائعة حول Spark

  • Spark هو تقنية تعتمد على الذاكرة: على الرغم من أن Spark يستخدم بفاعلية الخوارزمية الأقل استخدامًا حديثًا (LRU)، إلا إنه ليس تقنية تعتمد على الذاكرة في حد ذاتها.
  • Spark دائمًا أسرع 100 مرة من Hadoop: على الرغم من أن Spark يمكن أن يكون أسرع حتى 100 مرة من Hadoop للأعمال الصغيرة، فوفقًا لـ Apache، فإنه عادةً ما يكون أسرع حتى 3 مرات للأعمال الكبيرة (محتوى الرابط موجود خارج موقع ibm.com).
  • يقدم Spark تقنيات جديدة في معالجة البيانات: على الرغم من أن Spark يستفيد بشكل فعال من خوارزمية LRU ويقوم بتسلسل معالجة البيانات، إلا إن هذه الإمكانيات كانت موجودة سابقًا في قواعد بيانات المعالجة المتوازية بشكل ضخم (MPP). ومع ذلك، فإن ما يميز Spark عن MPP هو التوجيه مفتوح المصدر.
حالات الاستخدام في Hadoop وSpark

استنادًا إلى التحليلات المقارنة والمعلومات الواقعية المقدمة أعلاه، فإن الحالات التالية توضح بشكل أفضل قابلية استخدام Hadoop مقابل Spark.

حالات استخدام Hadoop

Hadoop هو الأكثر فعاليةً في السيناريوهات التي تشمل ما يلي:

  • معالجة مجموعات البيانات الكبيرة في بيئات يتجاوز فيها حجم البيانات الذاكرة المتاحة.
  • معالجة الدفعات باستخدام مهام تستغل عمليات القراءة والكتابة على الأقراص
  • بناء بنية تحتية لتحليل البيانات بميزانية محدودة
  • إنجاز المهام التي لا تعتمد على الوقت
  • تحليل البيانات التاريخية والأرشيفية.

حالات استخدام Spark

Spark هو الأكثر فعاليةً في السيناريوهات التي تشمل ما يلي:

  • التعامل مع سلاسل العمليات المتوازية باستخدام الخوارزميات التكرارية.
  • تحقيق نتائج سريعة من خلال الحوسبة داخل الذاكرة
  • تحليل البيانات المتدفقة في الوقت الفعلي
  • معالجة الرسوم البيانية الموازية لنمذجة البيانات
  • جميع تطبيقات التعلم الآلي
Hadoop، وSpark، وIBM

تقدم IBM منتجات متعددة لمساعدتك على الاستفادة من مزايا Hadoop وSpark في تحسين مبادرات إدارة البيانات الكبيرة مع تحقيق أهداف عملك الشاملة:

  • IBM Spectrum Conductor هو منصة متعددة المستأجرين تقوم بنشر وإدارة Spark مع أطر عمل تطبيقات أخرى على مجموعة مشتركة من الموارد. يوفر Spectrum Conductor إدارة أعباء العمل، والمراقبة، والتنبيه، والتقارير، والتشخيصات، ويمكنه تشغيل نسخ متعددة حالية ومختلفة من Spark وأطر العمل الأخرى بشكل متزامن.
  • IBM Db2 Big SQL هو محرك SQL مختلط على Hadoop يقدم اتصالًا واحدًا بقاعدة البيانات، ويوفر استعلامات بيانات متقدمة وآمنة عبر مصادر البيانات الكبيرة، مثل HDFS Hadoop، والبيانات العلائقية (RDMS)،  وقواعد البيانات NoSQL ، ومستودعات الكائنات. يستفيد المستخدمون من زمن الانتقال المنخفض، والأداء العالي، وأمان البيانات، وتوافق SQL، والقدرات المشتركة للاستعلامات العارضة والمعقدة.
  • IBM Big Replicate يوحد مجموعات Hadoop العاملة على Cloudera Data Hub، وHortonworks Data Platform، وIBM، وAmazon S3 وEMR، وMicrosoft Azure، وOpenStack Swift، وGoogle Cloud Storage. يوفر Big Replicate مساحة افتراضية واحدة عبر المجموعات وتخزين الكائنات السحابية على أي مسافة.
الرسائل الإخبارية من IBM

احصل على أحدث الرؤى التقنية والأفكار القيادية من الخبراء في صندوق الوارد لديك.

الرسائل الإخبارية من IBM

يمكنك تلقِّي رسائلنا الإخبارية وآخر التحديثات التي تقدم أحدث الرؤى والأفكار القيادية بشأن التوجهات الناشئة.

اشترك الآن المزيد من الرسائل الإخبارية