برنامج Hadoop Partitioner: تعرف على مقدمة ونحو وتنفيذ

نشرت: 2020-05-14

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

دعونا نفهم ما هو Hadoop Partitioner.

جدول المحتويات

ما هو التقسيم في Hadoop؟

يسمح أداة التقسيم بنشر كيفية انتقال المخرجات من مرحلة الخريطة إلى المخفضات.

يتحكم التقسيم في الجزء الرئيسي لمخرجات الخريطة الوسطى. يتم استخدام المفتاح أو مجموعة فرعية من المفتاح لاستنتاج القسم بواسطة دالة تجزئة.

في واقع الأمر ، فإن بنية Hadoop عبارة عن قسم قائم على التجزئة. تساعد وظيفة التجزئة هذه في Hadoop في اشتقاق القسم.

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

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

دعونا نرى لماذا هناك حاجة إلى Hadoop Partitioner.

ما هي الحاجة إلى قسم Hadoop؟

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

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

يسمح تجزئة Hadoop MapReduce بالتوزيع المتساوي لإخراج المخطط على المخفض من خلال ضمان انتقال المفتاح الصحيح إلى المخفض الصحيح.

قراءة : راتب Hadoop Developer في الهند

بناء جملة Hash Partitioner في Hadoop

إليك الصيغة الافتراضية لقسم التجزئة في Hadoop.

public int getPartition (مفتاح K ، قيمة V.

عدد int numReduceTasks)

{

إرجاع (key.hashCode () & Integer.MAX_VALUE)٪ numRedudeTasks؛

}

تنفيذ Hadoop Partitioner

لمشاهدة مثال على استخدام Hadoop Partitioner في التطبيقات العملية ، دعنا نلقي نظرة على الجدول أدناه الذي يحتوي على بيانات للمقيمين في كتلة في مبنى.

عدد مسطح اسم جنس أفراد الأسرة فاتورة الكهرباء
1101 مانيشا أنثى 3 1500
1102 ديباك ذكر 4 2000
1103 سانجاي ذكر 3 1100
1104 نيدهي أنثى 2 900
1105 براتيك ذكر 1 650
1106 جوبال ذكر 4 1800
1107 ساميكشا أنثى 2 1300

لنكتب الآن برنامجًا للعثور على أعلى فاتورة كهرباء حسب الجنس في مجموعات أفراد الأسرة المختلفة - 2 إلى 3 وأقل من 4.

يتم حفظ البيانات المقدمة كمدخلات. txt في الدليل "/ home / Hadoop / HadoopPartitioner".

المفتاح يتبع نمطًا - مفتاح خاص + اسم الملف + رقم السطر. علي سبيل المثال،

المفتاح = الإدخال @ 1

لهذا ، ستكون القيمة

القيمة = 1101 \ t مانيشا \ t أنثى \ t 3 \ t 1500

إليك كيف ستسير العملية:

  • اقرأ القيمة
  • استخدم وظيفة الانقسام للفصل بين الجنسين وتخزينهم في متغير سلسلة

String [] str = value.toString (). split (“\ t”، -2)؛

سلسلة الجنس = str [2] ؛

  • أرسل الآن معلومات الجنس وسجّل قيمة البيانات كزوج ley وقيمة إلى مهمة التقسيم

Context.write (نص جديد (جنس) ، نص جديد (قيمة)) ؛

  • كرر لجميع السجلات

كإخراج ، ستحصل على بيانات الجنس وقيمة البيانات المصنفة كأزواج أساسية وقيمة.

إليك كيف ستذهب مهمة التقسيم.

أولاً ، سيأخذ المُقسم أزواج المفتاح والقيمة المرسلة إليه كمدخلات. الآن ، سوف يقسم البيانات إلى شرائح مختلفة.

إدخال

مفتاح = قيمة حقل الجنس

القيمة = سجل القيمة لهذا الجنس

إليك كيف ستتبع العملية.

  • اقرأ قيمة أفراد الأسرة من زوج القيمة الرئيسية

String [] str = value.toString (). split (“\ t”) ؛

int age = Integer.parseInt (str [3]) ،

  • تحقق من قيمة أفراد الأسرة مع الشروط التالية
  • أفراد الأسرة من 2 إلى 3
  • أفراد الأسرة أقل من 4

إذا (أفراد الأسرة <4)

{

العودة 0 ؛

}

وإلا إذا (familymembers> = 2 && familym members <= 3)

{

إرجاع 1٪ numReduceTasks؛

}

آخر

{

إرجاع 2٪ numReduceTasks؛

}

انتاج |

سيتم تقسيم بيانات أزواج المفاتيح والقيمة إلى المجموعات الثلاث المحددة.

تعلم أيضًا: أفضل أدوات Hadoop التي يجب أن تعرفها

التقسيم الضعيف والتغلب عليه

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

إذن ، لديك الآن آليتان لإرسال المعلومات إلى الأقسام:

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

الآن ، لنفترض أن أسلوب hashCode () الخاص بك لا يوزع بشكل مناسب المفاتيح الأخرى على الأقسام. لذلك ، لا يتم توزيع المعلومات بالتساوي في أقسام ومخفضات. هذا لأن كل قسم يتناسب مع المخفض.

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

في هذه الحالة ، يجب عليك اتباع منهجية من شأنها مشاركة البيانات عبر مخفضات مختلفة. تعرف على المزيد حول Hadoop مع برنامج Hadoop التعليمي النهائي الخاص بنا.

خاتمة

نأمل أن يكون هذا الدليل حول Hadoop Partitioners مفيدًا لك. لمزيد من المعلومات حول هذا الموضوع ، تواصل مع الخبراء في upGrad وسنساعدك في الإبحار.

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

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

إتقان تكنولوجيا المستقبل - البيانات الضخمة

برنامج الشهادة المتقدم في البيانات الضخمة من معهد IIIT بنغالور