מדריך Oozie: למד כיצד לתזמן את עבודות Hadoop שלך



מדריך Apache Oozie: Oozie היא מערכת מתזמנת תזרימי עבודה לניהול עבודות Hadoop. זוהי מערכת ניתנת להרחבה, אמינה ומתרחבת.

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

בבלוג הדרכה זה של אפאצ'י אוזי, נדבר על:





  • מבוא לאפאצ'י אוזי
  • זרימת עבודה של אוזי
  • רכז אוזי
  • צרור אוזי
  • עבודה בתהליך ספירת מילים
  • מתאם רכז ספירת מילים מבוסס זמן

נתחיל את המדריך הזה של Oozie בהצגת Apache Oozie. לאחר מכן, נבין סוגי עבודות שניתן ליצור ולהוציא לפועל באמצעות Apache Oozie.

מדריך Apache Oozie: מבוא ל- Apache Oozie

אפאצApache Oozie היא מערכת מתזמנים לניהול וביצוע של עבודות Hadoop בסביבה מבוזרת. אנו יכולים ליצור צינור רצוי עם שילוב של משימות מסוג אחר. זה יכול להיות המשימה שלך כוורת, חזיר, Sqoop או MapReduce. באמצעות Apache Oozie תוכל גם לתזמן את עבודותיך. בתוך רצף של המשימה, ניתן לתכנת שתי עבודות או יותר לרוץ במקביל זו לזו. זוהי מערכת ניתנת להרחבה, אמינה ומתרחבת.



Oozie הוא יישום אינטרנט מקוד פתוח של Java, האחראי להפעלת פעולות זרימת העבודה. זה, בתורו, משתמש במנוע הביצוע של Hadoop כדי לבצע את המשימות.

אפאצ'י אוזי מגלה את השלמת המשימות באמצעות התקשרות חוזרת וסקירה. כאשר Oozie מפעיל משימה, הוא מספק כתובת HTTP ייחודית להתקשרות למשימה ומודיע על כתובת URL זו כאשר המשימה הושלמה. אם המשימה לא מצליחה להפעיל את כתובת האתר להתקשרות חוזרת, Oozie יכול לסקור את המשימה לסיומה.

ישנם שלושה סוגים של משרות באפצ'י אוזי:



  • עבודות זרימת עבודה של Oozie & מינוס אלה הם גרפים אצטיקליים מכוונים (DAG) המציינים רצף פעולות שיש לבצע.
  • דרושים רכז Oozie & מינוס אלה כוללים עבודות זרימת עבודה המופעלות על ידי זמן וזמינות נתונים.
  • חבילות אוזי & מינוס ניתן להתייחס לחבילה של מספר רכזים ועבודות זרימת עבודה.

עכשיו, בואו נבין את כל העבודות האלה אחת אחת.

מדריך Apache Oozie: עבודה של Oozie

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

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

פקודה: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

לבדיקת סטטוס העבודה, ניתן להיכנס למסוף האינטרנט Oozie, כלומר. http: // שם מארח: 11000 . בלחיצה על התפקיד תוכלו לראות את סטטוס התפקיד.

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

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

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

מדריך Apache Oozie: רכז Oozie

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

ההגדרות הנדרשות למשרות הרכז הן:

  • הַתחָלָה & מינוס התחל זמן זמן לתפקיד.
  • סוֹף & מינוס זמן סיום לתפקיד.
  • אזור זמן & מינוס אזור זמן של יישום הרכז.
  • תדירות & מינוס התדירות, בדקות, לביצוע העבודות.

כמה מאפיינים נוספים זמינים למידע בקרה:

  • פסק זמן & מינוס הזמן המקסימלי, בדקות, שעבורו פעולה תמתין כדי לעמוד בתנאים הנוספים, לפני שנזרק. 0 מציין שאם כל אירועי הקלט אינם מתקיימים בזמן התממשות הפעולה, הפעולה אמורה להפסיק את הזמן באופן מיידי. -1 מציין כי אין פסק זמן, הפעולה תחכה לנצח. ערך ברירת המחדל הוא -1.
  • מקביליות & מינוס המספר המרבי של פעולות עבור עבודה שיכולה לפעול במקביל. ערך ברירת המחדל הוא 1.
  • ביצוע - הוא מציין את צו הביצוע אם מספר מקרים של עבודת הרכז עמדו בקריטריונים לביצוע שלהם. זה יכול להיות:
    • FIFO (ברירת מחדל)
    • LIFO
    • LAST_ONLY

פקודה: עבודה oozie –oozie http: // localhost: 11000 / oozie -config -run

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

מדריך Apache Oozie: Bundle Oozie

