העברת מטא-נתונים מ-Dataproc Metastore ל-Lakehouse

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

תרחישים לדוגמה

  • מודרניזציה ללא שרת (serverless): מעבר מ-Hive Metastore‏ (HMS) רגיל לקטלוג מנוהל עם התאמה אוטומטית לעומס (automatic scaling), שעוזר לבטל את התקורה של ניהול ה-metastore.
  • שיתוף פעולה בין כמה מנועים: שיתוף נתונים בין מנועים, כולל Apache Spark,‏ Apache Flink,‏ Apache Hive ו-BigQuery, כדי שמדעני נתונים ומנתחי נתונים יוכלו לעבוד על אותן טבלאות בו-זמנית בלי לשכפל קבצים.
  • שילוב ישיר עם BigQuery: שליחת שאילתות לטבלאות בקוד פתוח ישירות מ-BigQuery.
  • משילות מאוחדת: איחוד המטא-נתונים למקור אמת יחיד (SSOT) לצורך גילוי נתונים ואכיפת מדיניות עקבית.
  • פורמטים מודרניים של טבלאות: אתם יכולים להשתמש בפורמטים פתוחים כמו Apache Iceberg, תוך שמירה על תאימות לעומסי העבודה הקיימים ב-Hive.

לפני שמתחילים

  1. מוודאים שקיים שירות Dataproc Metastore פעיל כמקור ההעברה.
  2. מוודאים שקטלוג היעד של Hive או של Iceberg קיים וכולל את הקטגוריות של Cloud Storage או הנתיבים שבהם נמצאים הנתונים והמטא-נתונים של טבלת המקור (לדוגמה, קטגוריית המחסן של Dataproc Metastore, כמו gs://gcs-your-project-name-0825d7b3-0627-4637-8fd0-cc6271d00eb4/hive-warehouse).

    אם קטלוג היעד לא כולל את מיקום הנתונים, העברת הטבלה נכשלת כי קטלוג היעד לא יכול לרשום את הטבלאות. כדי ליצור קטלוג Iceberg, קראו את המאמר הגדרת נקודת הקצה של קטלוג Iceberg REST.

    כדי ליצור קטלוג Hive, קראו את המאמר יצירת קטלוג Lakehouse Hive.
  3. נכנסים לחשבון Google Cloud . אנחנו ממליצים למשתמשים חדשים ב- Google Cloud ליצור חשבון כדי שיוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  4. Verify that billing is enabled for your Google Cloud project.

  5. Enable the Lakehouse, Dataproc Metastore APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Lakehouse, Dataproc Metastore APIs, if any are not already enabled.

    Roles required to enable APIs

    To enable APIs, you need the serviceusage.services.enable permission. If you created the project, then you likely already have this permission through the Owner role (roles/owner). Otherwise, you can get this permission through the Service Usage Admin role (roles/serviceusage.serviceUsageAdmin). Learn how to grant roles.

    Enable the APIs

התפקידים הנדרשים

כדי לקבל את ההרשאות שדרושות להפעלת ההעברה, בקשו מהאדמין לתת לכם את התפקידים הבאים ב-IAM בשירות Dataproc Metastore:

  • התחלת ההעברה: עריכה ב-Dataproc Metastore (roles/metastore.editor)
  • יצירת קטלוגים של Hive או Iceberg: אדמין ב-BigLake (roles/biglake.admin)
  • העברת מטא-נתונים לקטלוגים של היעד באמצעות פרויקט יעד: אדמין BigLake‏ (roles/biglake.admin) בסוכן השירות של Dataproc Metastore‏ (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com).
  • כתיבת דוחות העברה לקטגוריית הדוחות (אם לא משתמשים בקטגוריית פריטי המידע שנוצרו בתהליך הפיתוח של השירות): אדמין של אובייקטים ב-Storage‏ (roles/storage.objectAdmin) בסוכן השירות של Dataproc Metastore‏ (service-PROJECT_NUMBER@gcp-sa-metastore.iam.gserviceaccount.com)

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

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

איך ההעברה פועלת

תהליך ההעברה פועל באופן הבא:

  1. בחירת קטלוג היעד: בוחרים את נקודת הקצה של קטלוג Hive או של קטלוג Apache Iceberg REST להעברה.
  2. הפעלת ההעברה: מריצים את הפקודה gcloud metastore services migrations start או קוראים ל-method‏ startMigration בשירות Dataproc Metastore כדי להתחיל את ההעברה.
  3. בדיקת סטטוס: עוקבים אחרי התקדמות ההעברה באמצעות הפקודה gcloud metastore services migrations describe או באמצעות בדיקת ההפעלה של היעד.
  4. בדיקת דוחות ביקורות: בודקים את דוחות ה-JSON המפורטים שנכתבו בנתיב Cloud Storage שציינתם כדי לאמת את התוצאות.

הפעלת העברה

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

התחלת ההעברה

כדי להפעיל את העברת המטא-נתונים בשירות Dataproc Metastore, משתמשים במסוף Google Cloud , ב-CLI של gcloud או ב-API בארכיטקטורת REST.

המסוף

  1. נכנסים לדף Dataproc Metastore במסוף Google Cloud .

    כניסה ל-Dataproc Metastore

  2. ברשימת שירותי המטא-נתונים, לוחצים על שם השירות שרוצים להעביר.

  3. בדף הפרטים של השירות, לוחצים על Migrate to Lakehouse בסרגל הניווט העליון.

  4. בשדה שם ההעברה, מזינים שם לתצוגה של ההעברה.

  5. בשדה Migration type, בוחרים באפשרות Backfill migration כדי לבצע את ההעברה, או באפשרות Dry run כדי לאמת את ההעברה בלי לכתוב מטא-נתונים בקטלוג היעד.

  6. קובעים את הגדרות היעד:

    • ‫Reports: (אופציונלי) בוחרים את הנתיב ב-Cloud Storage שבו רוצים לשמור את דוח סטטוס ההעברה. אם לא צוין מיקום, הדוח נוצר בקטגוריית פריטי המידע שנוצרו בתהליך הפיתוח (Artifact) של שירות Dataproc Metastore.
    • טיפול בהתנגשויות: בוחרים אם לדלג על רשומות כפולות במסד הנתונים או להחליף אותן.
  7. בשדה Destination, בוחרים את סוגי הקטלוגים שאליהם רוצים להעביר את הנתונים: Iceberg REST catalog endpoint או Hive metastore. אתם יכולים להעביר לקטלוג אחד או לשני הקטלוגים בו-זמנית, בהתאם לסוג הטבלאות שאתם צריכים להעביר ממסד הנתונים של המקור.

    אם אתם עוברים לקטלוג REST של Iceberg:

    1. בשדה Project, בוחרים את הפרויקט שמכיל את הקטלוג שאליו רוצים להעביר את הנתונים.
    2. ב-Iceberg REST catalog, בוחרים את הקטלוג שאליו רוצים להעביר את הנתונים או לוחצים על Create catalog כדי ליצור קטלוג חדש.

    אם אתם עוברים לקטלוג Hive:

    1. בשדה Project, בוחרים את הפרויקט שמכיל את הקטלוג שאליו רוצים להעביר את הנתונים.
    2. ב-Hive catalog, בוחרים את הקטלוג שאליו רוצים להעביר את הנתונים, או לוחצים על Create catalog כדי ליצור קטלוג חדש.
  8. לוחצים על התחלת ההעברה.

תועברו אוטומטית לכרטיסייה Migrations. בקטע Managed Migrations, ההעברה מופיעה והסטטוס ממשיך להתעדכן עד שההעברה מסתיימת.

gcloud

כדי להתחיל את ההעברה באמצעות gcloud, מריצים את הפקודה gcloud metastore services migrations start:

gcloud metastore services migrations start SERVICE_ID \
    --location=REGION \
    --hive-catalog="projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID" \
    --hive-databases="HIVE_DB_1,HIVE_DB_2" \
    --iceberg-catalog="projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID" \
    --iceberg-namespaces="ICEBERG_NAMESPACE_1,ICEBERG_NAMESPACE_2" \
    --async

מחליפים את מה שכתוב בשדות הבאים:

  • ‫SERVICE_ID: המזהה של שירות Dataproc Metastore
  • ‫REGION: האזור של שירות Dataproc Metastore
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ‫HIVE_CATALOG_ID: מזהה קטלוג Hive של היעד
  • ‫HIVE_DB_1, ‏HIVE_DB_2: מסדי הנתונים של Hive שרוצים להעביר.
  • ‫ICEBERG_CATALOG_ID: מזהה קטלוג Iceberg של היעד
  • ‫ICEBERG_NAMESPACE_1, ‏ICEBERG_NAMESPACE_2: מרחבי השמות של Iceberg שרוצים להעביר.

REST

כדי להפעיל את העברת המטא-נתונים באמצעות ה-API בארכיטקטורת REST, מפעילים את ה-method‏ startMigration עם ההגדרה BigLakeMetastoreMigrationConfig:

curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json" \
    -d '{
      "migrationExecution": {
        "biglakeMetastoreMigrationConfig": {
          "mode": "BACKFILL",
          "dryRun": false,
          "reportPath": "gs://BUCKET_NAME/PATH/",
          "conflictPolicy": "SKIP",
          "hiveConfig": {
            "catalog": "projects/PROJECT_ID/catalogs/HIVE_CATALOG_ID",
            "databases": ["HIVE_DB_1", "HIVE_DB_2"]
          },
          "icebergConfig": {
            "catalog": "projects/PROJECT_ID/catalogs/ICEBERG_CATALOG_ID",
            "namespaces": ["ICEBERG_NAMESPACE_1", "ICEBERG_NAMESPACE_2"]
          }
        }
      }
    }' \
    "https://metastore.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID:startMigration"

