כמה מילים על - Spark

פרויקט קוד פתוח של Apache חדש יחסית לעומת hadoop, שנועד להתגבר על החסרונות של Hadoop. Spark הוא מנוע גנרי לעיבוד מהיר של big data

בדומה ל-hadoop גם ב-Spark עיבוד הנתונים הוא מקבילי ומבוזר על commodity hardware (מערכות רגילות יחסית שידוע מראש שמדי פעם יהיו Nodes שייפלו). Spark נכתב ב-scala ורץ על JVM. כלי ה-debug של Java זמינים גם למתכנת spark.

ל-Spark יש API עשיר שמאפשר להריץ על cluster של הרבה מחשבים שאילתות SQL, מודלים של machine learning, graph processing ועוד כדי לעבד big data במהירות.

בעיבוד מבוזר יש הרבה אתגרים שאין בתכנות רגיל על מכונה יחידה. למשל - 

  • טיפול בנפילות של חלק מהמכונות
  • data latency 
  • סנכרון בין תהליכים 
  • scalability 
ועוד אתגרים רבים.

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

אחת הסיבות ש-spark הפך להיות כל כך פופולארי היא מהירות העיבוד שלו. Spark משתמש ב-in-memory caching וב-DAG-based processing engine כדי להגדיל את מהירות העיבוד. הוא מנצל את הזיכרון של ה-Nodes כדי לשמור חישובי ביניים ולהשתמש בהם שוב כשצריך. דבר זה מגדיל את מהירות העיבוד בצורה משמעותית. Spark הצליח להגיע לביצועים שמהירים פי 100 מ-hadoop עבור in-memory computations והוא מהיר פי 10 עבור חישובים על הדיסק. Spark ניצח את Hadoop בתחרות של מיון מידע בגודל של peta-byte (התחרות נקראה Daytona GraySort contest), היה מהיר פי 3 מ-hadoop והשתמש בפי 10 פחות חומרה מ-Hadoop.

Spark גם יודע לעבד בצורה מהירה מודלים איטרטיבים של Machine learning הודות ל-in-memory caching שלו. הוא מספק תגובה ב-real-time עבור שאילתות על כמויות מידע גדולות, ויש לו low latency באנליזות שמבוצעות על live data streams.

ניתן להשתמש ב-spark עם השפות python, Scala ו-java.

Spark מאחד בתוכו את כל הכלים הנצרכים ל-data science pipeline. במקום להשתמש בהרבה כלים נפרדים לצורך כל ה-pipeline. הוא מספק API לצורך:

  • data mungling (preprocessing של המידע לפורמט הנדרש)
  • ETL (ראשי תיבות של Extract, Transform and Load שזהו תהליך של העברת מידע מ-DB אחד לאחר)
  • Machine Learning
  • Graph processing
  • Streaming
  • Interactive and batch processing

וכך ניתן לבצע את כל ה-pipeline על אותו Framework

הוא גם מקל בכל תהליך הפיתוח, ה-deployment והתחזוקה. יש לו אינטגרציה עם הרבה כלים ב- ecosystem של Hadoop והוא יכול לקרוא ולכתוב להרבה פורמטים ומקורות מידע כמו HDFS, Cassandra, S3, HBase ועוד.

Spark (בשונה מ-hadoop) הוא לא מערכת של data storage אבל הוא מנוע עם יכולות מגוונות של קריאה וכתיבה. בנוסף הוא מספק DataFrame API לצורך קריאת מידע מובנה ע"י Spark SQL

עד כאן להפעם.

אם אהבתם, תכתבו משהו למטה...

7 תגובות:

  1. אנונימי13/7/21 13:12

    מוסבר פשוט ומעניין !

    השבמחק
  2. אנונימי21/7/22 10:15

    כתוב מצויין תודה רבה

    השבמחק
  3. אנונימי16/8/22 13:32

    מעולה!

    השבמחק
  4. אנונימי1/12/22 12:00

    תודה!! מסיר את הלוט.. מסביר בצורה מצונית ומקצועית

    השבמחק