تدفق Hadoop: كتابة برنامج Hadoop MapReduce في Python



منشور المدونة هذا على Hadoop Streaming هو دليل خطوة بخطوة لتعلم كتابة برنامج Hadoop MapReduce في Python لمعالجة كميات هائلة من البيانات الضخمة.

تتزايد كمية البيانات الرقمية التي يتم إنشاؤها كل يوم بشكل كبير مع ظهور الوسائط الرقمية وإنترنت الأشياء من بين التطورات الأخرى. أدى هذا السيناريو إلى ظهور تحديات في إنشاء أدوات وتقنيات الجيل التالي لتخزين هذه البيانات ومعالجتها. هذا هو المكان الذي يأتي فيه Hadoop Streaming! يوجد أدناه رسم بياني يوضح نمو البيانات التي يتم إنتاجها سنويًا في العالم اعتبارًا من عام 2013. وتقدر IDC أن كمية البيانات التي يتم إنشاؤها سنويًا ستصل إلى 180 زيتابايت في عام 2025!

data-by-2025-hadoop-streaming





المصدر: IDC

تنص شركة IBM على أنه يتم إنشاء ما يقرب من 2.5 كوينتيليون بايت من البيانات كل يوم ، مع إنشاء 90 بالمائة من بيانات العالم في العامين الماضيين! إنها مهمة صعبة لتخزين مثل هذه الكمية الهائلة من البيانات. يمكن لـ Hadoop التعامل مع كميات كبيرة من البيانات المهيكلة وغير المهيكلة بشكل أكثر كفاءة من مستودع بيانات المؤسسة التقليدي. يقوم بتخزين مجموعات البيانات الضخمة هذه عبر مجموعات موزعة من أجهزة الكمبيوتر. يستخدم Hadoop Streaming إطار عمل MapReduce الذي يمكن استخدامه لكتابة التطبيقات لمعالجة كميات هائلة من البيانات.



نظرًا لأن إطار عمل MapReduce يعتمد على Java ، فقد تتساءل كيف يمكن للمطور العمل عليه إذا لم يكن لديه خبرة في Java. حسنًا ، يمكن للمطورين كتابة تطبيق mapper / Reducer باستخدام لغتهم المفضلة وبدون معرفة الكثير عن Java ، باستخدام Hadoop الجري بدلاً من التبديل إلى أدوات أو تقنيات جديدة مثل Pig and Hive.

ما هو Hadoop Streaming؟

Hadoop Streaming هي أداة تأتي مع توزيع Hadoop. يمكن استخدامه لتنفيذ برامج لتحليل البيانات الضخمة. يمكن إجراء بث Hadoop باستخدام لغات مثل Python و Java و PHP و Scala و Perl و UNIX وغيرها الكثير. تتيح لنا الأداة المساعدة إنشاء وظائف Map / Reduce وتشغيلها باستخدام أي ملف تنفيذي أو برنامج نصي كمخطط و / أو مخفض. فمثلا:

$ HADOOP_HOME / حاوية / وعاء هادوب $ HADOOP_HOME / hadoop-streaming.jar



-إدخال myInputDirs

-إخراج myOutputDir

كيفية إيقاف برنامج جافا في التعليمات البرمجية

-مجلد / بن / قطة

- مخفض / بن / مرحاض

وصف المعلمات:

Python MapReduce Code:

mapper.py #! / usr / bin / python import sys #Word Count مثال # الإدخال يأتي من STDIN للإدخال القياسي للخط في sys.stdin: line = line.strip () # إزالة الكلمات المسافات البيضاء البادئة والتالية = line.split ( ) # قسّم السطر إلى كلمات وإعادته كقائمة للكلمات في الكلمات: # اكتب النتائج إلى الإخراج القياسي STDOUT طباعة '٪ s٪ s'٪ (word، 1) #Emit the word

المخفض

#! / usr / bin / python import sys من عامل استيراد itemgetter # باستخدام قاموس لتعيين الكلمات إلى أعدادها current_word = None current_count = 0 word = None # إدخال يأتي من STDIN للخط في sys.stdin: line = line.strip () word، count = line.split (''، 1) حاول: count = int (count) باستثناء ValueError: تابع إذا Current_word == word: current_count + = count else: if current_word: print '٪ s٪ s'٪ (current_word، current_count) current_count = count current_word = word if current_word == word: print '٪ s٪ s'٪ (current_word، current_count)

يركض:

  1. قم بإنشاء ملف بالمحتوى التالي وقم بتسميته word.txt.

القط فأر أسد أيل نمر أسد فيل أسد أيل

  1. انسخ البرنامجين النصي mapper.py و slower.py إلى نفس المجلد حيث يوجد الملف أعلاه.

  1. افتح Terminal وحدد موقع دليل الملف. الأمر: ls: لسرد جميع الملفات في الدليل cd: لتغيير الدليل / المجلد

  1. انظر إلى محتوى الملف.
    الأمر: القط اسم الملف

> محتوى mapper.py

الأمر: cat mapper.py

> محتوى المخفض

الأمر: القط المخفض

يمكننا تشغيل مخطط ومخفض على الملفات المحلية (على سبيل المثال: word.txt). لتشغيل الخريطة وتقليل نظام الملفات الموزعة Hadoop (HDFS) ، نحتاج إلى ملف جرة Hadoop الجري. لذا قبل تشغيل البرامج النصية على HDFS ، فلنقم بتشغيلها محليًا للتأكد من أنها تعمل بشكل جيد.

> قم بتشغيل مخطط الخرائط

أمر: القط word.txt | python mapper.py

> تشغيل المخفض

أمر: القط word.txt | python mapper.py | فرز -k1،1 | مخفض python.py

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

برنامج تعليمي لخادم SQL للمبتدئين

تشغيل كود بايثون على Hadoop

قبل أن نقوم بتشغيل مهمة MapReduce على Hadoop ، انسخ البيانات المحلية (word.txt) إلى HDFS

> مثال: hdfs dfs - إخراج source_directory hadoop_destination_directory

أمر: hdfs dfs -put /home/edureka/MapReduce/word.txt / المستخدم / edureka

انسخ مسار ملف الجرة

مسار جرة Hadoop Streaming بناءً على إصدار الجرة هو:

/usr/lib/hadoop-2.2.X/share/hadoop/tools/lib/hadoop-streaming-2.2.X.jar

لذا حدد موقع جرة Hadoop Streaming على جهازك وانسخ المسار.

استنساخ عميق واستنساخ ضحل في جافا

أمر:

ls /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar

قم بتشغيل مهمة MapReduce

أمر:

hadoop jar /usr/lib/hadoop-2.2.0/share/hadoop/tools/lib/hadoop-streaming-2.2.0.jar -file /home/edureka/mapper.py -mapper mapper.py -file / home / edureka / المخفض. py - مخفض المخفض. py -input / user / edureka / word -output / user / edureka / Wordcount

يوفر Hadoop واجهة ويب أساسية للإحصاءات والمعلومات. عند تشغيل Hadoop ، افتح http: // localhost: 50070 في المتصفح. هنا لقطة شاشة لواجهة الويب Hadoop.

تصفح الآن نظام الملفات وحدد موقع ملف wordcount الذي تم إنشاؤه لمعرفة الإخراج. يوجد أدناه لقطة الشاشة.

يمكننا أن نرى الإخراج على المحطة باستخدام هذا الأمر

أمر: hadoop fs -cat / user / edureka / Wordcount / part-00000

لقد تعلمت الآن كيفية تنفيذ برنامج MapReduce مكتوب بلغة Python باستخدام Hadoop Streaming!

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

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