קטלוגי אייסברג: מדריך למהנדסי נתונים

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

מהו קטלוג אייסברג?

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

אחריות מרכזית של קטלוג אייסברג

האחריות הבסיסיות של קטלוג אייסברג הן:

  1. מיפוי נתיבי טבלאות: קישור נתיב טבלה (למשל, “db.table”) לקובץ המטא-דאטה המתאים.
  2. תמיכה בפעולות אטומיות: הבטחת מצב טבלה עקבי במהלך קריאות/כתיבות מתמשכות.
  3. ניהול מטא-דאטה: אחסון וניהול המטא-דאטה, הבטחת נגישות ועקביות.

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


סוגי קטלוגי אייסברג

1. קטלוג האדוופ

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

דוגמת תצורה

כדי להגדיר את קטלוג האדוופ עם אפאצ'י ספרק:

SQL

 

דרך שונה להגדיר קטלוג בעבודת הספרק עצמה:

SQL

 

בדוגמה שלמעלה, הגדרנו את שם הקטלוג ל”local” כפי שהוגדר בספרק “spark.sql.catalog.local". זה יכול להיות בחירה של השם שלך.

יתרונות:

  • הקמה פשוטה, אין צורך במטא-סטור חיצוני.
  • אידיאלי לסביבות פיתוח ובדיקה.

חסרונות:

  • מוגבל למערכות קבצים בודדות (למשל, דלי S3 בודד).
  • לא מומלץ לשימוש בייצור

2. קטלוג הייב

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

דוגמת קונפיגורציה

כדי להשתמש בקטלוג Hive ב-Spark:

SQL

 

יתרונות:

  • תאימות גבוהה עם כלי נתונים גדולים קיימים.
  • ניטרלי לגבי ענן וגמיש בין מתקנים מקומיים למתקנים בענן.

חסרונות:

  • דורש תחזוקה של metastore של Hive, מה שעשוי להוסיף מורכבות תפעולית.
  • חסר תמיכה בעסקאות בין-שולחנות, מה שמגביל את האטומיות לפעולות בין שולחנות

3. קטלוג AWS Glue

הקטלוג AWS Glue הוא קטלוג מטא-דאטה מנוהל המסופק על ידי AWS, מה שהופך אותו לאידיאלי עבור ארגונים שהשקיעו רבות באקוסיסטם של AWS. הוא מטפל במטא-דאטה של טבלאות Iceberg כמאפייני טבלה בתוך AWS Glue, ומאפשר שילוב חלק עם שירותי AWS אחרים.

דוגמת קונפיגורציה

כדי להקים את AWS Glue עם Iceberg ב-Spark:

SQL

 

יתרונות:

  • שירות מנוהל, מפחית את העומס על התשתית והתחזוקה.
  • שילוב חזק עם שירותי AWS.

חסרונות:

  • ספציפי ל-AWS, מה שמגביל את הגמישות בין עננים.
  • אין תמיכה בעסקאות בין-שולחנות

4. קטלוג Project Nessie

פרויקט נסי מציע גישה של "נתונים כקוד", המאפשרת בקרת גרסאות לנתונים. עם יכולות הה branching וה tagging הדומות ל-Git, נסי מאפשר למשתמשים לנהל סניפים של נתונים באופן דומה לקוד מקור. הוא מספק מסגרת חזקה לעסקאות מרובות טבלאות ומרובות הצהרות.

דוגמת קונפיגורציה

כדי לקבוע את נסי כקטלוג:

SQL

 

יתרונות:

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

חסרונות:

  • דורש אירוח עצמי, מה שמוסיף מורכבות לתשתית.
  • תמיכה מוגבלת בכלים בהשוואה ל-Hive או AWS Glue

5. קטלוג JDBC

קטלוג JDBC מאפשר לך לאחסן מטא-דטה בכל מסד נתונים תואם JDBC, כמו PostgreSQL או MySQL. קטלוג זה אינו תלוי בענן ומבטיח זמינות גבוהה על ידי שימוש במערכות RDBMS אמינות.

דוגמת קונפיגורציה

SQL

 

יתרונות:

  • קל להקים עם תשתית RDBMS קיימת.
  • זמינות גבוהה ואינו תלוי בענן.

חסרונות:

  • אין תמיכה בעסקאות מרובות טבלאות.
  • מגדיל את התלות בדרייברים של JDBC עבור כל הכלים המתקשרים

6. קטלוג Snowflake

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

יתרונות:

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

חסרונות:

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

7. קטלוגים מבוססי REST

Iceberg תומך בקטלוגים מבוססי REST כדי לטפל באתגרים שקשורים ליישומים של קטלוגים מסורתיים.