מערכת Oozie Bundleמאפשרת לך להגדיר ולבצע מערך יישומי רכז, המכונה לעתים קרובות צינור נתונים. בצרור Oozie אין תלות מפורשת ביישומי הרכז. עם זאת, תוכל להשתמש בתלות הנתונים של יישומי רכז כדי ליצור צינור יישום נתונים משתמע.אתה יכול להתחיל / לעצור / להשעות / לחדש / להפעיל מחדש את החבילה. זה נותן שליטה תפעולית טובה וקלה יותר.

ליישם רשימה מקושרת בסי

פתיחת זמן & מינוס הזמן בו צרור צריך להתחיל ולהגיש בקשות רכז.

בהתקדמות במדריך זה של אפאצ'י אוזי, נבין כיצד ליצור עבודת זרימת עבודה.

מדריך Apache Oozie: עבודה בספירת מילים

בדוגמה זו, אנו הולכים לבצע עבודת ספירת מילים באמצעות Apache Oozie. כאן לא נדון כיצד לכתוב תוכנית ספירת מילים של MapReduce. לכן, לפני שתעקוב אחר הדרכה זו של Apache Oozie עליך להוריד את זה צנצנת ספירת מילים קוֹבֶץ. כעת, צור ספריית WordCountTest בה נניח את כל הקבצים. צור ספריית lib בה נניח את צנצנת ספירת המילים כפי שמוצג בתמונות שלמטה.

עכשיו, בואו להתקדם וליצור job.properties & workflow.xml קבצים, שם נציין את העבודה ואת הפרמטרים המשויכים אליה.

job.properties

ראשית, אנו יוצרים a job.properties קובץ, שם אנו מגדירים את הנתיב של NameNode & ResourceManager. נתיב NameNode נדרש לפתרון נתיב ספריות זרימת העבודה ונתיב jobTracker יעזור בהגשת המשימה ל- YARN. עלינו לספק את הדרך של workflow.xml קובץ, אשר צריך להיות מאוחסן ב- HDFS.

workflow.xml

לאחר מכן, עלינו ליצור את workflow.xml קובץ, שם נגדיר את כל פעולותינו ונבצע אותן. ראשית, עלינו לציין את שם אפליקציית זרימת העבודה כלומר. WorkflowRunnerTest . לאחר מכן, אנו מציינים את צומת התחלה . צומת ההתחלה ( ב ה להתחיל תָג ) היא נקודת הכניסה של עבודה בתהליך עבודה. זה מצביע לעבר צומת זרימת העבודה הראשונה שממנה העבודה צריכה להתחיל. כפי שניתן לראות בתמונה למטה, הצומת הבא הוא צומת 0 מהמקום בו העבודה תתחיל.

לאחר מכן, אנו מציינים את המשימה שיש לבצע, בצומת הפעולה. אנו מבצעים כאן משימת WordCount של MapReduce. עלינו לציין את התצורות הנדרשות לביצוע משימה זו של MapReduce. אנו מגדירים את מעקב העבודה ואת כתובת ה- NameNode.

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

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

עכשיו אנחנו צריכים להזיז את WordCountTest התיקייה ב- HDFS, כפי שציינו ב oozie.wf.application.path נכס ב job.properties קוֹבֶץ. אז אנו מעתיקים את WordCountTest בתיקיית השורש של Hadoop.

פקודה: hadoop fs - הקלד WordCountTest /

לאימות, תוכלו לעבור לממשק המשתמש של NameNode ולבדוק האם התיקיה הועלתה בספריית השורש של HDFS או לא.

כעת, כולנו אמורים להתקדם ולבצע את עבודת זרימת העבודה.

פקודה: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

לאחר שביצענו את תפקידנו נקבל את מזהה התפקיד (כלומר. 0000009-171219160449620-oozie-edur-W ) כפי שמוצג בתמונה לעיל. אתה יכול ללכת ולבדוק את העבודה שהגשת בממשק המשתמש של Oozie, כלומר. מקום אירוח: 11000 . אתה יכול לראות בתמונה למטה, המשרה אותה הגשנו מופיעה למטה.

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

  • מידע על עבודה

  • הגדרת תפקיד

  • תצורת עבודה

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

כפי שאתה יכול לראות כי oozieout הספריה נוצרה ב- HDFS, אז עכשיו בואו נסתכל על קובץ הפלט שנוצר.

כפי שראינו כיצד ליצור עבודה בזרימת עבודה של Oozie, כעת נתקדם בבלוג זה של Apache Oozie Tutorial ונבין כיצד ליצור עבודה של רכז.

הדרכה של אפאצ'י אוזי: עבודה מתאם זמן ספירת מילים

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

הבה נתקדם במהירות במדריך זה של אפאצ'י אוזי וניצור עבודת רכז. כאן ניצור שלושה קבצים כלומר רכז. נכסים , מתאם.קסמל & workflow.xml קוֹבֶץ. שוב, כאן נניח את w סדר סידורים צנצנת בתוך lib המדריך כפי שמוצג בתמונה למטה.

