אתחיל את הבלוג הזה של Apache Spark לעומת Hadoop על ידי הצגתו של Hadoop ו- Spark כדי להגדיר את ההקשר הנכון לשתי המסגרות. לאחר מכן, בהתקדמות נשווה בין שתי מסגרות הביג דאטה על פרמטרים שונים בכדי לנתח את נקודות החוזק והחולשה שלהן.עם זאת, לא משנה מה תהיה התוצאה של ההשוואה שלנו, עליכם לדעת כי גם Spark וגם Hadoop הם מרכיבים מכריעים של ה- .
Apache Spark לעומת Hadoop: מבוא ל- Hadoop
Hadoop היא מסגרת המאפשרת לך לאחסן ביג דאטה תחילה בסביבה מבוזרת כדי שתוכל לעבד אותה במקביל. בעצם ישנם שני מרכיבים ב- Hadoop:
HDFS
HDFS יוצר הפשטה של משאבים, תן לי לפשט את זה עבורך. בדומה לווירטואליזציה, אתה יכול לראות ב- HDFS באופן הגיוני כיחידה אחת לאחסון Big Data, אך למעשה אתה שומר את הנתונים שלך על פני מספר צמתים באופן מבוזר. הנה, יש לך אדריכלות אדון עבדים. ב- HDFS, Namenode הוא צומת ראשי ו- Datanodes הם עבדים.
NameNode
זהו הדמון הראשי שמתחזק ומנהל את ה- DataNodes (צמתים עבדים). הוא מתעד את המטא-נתונים של כל הקבצים המאוחסנים באשכול, למשל. מיקום הבלוקים המאוחסנים, גודל הקבצים, ההרשאות, ההיררכיה וכו '. הוא מתעד כל שינוי ומתרחש במטא נתונים של מערכת הקבצים.
מדריכי SQL של מיקרוסופט למתחילים
לדוגמא, אם קובץ נמחק ב- HDFS, ה- NameNode יתעד זאת מיד ב- EditLog. הוא מקבל באופן קבוע פעימות לב ודיווח חסימה מכל ה- DataNodes באשכול כדי להבטיח שה- DataNodes חיים. זה שומר תיעוד של כל הבלוקים ב- HDFS ובאילו צמתים מאוחסנים הבלוקים האלה.
DataNode
אלה שדים עבדים שפועלים על כל מכונת עבדים. הנתונים בפועל נשמרים ב- DataNodes. הם אחראים על הגשת בקשות קריאה וכתיבה מהלקוחות. הם אחראים גם ליצירת בלוקים, מחיקת בלוקים ושכפול אותם בהתבסס על ההחלטות שקיבלו ה- NameNode.
חוּט
YARN מבצע את כל פעילויות העיבוד שלך על ידי הקצאת משאבים ותזמון משימות. יש לו שני שדים גדולים, כלומר מנהל משאבים ו NodeManager .
מנהל משאבים
זהו רכיב ברמת אשכול (אחד לכל אשכול) ופועל במכונת האב. היא מנהלת משאבים ותזמון יישומים הפועלים על גבי YARN.
NodeManager
זהו רכיב ברמת הצומת (אחד בכל צומת) ופועל על כל מכונת עבדים. היא אחראית על ניהול מכולות וניטור ניצול המשאבים בכל מכולה. זה גם עוקב אחר בריאות הצומת וניהול יומן. הוא מתקשר ללא הרף עם ResourceManager כדי להישאר מעודכן. אז אתה יכול לבצע עיבוד מקביל ב- HDFS באמצעות MapReduce.
למידע נוסף על Hadoop, תוכלו לעבור על כך בלוג. עכשיו, כשכולנו מסודרים עם הקדמה של Hadoop, בואו נעבור למבוא הניצוץ.
Apache Spark לעומת Hadoop: מבוא ל- Apache Spark
Apache Spark הוא מסגרת לניתוח נתונים בזמן אמת בסביבת מחשוב מבוזרת. הוא מבצע חישובים בזיכרון כדי להגביר את מהירות עיבוד הנתונים. זה מהיר יותר לעיבוד נתונים בקנה מידה גדול מכיוון שהוא מנצל חישובים בזיכרון ואופטימיזציות אחרות. לכן, זה דורש כוח עיבוד גבוה.
מערך נתונים מבוזר גמיש (RDD) הוא מבנה נתונים בסיסי של Spark. זהו אוסף אובייקטים מבוזר שאינו משתנה. כל מערך נתונים ב- RDD מחולק למחיצות לוגיות, אשר עשויות להיות מחושבות בצמתים שונים של האשכול. RDDs יכולים להכיל כל סוג של אובייקטים של Python, Java או Scala, כולל שיעורים המוגדרים על ידי המשתמש. רכיבי ניצוץ הופכים אותו למהיר ואמין. Apache Spark מכיל את המרכיבים הבאים:
- ליבת ניצוץ - Spark Core הוא מנוע הבסיס לעיבוד נתונים מקבילי ומופץ בקנה מידה גדול. יתר על כן, ספריות נוספות הבנויות בראש הליבה מאפשרות עומסי עבודה מגוונים לסטרימינג, SQL ולמידת מכונה. היא אחראית על ניהול זיכרון ושחזור תקלות, תזמון, הפצה וניטור של עבודות באשכול ואינטראקציה עם מערכות אחסון.
- הזרמת ניצוצות - הזרמת ניצוצות היא המרכיב של ניצוץ המשמש לעיבוד נתוני סטרימינג בזמן אמת. לפיכך, זו תוספת שימושית לממשק ה- API של Spark. הוא מאפשר תפוקה גבוהה ועיבוד זרם סובלני לתקלות של זרמי נתונים חיים
- ניצוץ SQL : Spark SQL הוא מודול חדש ב- Spark המשלב עיבוד יחסי עם ה- API לתכנות פונקציונלי של Spark. הוא תומך בשאילתת נתונים באמצעות SQL או דרך שפת שאילתת הכוורת. לאלו מכם המכירים את RDBMS, Spark SQL יהיה מעבר קל מהכלים הקודמים שלכם, בהם תוכלו להרחיב את גבולות עיבוד הנתונים היחסית המסורתית.
- GraphX : GraphX הוא ה- API של Spark עבור גרפים וחישוב מקביל גרפי. לפיכך, הוא מרחיב את ה- Spark RDD באמצעות גרף נכסים מבוזר גמיש. ברמה גבוהה, GraphX מרחיב את ההפשטה של Spark RDD על ידי הצגת הגרף Resilient Distributed Property: מולטיגרף מכוון עם מאפיינים המחוברים לכל קודקוד וקצה.
- MLlib (למידה ממוחשבת): MLlib מייצג ספריית למידה ממוחשבת. Spark MLlib משמש לביצוע לימוד מכונה ב- Apache Spark.
כפי שאתה יכול לראות, Spark מגיע עם ספריות ברמה גבוהה, כולל תמיכה ב- R, SQL, Python, Scala, Java וכו '. ספריות סטנדרטיות אלה מגדילות את האינטגרציות החלקות בתהליך העבודה המורכב. מעבר לכך, הוא גם מאפשר לקבוצות שונות של שירותים להשתלב איתו כמו MLlib, GraphX, SQL + Data Frames, שירותי סטרימינג וכו 'כדי להגדיל את יכולותיו.
למידע נוסף על Apache Spark, תוכלו לעבור על כך בלוג. עכשיו האדמה מוכנה לאפאצ'י ספארק מול הדופ. בואו נתקדם ונשווה את אפאצ'י ספארק עם Hadoop בפרמטרים שונים כדי להבין את נקודות החוזק שלהם.
Apache Spark לעומת Hadoop: פרמטרים להשוואה
ביצועים
הניצוץ הוא מהיר כי יש לו עיבוד בזיכרון. זה יכול גם להשתמש בדיסק לנתונים שלא כולם נכנסים לזיכרון. עיבוד הזיכרון של Spark מספק ניתוח בזמן אמת כמעט. זה הופך את Spark למתאים למערכת עיבוד כרטיסי אשראי, למידת מכונה, ניתוח אבטחה וחיישני האינטרנט של הדברים.
Hadoop הוקמה במקור לאיסוף רציף של נתונים ממקורות רבים מבלי לדאוג לסוג הנתונים ולאחסן אותם בסביבה מבוזרת. MapReduce משתמש בעיבוד אצווה. MapReduce מעולם לא נבנה לעיבוד בזמן אמת, הרעיון העיקרי מאחורי YARN הוא עיבוד מקביל על פני מערך נתונים מבוזר.
הבעיה בהשוואה בין השניים היא שהם מבצעים עיבוד שונה.
קלות שימוש
Spark מגיע עם ממשקי API ידידותיים למשתמש עבור Scala, Java, Python ו- Spark SQL. ניצוץ SQL דומה מאוד ל- SQL, ולכן קל יותר למפתחי SQL ללמוד אותו. Spark מספק גם מעטפת אינטראקטיבית למפתחים לשאילתה ולביצוע פעולות אחרות, ויש להם משוב מיידי.
אתה יכול לבלוע נתונים ב- Hadoop בקלות באמצעות מעטפת או שילובם במספר כלים כמו Sqoop, Flume וכו '. YARN הוא רק מסגרת לעיבוד וניתן לשלב אותו בכמה כלים כמו Hive ו- Pig. HIVE הוא רכיב אחסון נתונים המבצע קריאה, כתיבה וניהול מערכי נתונים גדולים בסביבה מבוזרת באמצעות ממשק דמוי SQL. אתה יכול לעבור את זה מערכת אקולוגית של Hadoop בלוג כדי לדעת על הכלים השונים שניתן לשלב עם Hadoop.
עלויות
Hadoop ו- Spark הם שני פרויקטים של קוד פתוח של אפאצ'י, כך שאין עלות לתוכנה. העלות קשורה רק לתשתית. שני המוצרים מעוצבים בצורה כזו שהיא יכולה לפעול על חומרת סחורה עם TCO נמוך.
עכשיו ייתכן שאתה תוהה בדרכים בהן הם שונים. אחסון ועיבוד ב- Hadoop הוא מבוסס דיסק וה- Hadoop משתמש בכמויות זיכרון סטנדרטיות. לכן, עם Hadoop אנו זקוקים להרבה מקום בדיסק כמו גם דיסקים מהירים יותר. Hadoop דורשת גם מספר מערכות להפצת ה- I / O של הדיסק.
בגלל אפאצ'י ספארק בעיבוד זיכרון הוא דורש זיכרון רב, אך הוא יכול להתמודד עם מהירות וכמות סטנדרטיים של הדיסק. מכיוון ששטח דיסק הוא מצרך זול יחסית ומכיוון ש- Spark אינו משתמש בדיסק קלט / פלט לצורך עיבוד, במקום זאת הוא דורש כמויות גדולות של זיכרון RAM לצורך ביצוע הכל בזיכרון. לפיכך, מערכת הניצוץ כרוכה בעלות גבוהה יותר.
אבל כן, דבר חשוב שיש לזכור הוא שהטכנולוגיה של Spark מצמצמת את מספר המערכות הנדרשות. זה זקוק לפחות פחות מערכות שעולות יותר. לכן, תהיה נקודה בה Spark מוזיל את העלויות ליחידת חישוב גם עם דרישת ה- RAM הנוספת.
עיבוד נתונים
ישנם שני סוגים של עיבוד נתונים: עיבוד אצווה ועיבוד זרם.
עיבוד אצווה לעומת עיבוד זרם
עיבוד אצווה : עיבוד אצווה היה חיוני בעולם הביג דאטה. בטווח הפשוט ביותר, עיבוד אצווה עובד עם נפחי נתונים גבוהים שנאספו לאורך תקופה. בעיבוד אצווה נאספים תחילה נתונים ואז מיוצרים תוצאות מעובדות בשלב מאוחר יותר.
עיבוד אצווה הוא דרך יעילה לעיבוד מערכי נתונים גדולים וסטטיים. באופן כללי, אנו מבצעים עיבוד אצווה עבור ערכות נתונים בארכיון. לדוגמא, חישוב הכנסה ממוצעת של מדינה או הערכת השינוי במסחר אלקטרוני בעשור האחרון.
עיבוד זרם : עיבוד זרמים הוא הטרנד הנוכחי בעולם הביג דאטה. צורך השעה הוא מהירות ומידע בזמן אמת, וזה מה שעיבוד קיטור עושה. עיבוד אצווה אינו מאפשר לעסקים להגיב במהירות לצרכים העסקיים המשתנים בזמן אמת, עיבוד הזרמים ראה גידול מהיר בביקוש.
כעת, כשחזרנו אל Apache Spark לעומת Hadoop, YARN הוא בעצם מסגרת לעיבוד אצווה. כאשר אנו מגישים עבודה ל- YARN, הוא קורא נתונים מהאשכול, מבצע פעולה וכותב את התוצאות לאשכול. ואז הוא קורא שוב את הנתונים המעודכנים, מבצע את הפעולה הבאה וכותב את התוצאות לאשכול וכן הלאה.
Spark מבצע פעולות דומות, אך הוא משתמש בעיבוד בזיכרון ומייעל את השלבים. GraphX מאפשר למשתמשים להציג את אותם נתונים כמו גרפים וכאוספים. משתמשים יכולים גם לשנות ולהצטרף לתרשימים באמצעות מערכי נתונים מבוזרים גמישים (RDDs).
סובלנות תקלה
Hadoop ו- Spark מספקים סובלנות תקלות, אך לשניהם גישה שונה. עבור HDFS ו- YARN שניהם, הדמונים הראשיים (כלומר NameNode & ResourceManager בהתאמה) בודקים את פעימות הלב של דמונים של עבדים (כלומר DataNode & NodeManager בהתאמה). אם שד עבדים כלשהו נכשל, שדים אדונים מתזמנים מחדש את כל הפעולות הממתינות והמתנהלות לעבד אחר. שיטה זו יעילה, אך היא יכולה גם להגדיל משמעותית את זמני ההשלמה של פעולות עם כשל יחיד. מכיוון שהדופ משתמש בחומרת סחורה, דרך נוספת בה HDFS מבטיחה סובלנות תקלות היא שכפול נתונים.
כפי שדנו לעיל, RDDs הם אבני בניין של Apache Spark. RDDs מספקים סובלנות תקלות ל- Spark. הם יכולים להתייחס לכל מערך נתונים הקיים במערכת אחסון חיצונית כמו HDFS, HBase, מערכת קבצים משותפת. ניתן להפעיל אותם במקביל.
RDDs יכולים להתמיד במערך נתונים בזיכרון בכל פעולות, מה שהופך פעולות עתידיות למהירות פי 10. אם RDD אבד, הוא יחושב מחדש באופן אוטומטי באמצעות התמורות המקוריות. כך Spark מספק סובלנות לתקלות.
בִּטָחוֹן
Hadoop תומך ב- Kerberos לצורך אימות, אך קשה לטפל בו. עם זאת, הוא תומך גם בספקי צד שלישי כמו LDAP (Lightweight Directory Access Protocol) לאימות. הם מציעים גם הצפנה. HDFS תומך בהרשאות קבצים מסורתיות, כמו גם ברשימות בקרת גישה (ACL). Hadoop מספקת הרשאת רמת שירות, המבטיחה ללקוחות הרשאות מתאימות להגשת משרה.
Spark תומך כרגע באימות באמצעות סוד משותף. Spark יכול להשתלב עם HDFS והוא יכול להשתמש ב- ACFS ב- HDFS ובהרשאות ברמת הקבצים. Spark יכול גם לרוץ על YARN ולנצל את היכולת של Kerberos.
מקרי שימוש שבהם Hadoop הכי מתאים:
- ניתוח נתוני ארכיון. YARN מאפשר עיבוד מקביל של כמויות עצומות של נתונים. חלקי נתונים מעובדים במקביל ובנפרד ב- DataNodes שונים ואוספים תוצאה מכל NodeManager.
- אם אין צורך בתוצאות מיידיות. Hadoop MapReduce הוא פיתרון טוב וחסכוני לעיבוד אצווה.
מקרי שימוש בהם ניצוץ מתאים ביותר:
ניתוח נתונים גדולים בזמן אמת:
ניתוח נתונים בזמן אמת פירושו עיבוד נתונים שנוצרו על ידי זרמי אירועים בזמן אמת המגיעים בקצב של מיליוני אירועים בשנייה, נתוני טוויטר למשל. כוחו של Spark טמון ביכולותיו לתמוך בזרמת נתונים יחד עם עיבוד מבוזר. זהו שילוב שימושי המספק עיבוד נתונים בזמן אמת כמעט. MapReduce מוגבל מיתרון כזה מכיוון שהוא נועד לבצע עיבוד בהפצת אצווה בכמויות גדולות של נתונים. ניתן עדיין לעבד נתונים בזמן אמת ב- MapReduce אך המהירות שלהם אינה קרובה לזו של Spark.
Spark טוען כי הוא מעבד נתונים פי 100 מהר יותר מאשר MapReduce, בעוד ש- 10x מהר יותר עם הדיסקים.
עיבוד גרפים:
רוב האלגוריתמים לעיבוד גרפים כמו דירוג עמודים מבצעים איטרציות מרובות על אותם נתונים וזה דורש מנגנון העברת הודעות. עלינו לתכנת את MapReduce במפורש כדי לטפל באיטרציות מרובות כאלה על פני אותם נתונים. בערך, זה עובד ככה: קרא נתונים מהדיסק ואחרי איטרציה מסוימת, כתוב תוצאות ל- HDFS ואז קרא נתונים מ- HDFS להמשך האיטרציה. זה מאוד לא יעיל מכיוון שהוא כולל קריאה וכתיבה של נתונים לדיסק הכוללים פעולות קלט / פלט כבדות ושכפול נתונים ברחבי האשכול לצורך סובלנות תקלות. כמו כן, לכל איטרציה של MapReduce יש חביון גבוה מאוד, והאיטרציה הבאה יכולה להתחיל רק לאחר שהעבודה הקודמת הסתיימה לחלוטין.
כמו כן, העברת הודעות דורשת ציונים של צמתים שכנים על מנת להעריך את הציון של צומת מסוים. חישובים אלה זקוקים להודעות משכנותיה (או נתונים על פני מספר שלבים של העבודה), מנגנון שחסר MapReduce. כלי עיבוד גרפים שונים כגון Pregel ו- GraphLab תוכננו במטרה לתת מענה לצורך בפלטפורמה יעילה לאלגוריתמים לעיבוד גרפים. כלים אלה הם מהירים וניתנים להרחבה, אך אינם יעילים ליצירה ועיבוד לאחר של אלגוריתמים מורכבים מרובי שלבים אלה.
הכנסת Apache Spark פתרה את הבעיות הללו במידה רבה. ניצוץ מכיל ספריית חישוב גרפי הנקראת GraphX שמפשטת את חיינו. חישוב בזיכרון יחד עם תמיכה מובנית בגרפים משפרים את ביצועי האלגוריתם בעוצמה של מעלה אחת או שתיים לעומת תוכניות MapReduce מסורתיות. Spark משתמש בשילוב של Netty ו- Akka להפצת מסרים ברחבי המוציאים לפועל. בואו נסתכל על כמה נתונים סטטיסטיים המתארים את ביצועי האלגוריתם PageRank באמצעות Hadoop ו- Spark.
אלגוריתמים לימוד מכונת איטרטיבי:
כמעט כל האלגוריתמים של למידת מכונה עובדים באופן איטרטיבי. כפי שראינו קודם, אלגוריתמים איטרטיביים מערבים צווארי בקבוק קלט / פלט ביישומי MapReduce. MapReduce משתמש במשימות גסות (מקבילות ברמת המשימות) כבדות מדי לאלגוריתמים איטרטיביים. ניצוץ בעזרת Mesos - גרעין מערכת מבוזר, שומר את מערך הביניים לאחר כל איטרציה ומריץ איטרציות מרובות על מערך הנתונים המטמון הזה שמפחית את הקלט / פלט ועוזר להריץ את האלגוריתם בצורה מהירה יותר.
ל- Spark ספריית למידת מכונה מדרגית מובנית בשם MLlib המכילה אלגוריתמים איכותיים המנצלים איטרציות ומניבים תוצאות טובות יותר מקירובי מעבר אחד המשמשים לעתים ב- MapReduce.
- עיבוד נתונים מהיר. כידוע, Spark מאפשר עיבוד בזיכרון. כתוצאה מכך, Spark מהיר עד 100 פעמים לנתונים בזיכרון RAM ולעד 10 פעמים לנתונים שנמצאים באחסון.
- עיבוד איטרטיבי. ה- RDD של Spark מאפשרים לבצע מספר פעולות מפה בזיכרון, ללא צורך לכתוב ערכות נתונים ביניים לדיסק.
- קרוב לעיבוד בזמן אמת. ניצוץ הוא כלי מצוין לספק תובנות עסקיות מיידיות. זו הסיבה מדוע משתמשים בספארק במערכת הזרמת כרטיס האשראי.
'אפאצ'י ניצוץ: רוצח או מושיע של אפאצ'י הדופ?'
התשובה לכך - Hadoop MapReduce ו- Apache Spark אינם מתחרים זה בזה. למעשה, הם משלימים זה את זה די טוב. Hadoop מביאה מערכות שליטה ענקיות בשליטה על ידי מערכות סחורות. Spark מספק עיבוד בזמן אמת בזיכרון עבור ערכות הנתונים הדורשות זאת. כאשר אנו משלבים, יכולתו של אפאצ'י ספארק, כלומר מהירות עיבוד גבוהה, ניתוח מקדים ותמיכה באינטגרציה מרובה עם הפעלת העלות הנמוכה של Hadoop על חומרת סחורות, היא נותנת את התוצאות הטובות ביותר. Hadoop מחמיא ליכולות Apache Spark. Spark לא יכול להחליף את Hadoop לחלוטין אבל החדשות הטובות הן שהביקוש ל- Spark נמצא כעת בשיא כל הזמנים! זה הזמן הנכון לשלוט בספארק ולהפיק את המירב מהאפשרויות הקריירה שנקרות בדרכך. תתחיל עכשיו!
יש לך שאלה עבורנו? אנא הזכיר זאת בסעיף ההערות ונחזור אליך בהקדם.
אם ברצונך ללמוד Spark ולבנות קריירה בתחום ה- Spark לביצוע עיבוד נתונים בקנה מידה גדול באמצעות RDD, Spark Streaming, SparkSQL, MLlib, GraphX ו- Scala עם מקרי שימוש אמיתיים, עיין באתר האינטרנט האינטראקטיבי, בשידור חי שלנו. כאן, שמגיע עם תמיכה 24 * 7 שתדריך אותך לאורך כל תקופת הלמידה שלך.