בדף הזה מוסבר איך להשתמש בקטגוריות שמופעל בהן מרחב שמות היררכי לעומסי עבודה של 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 כדי לבצע את הפעולות בתיקיות.
יוצרים אשכול 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 בניהול עצמי.
מוסיפים את הטקסט הבא לקובץ התצורה 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.הצטברות של תיקיות ריקות: תיקיות לא נמחקות באופן אוטומטי, מה שמוביל להצטברות של תיקיות ריקות בקטגוריה. הצטברות של תיקיות ריקות יכולה להשפיע על:
- אם לא מוחקים אותם באופן ידני, עלויות האחסון עולות.
להאט את פעולות הרשימה ולהגביר את הסיכון לזמן קצוב לתפוגה של פעולות הרשימה.
בעיות תאימות: אם משתמשים בגרסאות קודמות וחדשות יותר של המחבר, או מפעילים ומשביתים פעולות בתיקיות, יכולות להיווצר בעיות תאימות כשמשנים את השמות של התיקיות. נבחן את התרחיש הבא, שבו משתמשים בשילוב של גרסאות מחברים:
כדי לבצע את המשימות הבאות, צריך להשתמש בגרסה של המחבר ל-Cloud Storage שקודמת ל-2.2.23:
- כתיבת אובייקטים בתיקייה
foo/. - משנים את השם של התיקייה
foo/לשםbar/. פעולת שינוי השם מעתיקה ומוחקת את האובייקטים ב-foo/, אבל לא מוחקת את התיקייה הריקהfoo/.
- כתיבת אובייקטים בתיקייה
כדי לשנות את השם של התיקייה
bar/ל-foo/, משתמשים בגרסה 2.2.23 של המחבר של Cloud Storage, כשההגדרות של פעולות בתיקיות מופעלות.
גרסה 2.2.23 של המחבר, שבה הפעולה בתיקייה מופעלת, מזהה את התיקייה הקיימת
foo/, ולכן פעולת שינוי השם נכשלת. בגרסה הקודמת של המחבר, התיקייהfoo/לא נמחקה כי פעולת התיקייה הושבתה.