שימוש בקטגוריות עם מרחב שמות היררכי לעומסי עבודה ב-Hadoop

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

סקירה כללית

כשמשתמשים בקטגוריה של Cloud Storage עם מרחב שמות היררכי, אפשר להגדיר את החיבור ל-Cloud Storage כך שישתמש בפעולה שינוי שם התיקייה לעומסי עבודה כמו Hadoop,‏ Spark ו-Hive.

בקטגוריה בלי מרחב שמות היררכי, פעולת שינוי שם ב-Hadoop, ב-Spark וב-Hive כוללת כמה משימות של העתקה ומחיקה של אובייקטים, מה שמשפיע על הביצועים והעקביות. כשמשנים שם של תיקייה באמצעות החיבור ל-Cloud Storage, הפעולה מתבצעת בצורה אופטימלית ועקבית, גם אם התיקייה מכילה מספר גדול של אובייקטים.

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

כדי להשתמש בתכונות של קטגוריות עם מרחב שמות היררכי, צריך להשתמש בגרסאות הבאות של החיבור ל-Cloud Storage:

  • ‫2.2.23 ואילך (אם משתמשים בגרסה 2.x.x)
  • ‫3.0.1 ואילך (אם משתמשים בגרסה 3.x.x)

לגרסאות קודמות של המחבר (3.0.0 וגרסאות שקודמות ל-2.2.23) יש מגבלות. מידע נוסף על המגבלות מופיע במאמר תאימות לגרסה 3.0.0 של מחבר Cloud Storage או לגרסאות שקודמות ל-2.2.23.

הפעלת החיבור ל-Cloud Storage באשכול

בקטע הזה מוסבר איך להפעיל את החיבור ל-Cloud Storage באשכול של Managed Service for Apache Spark ובאשכול של Hadoop בניהול עצמי.

Managed Service for Apache Spark

אתם יכולים להשתמש ב-Google Cloud CLI כדי ליצור אשכול של Managed Service for Apache Spark ולהפעיל את החיבור ל-Cloud Storage כדי לבצע את הפעולות בתיקיות.

  1. יוצרים אשכול Managed Service for Apache Spark באמצעות הפקודה הבאה:

      gcloud dataproc clusters create CLUSTER_NAME
      --properties=core:fs.gs.hierarchical.namespace.folders.enable=true,
      core:fs.gs.http.read-timeout=30000
      

    כאשר:

    • ‫CLUSTER_NAME הוא שם האשכול. לדוגמה, my-cluster
    • הפקודה fs.gs.hierarchical.namespace.folders.enable משמשת להפעלת מרחב השמות ההיררכי בקטגוריה.
    • ‫fs.gs.http.read-timeout הוא משך הזמן המקסימלי המותר, באלפיות השנייה, לקריאת נתונים מחיבור קיים. זו הגדרה אופציונלית.

‫Hadoop בניהול עצמי

כדי לבצע את הפעולות בתיקיות, אתם יכולים להפעיל את החיבור ל-Cloud Storage באשכול Hadoop בניהול עצמי.

  1. מוסיפים את הטקסט הבא לקובץ התצורה core-site.xml:

        <property>
          <name>fs.gs.hierarchical.namespace.folders.enable</name>
          <value>true</value>
        </property>
        <property>
          <name>fs.gs.http.read-timeout</name>
          <value>30000</value>
        </property>
      

    כאשר:

    • ‫fs.gs.hierarchical.namespace.folders.enable משמש להפעלת מרחב השמות ההיררכי בקטגוריה
    • ‫fs.gs.http.read-timeout הוא משך הזמן המקסימלי המותר, באלפיות השנייה, לקריאת נתונים מחיבור קיים. ההגדרה הזו היא אופציונלית.

תאימות לגרסה 3.0.0 של המחבר ל-Cloud Storage או לגרסאות שקודמות ל-2.2.23

אם משתמשים בגרסה 3.0.0 של החיבור ל-Cloud Storage או בגרסאות שקודמות ל-2.2.23, או אם משביתים את הפעולות בתיקיות במרחב שמות היררכי, יכולות להיות המגבלות הבאות:

  • שינוי שמות של תיקיות בצורה לא יעילה: פעולות של שינוי שמות של תיקיות ב-Hadoop מתבצעות באמצעות פעולות העתקה ומחיקה ברמת האובייקט, שהן איטיות ופחות יעילות מהפעולה הייעודית rename folder.

  • הצטברות של תיקיות ריקות: תיקיות לא נמחקות באופן אוטומטי, מה שמוביל להצטברות של תיקיות ריקות בקטגוריה. הצטברות של תיקיות ריקות יכולה להשפיע על:

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

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

    1. כדי לבצע את המשימות הבאות, צריך להשתמש בגרסה של המחבר ל-Cloud Storage שקודמת ל-2.2.23:

      1. כתיבת אובייקטים בתיקייה foo/.
      2. משנים את השם של התיקייה foo/ לשם bar/. פעולת שינוי השם מעתיקה ומוחקת את האובייקטים ב-foo/, אבל לא מוחקת את התיקייה הריקה foo/.
    2. כדי לשנות את השם של התיקייה bar/ ל-foo/, משתמשים בגרסה 2.2.23 של המחבר של Cloud Storage, כשההגדרות של פעולות בתיקיות מופעלות.

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

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