Spark vs Hadoop: ما هو أفضل إطار عمل للبيانات الضخمة؟



يتحدث منشور المدونة هذا عن أباتشي سبارك مقابل هادوب. سيعطيك فكرة عن إطار عمل البيانات الضخمة المناسب للاختيار في سيناريوهات مختلفة.

سأبدأ مدونة Apache Spark vs Hadoop من خلال تقديم Hadoop و Spark أولاً لتعيين السياق المناسب لكلا الإطارين. بعد ذلك ، سنقارن بين أطر عمل البيانات الضخمة وفقًا لمعايير مختلفة لتحليل نقاط القوة والضعف فيها.ولكن ، مهما كانت نتيجة المقارنة ، يجب أن تعلم أن كلاً من Spark و Hadoop هما مكونان أساسيان في .

Apache Spark vs Hadoop: مقدمة إلى Hadoop

Hadoop هو إطار عمل يسمح لك أولاً بتخزين البيانات الضخمة في بيئة موزعة بحيث يمكنك معالجتها بشكل متوازي. هناك مكونان أساسيان في Hadoop:





HDFS

HDFS يخلق فكرة مجردة من الموارد ، اسمحوا لي أن أبسطها لك. على غرار المحاكاة الافتراضية ، يمكنك رؤية HDFS منطقيًا كوحدة واحدة لتخزين البيانات الضخمة ، لكنك في الواقع تقوم بتخزين بياناتك عبر عقد متعددة بطريقة موزعة. هنا ، لديك هندسة معمارية السيد والعبد. في HDFS ، تعتبر Namenode عقدة رئيسية و Datanodes عبارة عن عبيد.

NameNode

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



على سبيل المثال ، إذا تم حذف ملف في HDFS ، فسيقوم NameNode بتسجيل هذا على الفور في EditLog. يتلقى بانتظام تقرير نبضات القلب وتقرير كتلة من جميع DataNodes في المجموعة لضمان أن DataNodes حية. يحتفظ بسجل لجميع الكتل في HDFS والعقد التي يتم تخزين هذه الكتل فيها.

داتاينود

هذه هي شياطين العبيد التي تعمل على كل آلة رقيق. يتم تخزين البيانات الفعلية على DataNodes. هم مسؤولون عن تقديم طلبات القراءة والكتابة من العملاء. كما أنهم مسؤولون عن إنشاء الكتل وحذف الكتل وتكرارها بناءً على القرارات التي يتخذها NameNode.

HDFS - Apache Spark vs Hadoop - Edurekaغزل

تقوم YARN بتنفيذ جميع أنشطة المعالجة الخاصة بك عن طريق تخصيص الموارد وجدولة المهام. لها شيطانان رئيسيان ، أي مدير موارد و NodeManager .



مدير موارد

إنه مكون على مستوى الكتلة (واحد لكل مجموعة) ويعمل على الجهاز الرئيسي. يدير الموارد وجدولة التطبيقات التي تعمل على رأس YARN.

كيفية استخدام فئة الماسح الضوئي

NodeManager

إنه مكون على مستوى العقدة (واحد على كل عقدة) ويعمل على كل جهاز تابع. وهي مسؤولة عن إدارة الحاويات ومراقبة استخدام الموارد في كل حاوية. كما أنه يتتبع صحة العقدة وإدارة السجل. يتواصل باستمرار مع ResourceManager ليبقى محدثًا. لذلك ، يمكنك إجراء معالجة متوازية على HDFS باستخدام MapReduce.

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

Apache Spark vs Hadoop: مقدمة إلى Apache Spark

Apache Spark هو إطار عمل لتحليلات البيانات في الوقت الفعلي في بيئة الحوسبة الموزعة. ينفذ عمليات حسابية في الذاكرة لزيادة سرعة معالجة البيانات. إنه أسرع في معالجة البيانات واسعة النطاق لأنه يستغل العمليات الحسابية في الذاكرة والتحسينات الأخرى. لذلك ، يتطلب طاقة معالجة عالية.