אתגרים עם קטלוגים מסורתיים

  1. מורכבות על צד הלקוח: קטלוגים מסורתיים לעתים קרובות מחייבים הגדרות ותלות בצד הלקוח עבור כל שפת תכנות (Java, Python, Rust, Go), מה שיכול להוביל לשוניות בין שפות תכנות שונות ומנועי עיבוד שונים. קרא עוד על זה כאן.
  2. מגבלות בגבישת הקניות: ניהול מטא-נתונים ופעולות טבלאות ברמת הלקוח עשוי להכניס אתגרים, שעלולים להשפיע על ביצועים ועל הגבישות בסביבות נתונים בגודל גדול.

יתרונות שבאים עם החלפת קטלוג REST

  • אינטגרציה סטנדרטית ופשוטה יותר עבור לקוחות: לקוחות יכולים להתקשר עם קטלוג REST באמצעות פרוטוקולים סטנדרטיים של HTTP, מה שמסיר את הצורך בהגדרות מורכבות או תלות.
  • הגבישות: הארכיטקטורה מבחינת השרת של קטלוג REST מאפשרת ניהול מטא-נתונים בגודל גדלים וגישות גישה מרובות.
  • גמישות: ארגונים יכולים להטמיע לוגיקת קטלוג מותאמת בצד השרת, בהתאמה לצרכים ספציפיים מבלי לשנות את יישומי הלקוח.

מספר מימושים של קטלוג REST צצו, כל אחד מהם מתמקד בצרכים ארגוניים ספציפיים:

  • גרביטינו: שירות קטלוג REST בקוד פתוח Iceberg המקל על אינטגרציה עם Spark ומנועי עיבוד אחרים, ומציע התקנה פשוטה לניהול טבלאות Iceberg.
  • טאבולר: שירות מנוהל המספק ממשק קטלוג REST, המאפשר לארגונים לנצל את היכולות של Iceberg מבלי העומס של ניהול תשתית קטלוג. קראו עוד ב טאבולר.
  • אפאצ'י פולאריס: קטלוג בקוד פתוח עם כל הפיצ'רים עבור אפאצ'י Iceberg, המיישם את ה-REST API כדי להבטיח אינטראופרביליות חלקה בין מנועים פלטפורמות כמו אפאצ'י דוריס, אפאצ'י פלינק, אפאצ'י Spark, StarRocks וטרינו. קראו עוד ב GitHub.

אחד מהדרכים האהובות עליי והפשוטות לנסות את קטלוג REST עם טבלאות Iceberg הוא באמצעות יישום REST ג'אווה פשוט. אנא בדקו את הקישור ב-GitHub כאן.

סיכום

בחירת קטלוג Apache Iceberg המתאים היא קריטית לאופטימיזציה של אסטרטגיית ניהול הנתונים שלך. הנה סקירה קצרה כדי להדריך את ההחלטה שלך:

  • קטלוג Hadoop: מתאים ביותר לסביבות פיתוח ובדיקות עקב פשטותו. אולם, תוכלו להתעסק בבעיות עקביות בתרחישי ייצור עם כתיבות מקבילות.
  • קטלוג Hive Metastore: אידיאלי עבור ארגונים עם תשתיות Hive קיימות. הוא מציע תאימות עם מגוון רחב של כלים לנתונים גדולים ותומך בפעולות מורכבות על נתונים. עם זאת, תחזוק שירות Hive Metastore עשוי להוסיף פשיטות תפעולית.
  • קטלוג AWS Glue: אופטימלי עבור אלה שהשקיעו הרבה באקוסיסטמה של AWS. הוא מספק אינטגרציה חלקה עם שירותי AWS ומפחית את הצורך בשירותי מטה-נתונים בהנהלה עצמית. עם זאת, זה ספציפי ל-AWS, מה שעשוי להגביל בגמישות בין עננים.
  • קטלוג JDBC: מתאים לסביבות המעדיפות בסיסי נתונים רצופים לאחסון מטה-נתונים, מאפשר את השימוש בכל בסיס נתונים המתאים ל-JDBC. זה מציע גמישות ומשתמש בתשתית RDBMS קיימת אך עשוי להוסיף תלותים נוספות ולדרוש ניהול זהיר של חיבורי בסיס נתונים.
  • קטלוג REST: אידיאלי לתרחישים הדורשים API תקני עבור פעולות קטלוג, שמשפר אינטרופרביליות בין מנועי עיבוד שונים ושפות. הוא מתריע מפרטי יישום של הקטלוג מהלקוחות אך דורש הקמת שירות REST כדי לטפל בפעולות הקטלוג, מה שעשוי להוסיף פשיטות קושי בהגדרת התחלה.
  • קטלוג נסיי לפרויקט: מתאים במיוחד לארגונים שזקוקים לשליטה על גרסאות המידע שלהם, דומה ל-Git. הוא תומך ב-branching, tagging ובעסקאות מרובות בטבלאות. הוא מספק יכולות ניהול מידע חזקות, אך דורש פרסום וניהול שירות נסיי, שעשוי להוסיף עומס תפעולי.

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

Source:
https://dzone.com/articles/iceberg-catalogs-a-guide-for-data-engineers