הזרמת Hadoop: כתיבת תוכנית Hadoop MapReduce בפייתון



פוסט בבלוג זה בסטרימינג של Hadoop הוא מדריך שלב אחר שלב ללמוד לכתוב תוכנית של Hadoop MapReduce בפייתון כדי לעבד כמויות עצומות של Big Data.

כמות הנתונים הדיגיטליים שנוצרים מדי יום גדלה באופן אקספוננציאלי עם הופעתה של המדיה הדיגיטלית, האינטרנט של הדברים בין יתר ההתפתחויות. תרחיש זה הוליד אתגרים ביצירת כלים וטכנולוגיות מהדור הבא לאחסון ולניפול נתונים אלה. כאן נכנס הזרמת Hadoop! להלן גרף המתאר את צמיחת הנתונים שנוצרת מדי שנה בעולם משנת 2013. IDC מעריכה שכמות הנתונים שנוצרת מדי שנה תגיע ל -180 זט-בתים בשנת 2025!

data-by-2025-hadoop-streaming





מקור: IDC

יבמ מצהירה כי בכל יום נוצרים כמעט 2.5 מיליוני בתים של נתונים, כאשר 90 אחוז מהנתונים בעולם נוצרו בשנתיים האחרונות! זוהי משימה מאתגרת לאחסן כמות נתונים כה רחבה. Hadoop יכולה להתמודד עם כמויות גדולות של נתונים מובנים ובלתי מובנים ביעילות רבה יותר מאשר מחסן הנתונים הארגוני המסורתי. היא מאחסנת את מערכי הנתונים העצומים הללו על פני אשכולות מחשבים מבוזרים. Hadoop Streaming משתמש במסגרת MapReduce שבה ניתן להשתמש כדי לכתוב יישומים לעיבוד כמויות עצומות של נתונים.



מכיוון שמסגרת MapReduce מבוססת על Java, ייתכן שאתה תוהה כיצד מפתח יכול לעבוד על כך אם אין לו ניסיון ב- Java. ובכן, מפתחים יכולים לכתוב יישום מיפוי / צמצום באמצעות השפה המועדפת עליהם ומבלי שיהיה להם ידע רב ב- Java הזרמת Hadoop במקום לעבור לכלים או לטכנולוגיות חדשות כמו חזיר וכוורת.

כיצד לצאת מהתוכנית בג'אווה - -

מה זה Hadoop Streaming?

Hadoop Streaming הוא כלי שירות שמגיע עם הפצת Hadoop. ניתן להשתמש בו לביצוע תוכניות לניתוח נתונים גדולים. ניתן לבצע הזרמת Hadoop באמצעות שפות כמו Python, Java, PHP, Scala, Perl, UNIX, ורבים אחרים. כלי השירות מאפשר לנו ליצור ולהפעיל עבודות מפה / צמצום עם כל הפעלה או סקריפט כממפה ו / או כמפחית. לדוגמה:

$ HADOOP_HOME / bin / hadoop jar $ HADOOP_HOME / hadoop-streaming.jar



-קלט myInputDirs

-פלט myOutputDir

-תיקיה / סל / חתול

- מפחית / סל / wc

פרמטרים תיאור:

קוד פייתון MapReduce:

mapper.py #! / usr / bin / python ייבוא ​​sys # ספירת מילים דוגמה # קלט מגיע מקלט STDIN קלט רגיל לשורה ב- sys.stdin: line = line.strip () # הסר רווחים מקדימים ונגררים מילים = line.split ( ) # פצל את השורה למילים וחוזר כרשימה למילה במילים: # כתוב את התוצאות לפלט רגיל STDOUT הדפס '% s% s'% (מילה, 1) # שלח את המילה

reducer.py

#! / usr / bin / python ייבוא ​​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 אחר: אם current_word: הדפס '% s% s'% (current_word, current_count) current_count = count current_word = word if current_word == word: הדפס '% s% s'% (current_word, current_count)

לָרוּץ:

  1. צור קובץ עם התוכן הבא ותן לו שם word.txt.

צבי אריה עכבר חתול אייל נמר פיל אריה

  1. העתק את סקריפטים mapper.py ו- reducer.py לאותה תיקייה שבה הקובץ הנ'ל קיים.

  1. פתח את המסוף ואתר את הספריה של הקובץ. פקודה: ls: כדי לרשום את כל הקבצים בספריה cd: כדי לשנות ספריה / תיקיה.

  1. ראה את תוכן הקובץ.
    פיקוד: חתול שם קובץ

> תוכן של mapper.py

פקודה: mapper.py חתול

> תוכן של reducer.py

פקודה: חתול reducer.py

אנו יכולים להפעיל מיפוי ומפחית בקבצים מקומיים (למשל: word.txt). על מנת להריץ את המפה ולהפחית את מערכת הקבצים המבוזרים של Hadoop (HDFS), אנו זקוקים ל צנצנת הזרמת Hadoop. אז לפני שאנחנו מריצים את הסקריפטים על HDFS, בואו נפעיל אותם באופן מקומי כדי להבטיח שהם עובדים בסדר.

> הפעל את המפה

פקודה: word.txt חתול | python mapper.py

> הפעל reducer.py

פקודה: word.txt חתול | python mapper.py | מיין -k1,1 | מפחית פיתון.פי

אנו יכולים לראות כי הממפה והמפחית פועלים כצפוי, כך שלא נתמודד עם בעיות נוספות.

מפעילה את קוד פייתון ב- Hadoop

לפני שאנחנו מפעילים את משימת MapReduce ב- Hadoop, העתק נתונים מקומיים (word.txt) ל- HDFS

> דוגמה: hdfs dfs - הזן מקור_ספריית hadoop_destination_directory

פקודה: hdfs dfs -put /home/edureka/MapReduce/word.txt / משתמש / אדוריקה

העתק את הנתיב של קובץ הצנצנת

הנתיב של צנצנת הזרמת Hadoop המבוסס על גרסת הצנצנת הוא:

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

אז אתר את צנצנת הזרמת Hadoop במסוף שלך והעתק את הנתיב.

פקודה:

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

הפעל את עבודת MapReduce

פקודה:

צנצנת hadoop /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 / reducer.py -reducer reducer.py-קלט / משתמש / edureka / word-output / user / edureka / Wordcount

Hadoop מספקת ממשק אינטרנט בסיסי לסטטיסטיקה ומידע. כאשר אשכול Hadoop פועל פתוח http: // localhost: 50070 בדפדפן. הנה צילום המסך של ממשק האינטרנט Hadoop.

כעת דפדף במערכת הקבצים ואתר את קובץ ספירת המילים שנוצר כדי לראות את הפלט. להלן צילום המסך.

מיון c ++ stl

אנו יכולים לראות את הפלט במסוף באמצעות פקודה זו

פקודה: hadoop fs -cat / user / edureka / Wordcount / part-00000

למדת כעת כיצד לבצע תוכנית MapReduce שנכתבה בפייתון באמצעות Hadoop Streaming!

לאדוריקה קורס חי ומדריך בנושא Big Data & Hadoop, שנוצר במשותף על ידי מתרגלים בתעשייה.

יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות ונחזור אליך.