מהן תכונות MapReduce Hadoop המתקדמת?

The basic MapReduce programming explains the work flow details. But it does not cover the actual working details inside the MapReduce programming framework. מאמר זה יסביר את נתוני התנועה דרך אדריכלות MapReduce ואת שיחות API נהגו לעשות עיבוד בפועל. נדונו גם טכניקות ההתאמה אישית על פונקציה עבור צורכים ספציפיים ליישום.

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

עכשיו בואו נדון תכונות מתקדמות בסעיפים הבאים.

סוגים מותאמים אישית (Data): עבור Mapper שסופקו על ידי משתמשים ו כמפחית, במסגרת Hadoop MapReduce תמיד להשתמש בנתונים מוקלדים. הנתונים העובר Mappers מוריד מאוחסנים חפצים Java.

  • ממשק לכתיבה: הממשק הניתן לצריבה הוא אחד הממשקים החשובים ביותר. החפצים אשר ניתן marshaled מ / אל קבצים על השימוש ברשת ממשק זה. Hadoop גם משתמש בממשק זה כדי לשדר נתונים בצורה בהמשכים. חלק המעמדות אשר מיישמת ממשק הניתן לצריבה מוזכר להלן
  1. בכיתה טקסט(הוא מאחסן נתוני מחרוזת)
  2. LongWritable
  3. FloatWritable
  4. IntWritable
  5. BooleanWritable

סוג הנתונים המותאמים אישית יכול להתבצע גם על ידי יישום לכתיבה interface. Hadoop הוא מסוגל לשדר כל סוג נתונים מותאמים אישית (אשר מתאים לדרישות שלך) המיישמת ממשק הניתן לצריבה.

להלן ממשק הניתן לצריבה אשר נתקל שתי שיטות readFields ולכתוב. השיטה הראשונה (readFields) מאתחל את הנתונים של האובייקט מן הנתונים הכלולים 'ב’ זרם בינארי. השיטה השנייה (לִכתוֹב) משמש לשחזר את האובייקט לזרם בינארי "החוצה". החוזה החשוב ביותר של התהליך כולו הוא שסדר לקרוא ולכתוב אל הנחל בינארי הוא אותו.

Listing1: מציג ממשק הניתן לצריבה

ממשק הציבור הניתן לצריבה {

readFields החלל(DataInput ב);

כתיבת חלל(DataOutput החוצה);

}

סוגים מותאמים אישית (מַפְתֵחַ): בחלק הקודם דנו על סוג הנתונים המותאמים אישית כדי לענות על דרישת נתוני יישום ספציפית. הוא מנהל את חלק הערך רק. עכשיו אנחנו גם נדונונו על סוג המפתח המותאם אישית. בשנת Hadoop MapReduce, כמפחית מעבד את המפתח בסדר ממוין. אז את סוג המפתח המותאם אישית צריך ליישם את הממשק נקרא WritableComparable. סוגי המפתח צריך גם ליישם Hashcode ().

להלן מראה WritableComparable interface. היא מייצגת לכתיבה שהוא גם להשוואה.

Listing2: מראה WritableComparable interface

WritableComparable ממשק הציבור<T>

מרחיב הניתן לצריבה, להשוואה<T>

כיצד להשתמש סוגים מותאמים אישית: אנחנו כבר דנו ערך מותאם אישית וסוגי מפתח אשר יכול להיות מעובד על ידי Hadoop. עכשיו נדונו המנגנון כך Hadoop יכול להבין את זה. מטרת JobConf (המגדיר את העבודה) יש שתי שיטות שנקראו setOutputKeyClass () ו - setOutputValueClass () ושיטות אלה משמשים לשליטה הערך וסוגי נתוני מפתח. אם Mapper מייצרת סוגים שונים אשר אינו תואם כמפחית אז JobConf של setMapOutputKeyClass () ו - setMapOutputValueClass () שיטות שניתן להשתמש בהם כדי להגדיר את סוג קלט כצפוי על ידי כמפחית.

מהר ביצועים: תהליך מיון ברירת המחדל הוא קצת איטי כפי שהוא ראשון קורא את סוג המפתח מנחל ואז לנתח את זרם הבתים (באמצעות readFields() שיטה) ולבסוף להתקשר בהשוואה ל () שיטה של ​​מפתח המעמד. הגישה מהר יהיה להחליט לידי סדר בין המקשים על ידי סימון הזרמים בייט ללא ניתוח את מערכת הנתונים כולו. כדי ליישם מנגנון השוואה מהר זה, WritableComparator בכיתה יכולה להתארך עם קומפרטור ספציפי סוגי הנתונים שלך. להלן ההכרזה בכיתה.

Listing3: מראה WritableComparator מעמד

WritableComparator מעמד ציבורי

מרחיב אובייקט

מיישמת RawComparator

אז נתונים מותאמים אישית וסוגי המפתח לאפשר להשתמש במבנה נתונים ברמה גבוה יותר במסגרת Hadoop. בסוג נתונים מותאם אישית יישום מעשי Hadoop היא אחת הדרישות החשובות ביותר. אז תכונה זו מאפשרת שימוש בסוגים לכתיבה אישית מספקת שיפור משמעותי בביצועים.

פורמטים קלט: The InputFormat הוא אחד הממשקים החשובים ביותר המגדירים את מפרט הקלט של עבודת MapReduce. Hadoop מציע סוגים שונים של InputFormat לפרשנות של סוגים שונים של נתוני קלט. ברירת המחדל ואת הנפוץ ביותר הוא TextInputFormat אשר משמש לקרוא שורות מקובץ טקסט. Similarly SequenceFileInputFormat משמש לקריאת פורמטים של קבצים בינאריים.

