Apache Spark vs Hadoop Mapreduce - ما تحتاج إلى معرفته
نشرت: 2019-09-05البيانات الضخمة هي مثل الأخ الأكبر الموجود في كل مكان في العالم الحديث. أدت حالات الاستخدام المتزايدة للبيانات الضخمة في مختلف الصناعات إلى ولادة العديد من تقنيات البيانات الضخمة ، والتي يعد Hadoop MapReduce و Apache Spark أكثرها شيوعًا. في حين أن كلا من MapReduce و Spark هما مشروعان رائدان مفتوحان المصدر طورتهما مؤسسة Apache Software Foundation ، إلا أنهما أقوى المتنافسين لبعضهما البعض أيضًا.
في هذا المنشور ، أولاً ، سنتحدث عن إطار عمل MapReduce و Spark ، ثم ننتقل إلى مناقشة الاختلافات الرئيسية بينهما.
ما هي Spark & MapReduce؟
Spark هو إطار عمل للبيانات الضخمة مصمم خصيصًا لتمكين الحساب السريع. إنه بمثابة محرك لمعالجة البيانات للأغراض العامة يمكنه التعامل مع أعباء العمل المختلفة ، بما في ذلك الدُفعات والتفاعلية والتكرارية والتدفق. الميزة الرئيسية لـ Spark هي السرعة - فهي تنفذ العمليات الحسابية في الذاكرة لزيادة سرعة معالجة البيانات. نتيجة لذلك ، فهو يعمل بشكل جيد على مجموعة من عقد الكمبيوتر ويسمح بمعالجة أسرع لمجموعات البيانات الكبيرة.
مجموعة البيانات الموزعة المرنة (RDD) هي بنية البيانات الأولية لـ Spark. RDD عبارة عن مجموعة موزعة ثابتة من الكائنات حيث يتم تقسيم كل عقدة إلى أجزاء أصغر يمكن حسابها على عقد مختلفة من الكتلة. هذا يسهل معالجة البيانات المستقلة داخل الكتلة.
MapReduce هو إطار عمل مفتوح المصدر مصمم لمعالجة كميات هائلة من البيانات في بيئة متوازية وموزعة. يمكنه معالجة البيانات فقط في وضع الدُفعات. هناك نوعان من المكونات الأساسية لبرنامج Hadoop MapReduce - HDFS و YARN.

تتكون برمجة MapReduce من جزأين - Mapper و Reducer. بينما يتولى المخطط مهمة فرز البيانات ، يقوم المخفض بدمج البيانات التي تم فرزها وتحويلها إلى أجزاء أصغر.
أما بالنسبة للاختلاف الأساسي بين هذين الإطارين ، فهو نهجهم الفطري في معالجة البيانات. أثناء معالجة MapReduce البيانات عن طريق القراءة من القرص والكتابة عليه ، يمكن لـ Spark القيام به في الذاكرة. وبالتالي ، فإن Spark تحصل على ميزة على MapReduce - للمعالجة السريعة.
ولكن هل يعني ذلك أن Spark أفضل من MapReduce؟ لسوء الحظ ، فإن النقاش ليس بهذه البساطة. لإلقاء مزيد من الضوء على هذه المشكلة ، سنقوم بتقسيم الاختلافات بينهما نقطة تلو الأخرى.
معالجة البيانات
Spark : كما ذكرنا سابقًا ، يعد Spark أكثر من إطار معالجة مختلط وعامة الأغراض. من خلال الحساب في الذاكرة وتحسين المعالجة ، فإنه يسرع معالجة البيانات في الوقت الحقيقي. إنه ممتاز لتدفق أعباء العمل وتشغيل الاستعلامات التفاعلية وخوارزميات ML. ومع ذلك ، فإن RDD يسمح لـ Spark فقط بتخزين البيانات على القرص مؤقتًا عن طريق كتابة البيانات الحيوية فقط على القرص. لذلك ، يقوم بتحميل عملية في الذاكرة ويحتفظ بها في ذاكرة التخزين المؤقت. هذا يجعل Spark تستهلك الكثير من الذاكرة.
MapReduce : MapReduce هو محرك معالجة الدُفعات الأصلي لـ Hadoop. تتيح مكوناته (HDFS و YARN) معالجة أكثر سلاسة لبيانات الدُفعات. ومع ذلك ، نظرًا لأن معالجة البيانات تتم في عدة خطوات لاحقة ، فإن العملية بطيئة للغاية. ميزة MapReduce هي أنه يسمح بالتخزين الدائم - يخزن البيانات على القرص. هذا يجعلها مناسبة للتعامل مع مجموعات البيانات الضخمة. بمجرد اكتمال المهمة ، تقتل MapReduce عملياتها وبالتالي يمكن تشغيلها في وقت واحد مع الخدمات الأخرى.
سهولة الاستعمال
سبارك : عندما يتعلق الأمر بسهولة الاستخدام ، يأخذ Spark التاج. يأتي مزودًا بالعديد من واجهات برمجة التطبيقات سهلة الاستخدام لـ Scala (اللغة الأصلية) و Java و Python و Spark SQL. نظرًا لأن Spark تسمح بالبث المباشر ومعالجة الدُفعات والتعلم الآلي في نفس المجموعة ، يمكنك بسهولة تبسيط البنية التحتية لمعالجة البيانات وفقًا لاحتياجاتك. يتضمن Spark أيضًا وضع REPL تفاعليًا (حلقة قراءة - تقييم - طباعة) لتشغيل الأوامر التي تقدم ملاحظات سريعة للمستخدمين.
MapReduce : نظرًا لأن Hadoop MapReduce مكتوب بلغة Java ، فإن تعلم بناء الجملة يستغرق وقتًا. ومن ثم ، في البداية ، قد يجد الكثيرون صعوبة كبيرة في البرمجة. على الرغم من أن MapReduce يفتقر إلى الوضع التفاعلي ، إلا أن أدوات مثل Pig and Hive تجعل العمل معه أسهل قليلاً. هناك أدوات أخرى (على سبيل المثال ، Xplenty) يمكنها تشغيل مهام MapReduce دون الحاجة إلى أي برمجة.