מחליפים את מה שכתוב בשדות הבאים:

  • ‫BUCKET_NAME: השם של הקטגוריה של Cloud Storage לדוחות
  • ‫PATH: הנתיב בקטגוריה לדוחות
  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ‫HIVE_CATALOG_ID: מזהה קטלוג Hive של היעד
  • ‫HIVE_DB_1, ‏HIVE_DB_2: מסדי הנתונים של Hive שרוצים להעביר.
  • ‫ICEBERG_CATALOG_ID: מזהה קטלוג Iceberg של היעד
  • ‫ICEBERG_NAMESPACE_1, ‏ICEBERG_NAMESPACE_2: מרחבי השמות של Iceberg שרוצים להעביר.
  • ‫REGION: האזור של שירות Dataproc Metastore
  • ‫SERVICE_ID: המזהה של שירות Dataproc Metastore

דגימת ביצוע ההעברה

הבקשה מתחילה פעולה ממושכת (LRO) ומחזירה מזהה ייחודי של הפעלת ההעברה. אתם יכולים לעקוב אחרי ההתקדמות של ההרצה באמצעות ה-CLI של gcloud או ה-API בארכיטקטורת REST:

gcloud

כדי לתאר את הרצת ההעברה באמצעות gcloud, מריצים את הפקודה gcloud metastore services migrations describe:

gcloud metastore services migrations describe MIGRATION_EXECUTION_ID \
    --service=SERVICE_ID \
    --location=REGION

מחליפים את מה שכתוב בשדות הבאים:

  • ‫MIGRATION_EXECUTION_ID: המזהה של הרצת ההעברה שהוחזר בשלב הקודם
  • ‫SERVICE_ID: המזהה של שירות Dataproc Metastore
  • ‫REGION: האזור של שירות Dataproc Metastore

REST

כדי לעקוב אחרי התקדמות ההרצה באמצעות ה-API בארכיטקטורת REST, צריך להפעיל את ה-method‏ get בנתיב ההפעלה הזה:

curl -X GET \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    "https://metastore.googleapis.com/v1/projects/PROJECT_ID/locations/REGION/services/SERVICE_ID/migrationExecutions/MIGRATION_EXECUTION_ID"

מחליפים את מה שכתוב בשדות הבאים:

  • ‫PROJECT_ID: מזהה הפרויקט ב- Google Cloud
  • ‫REGION: האזור של שירות Dataproc Metastore
  • ‫SERVICE_ID: המזהה של שירות Dataproc Metastore
  • ‫MIGRATION_EXECUTION_ID: המזהה של הרצת ההעברה שהוחזר בשלב הקודם

דוח העברה מפורט

אחרי שההעברה (מילוי חוסרים או הרצת בדיקה) מסתיימת, כלי ההעברה כותב שני קובצי דוחות JSON מפורטים על סמך הסכימה MigrationReport לנתיב היעד ב-Cloud Storage שצוין ב-reportPath:

  • ‫summary.json: מכיל את המבנה המצטבר ברמה גבוהה של MigrationSummary.
  • ‫full_report.json: מכיל דוח העברה מפורט יותר. מידע נוסף זמין במאמר CatalogReport.

כדי לצפות בדוח במסוף Google Cloud :

  1. נכנסים לדף Dataproc Metastore במסוף Google Cloud .

    כניסה ל-Dataproc Metastore

  2. ברשימת שירותי המטא-נתונים, לוחצים על השם המוצג של השירות שמכיל את הדוח.

    הדף Migrations נפתח.

  3. בקטע Managed Migrations, בוחרים את שם ההעברה שמכילה את הדוח.

    נפתח הדף Migration details, שבו מוצגים פרטים על מסדי הנתונים והטבלאות שהועברו וסטטוס ההעברה שלהם.

מגבלות

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

המאמרים הבאים