המשימה הבסיסית של InputFormat היא לקרוא את הנתונים מקובץ קלט. יישום מותאם אישית InputFormat גם אפשרי לפי צורך בקשתך. עבור ברירת מחדל TextInputFormat יישום המפתח הוא ההיסט של הקו והערך הוא התוכן של הקו הופסק על ידי ' n’ character. עבור יישום מותאם אישית, המפריד יכול להיות כל תו ואת InputFormat יהיה לנתח בהתאם.

התפקיד השני של InputFormat הוא לפצל את קובץ הקלט (מקור מידע) לרסיסים שהן קלטו למפה משימות. פיצולים / שברים אלה הם גלומים המופעים של ממשק InputSplit. מקור נתוני הקלט יכול להיות כל דבר כמו טבלת מסד נתונים, קובץ XML או קובץ אחר. אז הפיצול יבוצע על בסיס דרישת היישום. הנקודה החשובה ביותר היא כי פעולת הפיצול צריכה להיות מהירה וזולה.

לאחר פיצול קבצים, לקרוא והפעלה מאת פיצולי פרט חשובים מאוד. RecordReader אחראי קריאת נתונים מתוך פיצולים. The RecordReader צריך להיות יעיל מספיק כדי להתמודד עם העובדה כי הפיצולים לא תמיד לסיים בצורה מסודרת בסוף קו. The RecordReader תמיד קורא עד הסוף של הקו גם אם הוא חוצה את הסוף התיאורטי של פיצול. תכונה זו חשובה מאוד, כדי למנוע חסר של רשומות אשר אולי חצו את גבולות InputSplit.

  • Custom InputFormat: ביישומים בסיסיים InputFormat משמש ישירות. אבל למנהג לקרוא את הדרך הטובה ביותר היא מחלקה אפשרית FileInputFormat. מעמד מופשט זה מספק פונקציות לתפעל קבצים לפי דרישת יישום. עבור ניתוח מותאם אישית, the getRecordReader () השיטה חייבת להיות מבוטלת אשר מחזירה מופע של RecordReader. This RecordReader הוא אחראי על קריאה ועל ניתוח.
  • מקור חלופי (Data): InputFormat מתאר שני דברים, הראשונה היא הצגת נתונים על Mapper והשני הוא מקור הנתונים. רוב ההטמעות מבוססות על FileInputFormat, שם מקור הנתונים הוא מערכת קבצים מקומית של HDFS (Hadoop Distributed File System).אבל עבור סוגים אחרים של מקורות נתונים, יישום מותאם אישית של InputFormat נדרש. For example, מסד נתונים NoSQL כמו HBase מספק TableInputFormat לנתוני קריאת מטבלאות מסד נתונים. אז את מקור הנתונים יכול להיות כל דבר אשר יכול להיות מטופלים על ידי יישום מותאם אישית.

פורמטי פלט: The פורמט פלט אחראי פעולת כתיבה. כבר דנו כי InputFormat ו - RecordReader ממשקים אחראים נתוני קריאה לתכנית MapReduce. לאחר עיבוד הנתונים, את פעולת כתיבה על האחסון קבע מנוהלת על ידי פורמט פלט ו - RecordWriter ממשקים. תבנית ברירת המחדל היא TextOutputFormat אשר כותב את המפתח / זוגות ערך כמו מחרוזות לקובץ הפלט. פורמט הפלט האחר הוא SequenceFileOutputFormat וזה שומר את הנתונים בצורה בינארית. כל השיעורים האלה להשתמש לִכתוֹב () ו - readFields () שיטות לכתיבה כיתות.

The פורמט פלט יישום צריך להיות מותאם אישית כדי לכתוב נתונים בפורמט מותאם אישית. The FileOutputFormat חייב להיות מתוח מעמד מופשט לעשות את ההתאמה האישית. The JobConf.setOutputFormat () השיטה חייבת להיות שונה כדי להשתמש בתבנית מותאמת אישית אחרת.

מחיצות נתונים: מחיצות יכולה להיות מוגדרת כתהליך הקובעת אילו למשל כמפחית יקבל איזה מקש ביניים / זוג ערך. Mapper כל צריך לקבוע את כמפחית היעד עבור כל זוגות ערך מפתח / פלט שלה. הנקודה החשובה ביותר היא כי עבור כל מפתח משנה של ערכאת Mapper שלה, מחיצת היעד זהה. לקבלת Mappers סיבת ביצועים לא לתקשר אחד עם השני לחלוקת מפתח מסוים.

The partitioner ממשק המשמש את מערכת Hadoop כדי לקבוע את מחיצת היעד עבור זוג מפתח / ערך. מספר המחיצות צריך להתאים עם מספר משימות להפחית. מסגרת MapReduce מקובעת את מספר מחיצות כשמשימת מתחילה.

להלן החתימה של ממשק partitioner.

Listing 4: מציג ממשק partitioner

Partitioner ממשק הציבור<K2, V2>

מרחיב JobConfigurable

מסקנה: בדיון זה כיסינו את תכונות Hadoop MapReduce החשובות ביותר. תכונות אלה עשויות להיות מועילות למטרה אישית. ביישומי MapReduce מעשיים, יישום ממשקי API מחדל אין שימוש הרבה. Rather, התכונות המותאמות אישית (אשר מבוססים על APIs חשוף) יש השפעה משמעותית. כל ההתאמות האישיות הללו ניתן לעשות זאת בקלות ברגע מושגים ברורים. מקווה שמאמר זה יהיה מועיל להבנת תכונות מתקדמות ויישומן.

 

Tagged on: , ,
============================================= ============================================== Buy best TechAlpine Books on Amazon
============================================== ---------------------------------------------------------------- electrician ct chestnutelectric
error

Enjoy this blog? Please spread the word :)

Follow by Email
LinkedIn
LinkedIn
Share