مجموعة البيانات الموزعة المرنة (RDD) هي بنية بيانات أساسية لـ Spark. إنها مجموعة موزعة ثابتة من الكائنات. تنقسم كل مجموعة بيانات في RDD إلى أقسام منطقية ، والتي يمكن حسابها على عقد مختلفة من الكتلة. يمكن أن تحتوي RDDs على أي نوع من كائنات Python أو Java أو Scala ، بما في ذلك الفئات المعرفة من قبل المستخدم. مكونات الشرارة تجعلها سريعة وموثوقة. يحتوي Apache Spark على المكونات التالية:

  1. سبارك كور - Spark Core هو المحرك الأساسي لمعالجة البيانات المتوازية والموزعة على نطاق واسع. علاوة على ذلك ، تتيح المكتبات الإضافية التي تم إنشاؤها فوق النواة أعباء عمل متنوعة للدفق و SQL والتعلم الآلي. وهي مسؤولة عن إدارة الذاكرة واسترداد الأخطاء وجدولة وتوزيع ومراقبة الوظائف على مجموعة والتفاعل مع أنظمة التخزين
  2. شرارة الجري - Spark Streaming هو مكون Spark الذي يستخدم لمعالجة بيانات التدفق في الوقت الفعلي. وبالتالي ، فهي إضافة مفيدة لواجهة Spark API الأساسية. إنه يتيح معالجة دفق عالية الإنتاجية ومتسامحة مع الأخطاء لتدفقات البيانات الحية
  3. شرارة SQL : Spark SQL هي وحدة نمطية جديدة في Spark تدمج المعالجة العلائقية مع واجهة برمجة تطبيقات البرمجة الوظيفية لـ Spark. وهو يدعم الاستعلام عن البيانات إما عن طريق SQL أو عبر Hive Query Language. بالنسبة لمن هم على دراية بـ RDBMS ، سيكون Spark SQL انتقالًا سهلاً من أدواتك السابقة حيث يمكنك توسيع حدود معالجة البيانات العلائقية التقليدية.
  4. جرافكس : GraphX ​​هي واجهة برمجة تطبيقات Spark للرسوم البيانية والحساب المتوازي للرسم البياني. وبالتالي ، فإنه يوسع Spark RDD برسم بياني ممتلكات موزع مرن. على مستوى عالٍ ، تقوم GraphX ​​بتوسيع تجريد Spark RDD من خلال تقديم الرسم البياني المرنة للخاصية الموزعة: رسم بياني متعدد موجه بخصائص مرتبطة بكل قمة وحافة.
  5. MLlib (التعلم الآلي): يرمز MLlib إلى مكتبة التعلم الآلي. يستخدم Spark MLlib لأداء التعلم الآلي في Apache Spark.

كما ترى ، يأتي Spark مليئًا بالمكتبات عالية المستوى ، بما في ذلك دعم R و SQL و Python و Scala و Java وما إلى ذلك. تزيد هذه المكتبات القياسية من عمليات الدمج السلس في سير العمل المعقد. علاوة على ذلك ، فإنه يسمح أيضًا لمجموعات مختلفة من الخدمات بالتكامل معها مثل MLlib و GraphX ​​و SQL + Data Frames وخدمات البث وما إلى ذلك لزيادة قدراتها.

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

Apache Spark vs Hadoop: معلمات للمقارنة

أداء

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

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

تكمن مشكلة المقارنة بين الاثنين في أنهما يؤديان المعالجة بشكل مختلف.

ما هي عوامل تصفية السياق في اللوحة

سهولة الاستعمال

يأتي Spark مع واجهات برمجة تطبيقات سهلة الاستخدام لـ Scala و Java و Python و Spark SQL. يشبه Spark SQL إلى حد كبير SQL ، لذلك يصبح من السهل على مطوري SQL تعلمه. يوفر Spark أيضًا غلافًا تفاعليًا للمطورين للاستعلام عن الإجراءات الأخرى وتنفيذها ، والحصول على تعليقات فورية.

يمكنك استيعاب البيانات في Hadoop بسهولة إما عن طريق استخدام shell أو دمجها مع أدوات متعددة مثل Sqoop و Flume وما إلى ذلك. YARN هو مجرد إطار معالجة ويمكن دمجه مع أدوات متعددة مثل Hive and Pig. HIVE هو مكون تخزين البيانات الذي يقوم بقراءة وكتابة وإدارة مجموعات البيانات الكبيرة في بيئة موزعة باستخدام واجهة تشبه SQL. يمكنك الذهاب من خلال هذا النظام البيئي Hadoop مدونة للتعرف على الأدوات المختلفة التي يمكن دمجها مع Hadoop.

التكاليف

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

الآن قد تتساءل عن الطرق التي يختلفون بها. التخزين والمعالجة في Hadoop يعتمد على القرص ويستخدم Hadoop كميات قياسية من الذاكرة. لذلك ، مع Hadoop ، نحتاج إلى مساحة كبيرة على القرص بالإضافة إلى أقراص أسرع. يتطلب Hadoop أيضًا أنظمة متعددة لتوزيع القرص I / O.

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

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

معالجة البيانات

هناك نوعان من معالجة البيانات: معالجة الدُفعات ومعالجة الدفق.

معالجة الدُفعات مقابل معالجة البث

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

تعد المعالجة الدفعية طريقة فعالة لمعالجة مجموعات البيانات الكبيرة الثابتة. بشكل عام ، نقوم بمعالجة الدُفعات لمجموعات البيانات المؤرشفة. على سبيل المثال ، حساب متوسط ​​الدخل لبلد ما أو تقييم التغيير في التجارة الإلكترونية في العقد الماضي.