التسامح مع الخطأ
Spark : تستخدم Spark نماذج RDD ونماذج تخزين بيانات مختلفة للتسامح مع الأخطاء من خلال تقليل إدخال / إخراج الشبكة. إذا كان هناك فقد في أحد أقسام RDD ، فسيقوم RDD بإعادة إنشاء هذا القسم من المعلومات المخزنة في الذاكرة. وبالتالي ، إذا تعطلت العملية في منتصف الطريق ، فسيتعين على Spark بدء المعالجة من البداية.
MapReduce : بخلاف Spark ، يستخدم MapReduce مفهوم النسخ المتماثل للتسامح مع الخطأ من خلال Node Manager و ResourceManager. هنا ، إذا فشلت العملية في التنفيذ في منتصف الطريق ، ستستمر MapReduce من حيث توقفت ، وبالتالي توفير الوقت.
حماية
سبارك : نظرًا لأن Spark لا تزال في مهدها ، فإن عامل الأمان الخاص بها لم يتم تطويره بشكل كبير. وهو يدعم المصادقة عبر ورقة سرية مشتركة (مصادقة كلمة المرور). أما بالنسبة لواجهة مستخدم الويب ، فيمكن حمايتها من خلال مرشحات javax servlet. تسمح ميزات Spark's YARN و HDFS بمصادقة Kerberos وأذونات على مستوى ملف HDFS والتشفير بين العقد.
MapReduce : يعد MapReduce أكثر تطورًا وبالتالي فهو يتمتع بميزات أمان أفضل من Spark. يتمتع بجميع مزايا الأمان الخاصة بـ Hadoop ويمكن دمجه مع مشاريع Hadoop الأمنية ، بما في ذلك Knox Gateway و Sentry. من خلال موردي الجهات الخارجية الصالحين ، يمكن للمؤسسات استخدام Active Directory Kerberos و LDAP للمصادقة.
يكلف
على الرغم من أن كل من Spark و MapReduce هما مشروعان مفتوحان المصدر ، إلا أن هناك تكاليف معينة يجب أن تتحملها لكليهما. على سبيل المثال ، تطلب Spark كميات كبيرة من ذاكرة الوصول العشوائي لتشغيل المهام في الذاكرة ، ومع مرور الوقت ، تكون ذاكرة الوصول العشوائي أكثر تكلفة من الأقراص الثابتة. على العكس من ذلك ، فإن Hadoop موجه للقرص - بينما لن تحتاج إلى شراء ذاكرة وصول عشوائي باهظة الثمن ، فسيتعين عليك الاستثمار أكثر في أنظمة لتوزيع إدخال / إخراج القرص عبر أنظمة متعددة.
لذلك ، فيما يتعلق بالتكلفة ، فإنه يعتمد إلى حد كبير على متطلبات المنظمة. إذا احتاجت منظمة ما إلى معالجة كميات هائلة من البيانات الضخمة ، فسيكون Hadoop هو الخيار الفعال من حيث التكلفة لأن شراء مساحة على القرص الصلب أرخص بكثير من شراء مساحة ذاكرة موسعة. علاوة على ذلك ، يأتي MapReduce مع مجموعة من عروض Hadoop كخدمة والخدمات المستندة إلى Hadoop التي تسمح لك بتخطي متطلبات الأجهزة والموظفين. مقارنةً بهذا ، لا يوجد سوى عدد قليل من خيارات Spark-as-a-service.

التوافق
بقدر ما يذهب التوافق ، فإن كل من Spark و MapReduce متوافقان مع بعضهما البعض. يمكن دمج Spark بسلاسة مع جميع مصادر البيانات وتنسيقات الملفات التي يدعمها Hadoop. أيضا ، كلاهما قابل للتطوير. لذا ، فإن توافق Spark مع أنواع البيانات ومصادر البيانات يشبه إلى حد كبير توافق Hadoop MapReduce.
كما ترى ، يتمتع كل من Spark و MapReduce بميزات فريدة تميزهما عن بعضهما البعض. على سبيل المثال ، يقدم Spark تحليلات في الوقت الفعلي تفتقر إليها MapReduce ، بينما يأتي MapReduce مع نظام ملفات يفتقر إليه Spark. كلا الإطارين ممتازان بطريقتهما المميزة ، وكلاهما يأتي بمجموعة فريدة من المزايا والعيوب. في النهاية ، يعود الجدل بين Spark و MapReduce إلى احتياجات عملك المحددة ونوع المهام التي ترغب في إنجازها.
إذا كنت مهتمًا بمعرفة المزيد عن البيانات الضخمة ، فراجع دبلومة PG في تخصص تطوير البرمجيات في برنامج البيانات الضخمة المصمم للمهنيين العاملين ويوفر أكثر من 7 دراسات حالة ومشاريع ، ويغطي 14 لغة وأدوات برمجة ، وتدريب عملي عملي ورش العمل ، أكثر من 400 ساعة من التعلم الصارم والمساعدة في التوظيف مع الشركات الكبرى.
تعلم دورات تطوير البرمجيات عبر الإنترنت من أفضل الجامعات في العالم. اربح برامج PG التنفيذية أو برامج الشهادات المتقدمة أو برامج الماجستير لتتبع حياتك المهنية بشكل سريع.