עכשיו בואו נסתכל על קבצים אלה בנפרד. ראשית, נתחיל בקובץ coordinator.properties.

כאן אנו מציינים את התדירות בה תבוצע זרימת העבודה. תדירות מתבטאת תמיד בדקות. במקרה שלנו, עבודת רכז זו תבוצע אחת לשעה בין השעה שצוינה. משתמשים בתדירות כדי ללכוד את המרווחים התקופתיים שבהם מייצרים את ערכות הנתונים, ויישומי הרכז מתוכננים לפעול.

להגדרת תדירות בדקות, שעות, ימים וחודשים השתמש בפורמט הבא:

$ {coord: דקות (int n)} נ $ {coord: דקות (45)} -> 45
$ {coord: hours (int n)} n * 60 $ {coord: hours (3)} -> 180
$ {coord: ימים (int n)} מִשְׁתַנֶה $ {coord: ימים (2)} -> דקות ביומיים שלמים מהתאריך הנוכחי
$ {coord: חודשים (int n)} מִשְׁתַנֶה $ {coord: months (1)} -> דקות בחודש שלם אחד מהתאריך הנוכחי

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

לאחר מכן, אנו מציינים את כתובת האתר של NameNode & ResourceManager, אשר תשמש להפניית קובץ workflow.xml ב- HDFS והגשת עבודות ל- YARN בהתאמה. לבסוף, אנו מציינים את הנתיב workflow.xml, אותו נאחסן ב- HDFS. אנו גם מציינים את נתיב היישום שבו יאוחסנו כל ספריית הקבצים והליב.

הקובץ השני הוא מתאם.קסמל שם נשתמש בכל המאפיינים שציינו ב- רכז. נכסים קוֹבֶץ. עכשיו, ראשית, נציין את המאפיינים של יישום הרכז כלומר שם, תדר ואזור זמן. לאחר מכן נציין את תהליכי העבודה בזה אחר זה. הנה, יש לנו רק זרימת עבודה אחת. לכן, בתוך אלמנט הפעולה ניצור אלמנט זרימת עבודה, שם נציין את נתיב היישום.

לאחר מכן, להתקדם קדימה עלינו ליצור workflow.xml קובץ שבו נציין את המשימה. זה דומה ל- workflow.xml קובץ, שיצרנו בעבודת זרימת העבודה.

עכשיו שוב, נעביר את זה WordCountTest_TimedBased מדריך ל- HDFS.

פקודה : hadoop fs - הקלד WordCountTest_TimeBased /

כעת כולנו אמורים להתקדם ולבצע את עבודת הרכז בהדרכת Oozie זו. בואו ונבצע את זה.

פקודה : oozie job –oozie http: // localhost: 11000 / oozie -config coordinator.properties -run

שים לב למזהה תפקיד זה של הרכז (כלומר 0000010-171219160449620-oozie-edur-C). זה יעזור לך לאתר את עבודתך בממשק המשתמש של Oozie Web.

אתה יכול לראות את המשימה המופיעה למטה בכרטיסיית עבודות הרכז שלך בממשק המשתמש של Oozie Web. בדומה לעבודת זרימת העבודה יש ​​לנו שם, סטטוס, משתמש, תדירות, זמן התחלה וסיום העבודה. כאשר תלחץ על משרה מסוימת, תראה את פרטי המשרה, כפי שמוצג בתמונות שלמטה.

  • רכז מידע על תפקיד

  • הגדרת תפקיד הרכז

  • תצורת תפקיד רכז

כעת, כאשר בדקנו דרך הכרטיסיות השונות. נחזור לספריית השורש HDFS בה תיווצר תיקיית הפלט. כפי שניתן לראות בתמונה למטה, oozieTimeBasedout הספריה נוצרה, כפי שציינו ב workflow.xml קוֹבֶץ.

עכשיו, בואו נסתכל על קובץ הפלט שנוצר.

אני מקווה שמצאת את הבלוג הזה של Apache Oozie Tutorial אינפורמטיבי. אם אתה מעוניין ללמוד עוד, תוכל לעבור על כך המספר על Big Data וכיצד Hadoop פותר אתגרים הקשורים ל- Big Data.

עכשיו שהבנת את אפאצ'י אוזי, בדוק את מאת אדוריקה, חברת למידה מקוונת מהימנה עם רשת של יותר מ -250,000 לומדים מרוצים הפרוסים ברחבי העולם. קורס הכשרת ההסמכה של אדורקה ביג דאטה Hadoop עוזר ללומדים להיות מומחים בתחום HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume ו- Sqoop תוך שימוש במקרי שימוש בזמן אמת בתחום הקמעונאות, מדיה חברתית, תעופה, תיירות, פיננסים.

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