معالجة الدفق : معالجة الدفق هو الاتجاه الحالي في عالم البيانات الضخمة. الحاجة إلى الساعة هي السرعة والمعلومات في الوقت الفعلي ، وهو ما تفعله معالجة البخار. لا تسمح معالجة الدُفعات للشركات بالاستجابة بسرعة لاحتياجات العمل المتغيرة في الوقت الفعلي ، وقد شهدت معالجة التدفق نموًا سريعًا في الطلب.

نعود الآن إلى Apache Spark vs Hadoop ، YARN هو في الأساس إطار عمل لمعالجة الدُفعات. عندما نقدم وظيفة إلى YARN ، فإنها تقرأ البيانات من الكتلة وتنفذ العملية وتعيد كتابة النتائج إلى المجموعة. ثم يقرأ البيانات المحدثة مرة أخرى ، وينفذ العملية التالية ويكتب النتائج مرة أخرى إلى المجموعة وهكذا.

يقوم Spark بإجراء عمليات مماثلة ، لكنه يستخدم المعالجة في الذاكرة ويحسن الخطوات. يسمح GraphX ​​للمستخدمين بمشاهدة نفس البيانات مثل الرسوم البيانية والمجموعات. يمكن للمستخدمين أيضًا تحويل الرسوم البيانية والانضمام إليها باستخدام مجموعات البيانات الموزعة المرنة (RDDs).

التسامح مع الخطأ

يوفر كل من Hadoop و Spark التسامح مع الخطأ ، لكن كلاهما لهما نهج مختلف. بالنسبة إلى كل من HDFS و YARN ، تتحقق الشياطين الرئيسية (أي NameNode & ResourceManager على التوالي) من نبضات قلب عفاريت الرقيق (أي DataNode & NodeManager على التوالي). في حالة فشل أي برنامج خفي للرقيق ، يعيد البرنامج الخفي الرئيسي جدولة جميع العمليات المعلقة وقيد التنفيذ إلى تابع آخر. هذه الطريقة فعالة ، لكنها يمكن أن تزيد بشكل كبير من أوقات إكمال العمليات مع فشل واحد أيضًا. نظرًا لأن Hadoop يستخدم أجهزة سلعة ، فإن الطريقة الأخرى التي يضمن بها HDFS التسامح مع الخطأ هي نسخ البيانات.

كما ناقشنا أعلاه ، RDDs هي لبنات بناء Apache Spark. توفر RDDs التسامح مع الخطأ لـ Spark. يمكنهم الرجوع إلى أي مجموعة بيانات موجودة في نظام التخزين الخارجي مثل HDFS و HBase ونظام الملفات المشترك. يمكن تشغيلها بشكل متوازي.

يمكن أن تستمر RDDs في الاحتفاظ بمجموعة بيانات في الذاكرة عبر العمليات ، مما يجعل الإجراءات المستقبلية أسرع 10 مرات. في حالة فقدان RDD ، ستتم إعادة حسابه تلقائيًا باستخدام التحويلات الأصلية. هذه هي الطريقة التي يوفر بها Spark التسامح مع الخطأ.

الأمان

يدعم Hadoop Kerberos للمصادقة ، ولكن من الصعب التعامل معه. ومع ذلك ، فإنه يدعم أيضًا موردي الجهات الخارجية مثل LDAP (بروتوكول الوصول الخفيف إلى الدليل) للمصادقة. كما أنها توفر التشفير. يدعم HDFS أذونات الملفات التقليدية ، بالإضافة إلى قوائم التحكم في الوصول (ACL). يوفر Hadoop تفويضًا على مستوى الخدمة ، والذي يضمن أن العملاء لديهم الأذونات الصحيحة لتقديم الوظيفة.

يدعم Spark حاليًا المصادقة عبر سر مشترك. يمكن أن يتكامل Spark مع HDFS ويمكنه استخدام قوائم HDFS ACL والأذونات على مستوى الملف. يمكن أيضًا تشغيل Spark على YARN بالاستفادة من قدرة Kerberos.

حالات الاستخدام حيث يناسب Hadoop بشكل أفضل:

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

حالات الاستخدام التي يناسبها Spark بشكل أفضل:

تحليل البيانات الضخمة في الوقت الفعلي:

يعني تحليل البيانات في الوقت الفعلي معالجة البيانات الناتجة عن تدفقات الأحداث في الوقت الفعلي القادمة بمعدل ملايين الأحداث في الثانية ، بيانات Twitter على سبيل المثال. تكمن قوة Spark في قدرتها على دعم تدفق البيانات إلى جانب المعالجة الموزعة. هذه تركيبة مفيدة توفر معالجة شبه فورية للبيانات. تم إعاقة MapReduce لمثل هذه الميزة حيث تم تصميمها لأداء المعالجة الموزعة للدفعات على كميات كبيرة من البيانات. لا يزال من الممكن معالجة البيانات في الوقت الفعلي على MapReduce ولكن سرعتها لا تقترب من سرعة Spark.

يدعي Spark أنه يعالج البيانات أسرع 100 مرة من MapReduce ، بينما أسرع بـ 10x مع الأقراص.

معالجة الرسم البياني:

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

أيضًا ، يتطلب تمرير الرسالة عشرات العقد المجاورة من أجل تقييم درجة عقدة معينة. تحتاج هذه الحسابات إلى رسائل من جيرانها (أو بيانات عبر مراحل متعددة من العمل) ، وهي آلية تفتقر إليها MapReduce. تم تصميم أدوات معالجة الرسوم البيانية المختلفة مثل Pregel و GraphLab من أجل تلبية الحاجة إلى نظام أساسي فعال لخوارزميات معالجة الرسم البياني. هذه الأدوات سريعة وقابلة للتطوير ، ولكنها ليست فعالة لإنشاء ومعالجة ما بعد هذه الخوارزميات المعقدة متعددة المراحل.

أدى إدخال Apache Spark إلى حل هذه المشكلات إلى حد كبير. يحتوي Spark على مكتبة لحساب الرسم البياني تسمى GraphX ​​والتي تبسط حياتنا. يعمل الحساب في الذاكرة جنبًا إلى جنب مع دعم الرسم البياني المدمج على تحسين أداء الخوارزمية بمقدار درجة أو درجتين مقارنة ببرامج MapReduce التقليدية. يستخدم Spark مزيجًا من Netty و Akka لتوزيع الرسائل عبر المنفذين. دعونا نلقي نظرة على بعض الإحصائيات التي تصور أداء خوارزمية PageRank باستخدام Hadoop و Spark.

خوارزميات التعلم الآلي التكرارية:

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

كيفية استخدام استبدال في جافا

يحتوي Spark على مكتبة تعلم آلي مدمجة قابلة للتطوير تسمى MLlib والتي تحتوي على خوارزميات عالية الجودة تستفيد من التكرارات وتنتج نتائج أفضل من تقديرات التمرير التي تُستخدم أحيانًا في MapReduce.

  • معالجة البيانات بسرعة. كما نعلم ، يسمح Spark بالمعالجة في الذاكرة. ونتيجة لذلك ، فإن Spark أسرع بما يصل إلى 100 مرة للبيانات في ذاكرة الوصول العشوائي وما يصل إلى 10 مرات للبيانات في التخزين.
  • المعالجة المتكررة. تسمح RDDs من Spark بإجراء العديد من عمليات الخرائط في الذاكرة ، دون الحاجة إلى كتابة مجموعات بيانات مؤقتة على القرص.
  • شبه معالجة في الوقت الحقيقي. Spark هي أداة ممتازة لتوفير رؤى تجارية فورية. هذا هو سبب استخدام Spark في نظام البث لبطاقات الائتمان.

'أباتشي سبارك: قاتل أم منقذ لأباتشي هادوب؟'

الجواب على هذا - Hadoop MapReduce و Apache Spark لا يتنافسان مع بعضهما البعض. في الواقع ، يكمل كل منهما الآخر بشكل جيد. يضع Hadoop مجموعات بيانات ضخمة تحت سيطرة أنظمة السلع. يوفر Spark معالجة في الوقت الفعلي داخل الذاكرة لمجموعات البيانات التي تتطلب ذلك. عندما نجمع بين قدرة Apache Spark ، أي سرعة المعالجة العالية والتحليلات المتقدمة ودعم التكامل المتعدد مع عملية Hadoop منخفضة التكلفة على أجهزة السلع ، فإنها تعطي أفضل النتائج. Hadoop يكمل قدرات Apache Spark. لا يمكن أن تحل Spark محل Hadoop تمامًا ولكن الخبر السار هو أن الطلب على Spark في أعلى مستوياته حاليًا! هذا هو الوقت المناسب لإتقان Spark والاستفادة القصوى من الفرص الوظيفية التي تأتي في طريقك. نبدأ الآن!

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

إذا كنت ترغب في تعلم Spark وبناء مهنة في مجال Spark لإجراء معالجة بيانات على نطاق واسع باستخدام RDD و Spark Streaming و SparkSQL و MLlib و GraphX ​​و Scala مع حالات استخدام Real Life ، تحقق من تفاعلنا المباشر عبر الإنترنت هنا، يأتي مع دعم 24 * 7 لإرشادك طوال فترة التعلم.