Cloud Storage הוא חלק מרכזי באחסון ובעבודה עם Big Data ב-Google Cloud. לדוגמה, אפשר להשתמש ב-Cloud Storage כדי לטעון נתונים ל-BigQuery, להחזיק קבצים ונתונים זמניים במחסן ביניים (Stage) בשביל צינורות עיבוד הנתונים של Dataflow ולשלב אותם עם Dataproc, כדי שתוכלו להריץ משימות ב-Apache Hadoop או ב-Apache Spark ישירות על הנתונים שלכם ב-Cloud Storage.
בדף הזה נסביר איך להשתמש בכלי שורת הפקודה של Google Cloud כדי לבצע משימות Big Data, כמו העתקת קבצים גדולים או העתקה של קבצים רבים במקביל. למבוא ל-gcloud, ראו את המדריך למתחילים של gcloud.
לפני שמתחילים
כדי להפיק את המרב מהדוגמאות שמופיעות בדף, אתם צריכים לבצע את הפעולות הבאות (אם עדיין לא עשיתם זאת):
העתקת קבצים רבים לקטגוריה
הפקודה cp מעלה באופן יעיל מספר גדול של קבצים על ידי ביצוע אוטומטי של עותקים מקבילים (multi-threads/multi-processing) לפי הצורך. כדי להעתיק באופן רקורסיבי את ספריות המשנה, משתמשים בדגל --recursive בפקודה.
לדוגמה, כדי להעתיק לקטגוריה קבצים, כולל ספריות משנה, מספרייה מקומית בשם top-level-dir, אפשר להשתמש בפקודה:
gcloud storage cp top-level-dir gs://example-bucket --recursive
אפשר להשתמש בתווים כלליים לחיפוש כדי שהפקודה תפעל על קבוצת שמות מסוימת. לדוגמה, כדי להעתיק רק קבצים שמתחילים ב-image:
gcloud storage cp top-level-dir/subdir/image* gs://example-bucket --recursive
אפשר להסיר קבצים באמצעות אותו תו כללי לחיפוש:
gcloud storage rm gs://example-bucket/top-level-dir/subdir/image*
נוסף על העתקת קבצים מקומיים לענן ולהפך, אפשר להעתיק גם בענן, לדוגמה:
gcloud storage cp gs://example-bucket/top-level-dir/subdir/** gs://example-bucket/top-level-dir/subdir/subdir2
gcloud storage מזהה באופן אוטומטי שאתם מעבירים מספר קבצים ויוצר אותם בספרייה חדשה בשם subdir2.
סנכרון ספרייה מקומית
אם רוצים לסנכרן ספרייה מקומית עם קטגוריה או להפך, אפשר לעשות זאת באמצעות הפקודה gcloud storage rsync. לדוגמה, כדי ליצור התאמה בין gs://example-bucket לתוכן של הספרייה המקומית local-dir, אפשר להשתמש בפקודה הבאה:
gcloud storage rsync local-dir gs://example-bucket --recursive
השימוש בדגל --delete-unmatched-destination-objects מסמן לפקודה למחוק קבצים ביעד (gs://example-bucket בפקודה שלמעלה) שלא נמצאים במקור (local-dir). אפשר גם לסנכרן בין שתי קטגוריות.
העתקת קבצים גדולים לקטגוריה
באופן כללי, כשעובדים עם Big Data, אחרי שהנתונים נמצאים בענן הם אמורים להישאר שם. אחרי שהנתונים נמצאים ב- Google Cloud, אפשר להעביר אותם במהירות לשירותים אחרים באותו מיקום, כמו Compute Engine.
כדי להעתיק קובץ מקומי גדול לקטגוריה, משתמשים בפקודה:
gcloud storage cp local-file gs://example-bucket
כדי להעתיק קובץ גדול מקטגוריה קיימת, משתמשים בפקודה:
gcloud storage cp gs://example-source-bucket/file gs://example-destination-bucket
gcloud storage מפיק את המרב מהתכונות העלאה שניתן להמשיך והורדה שניתן להמשיך ב-Cloud Storage. התכונות האלה חשובות במיוחד לקבצים גדולים כי הסבירות לכשלי רשת אצל ה-ISP שלכם גדלה בהתאם לכמות הנתונים שמועברים. הפקודה gcloud storage מחדשת את ההעלאה על בסיס מספר הבייטים שהשרת קיבל בפועל, וכך היא מונעת שליחה מחדש של בייטים שלא לצורך ומבטיחה שההעלאה תושלם בסופו של דבר. אותה לוגיקה מיושמת גם במקרה של הורדות, על בסיס גודל הקובץ המקומי.
הגדרת קטגוריה
משימות אופייניות של Big Data שבהן רוצים להגדיר קטגוריה כוללות העברת נתונים לסוג אחסון (storage class) שונה, הגדרת ניהול גרסאות של אובייקטים או הגדרת כלל של מחזור חיים.
אפשר להציג ברשימה את פרטי ההגדרות של הקטגוריה בעזרת buckets describe:
gcloud storage buckets describe gs://example-bucket
בפלט תוכלו לראות את פרטי ההגדרות של הקטגוריה. אפשר להגדיר את רובם גם דרך gcloud storage:
- CORS: מאפשר שליטה בהגדרות של שיתוף משאבים בין מקורות לקטגוריה.
- Website: מאפשר לאובייקטים בקטגוריה לפעול כדפי אינטרנט או לשמש כנכסים סטטיים באתר.
- Versioning: גורם לכך שפעולות מחיקה של אובייקטים בקטגוריה ייצרו גרסאות לא עדכניות.
- Storage Class: מאפשר לקבוע את הגדרות סוג האחסון (storage class) במהלך יצירת הקטגוריה.
- Lifecycle: מאפשר לפעולות תקופתיות לרוץ בקטגוריה. הפעולה הנפוצה ביותר היא מחיקה של אובייקטים לא פעילים.
לדוגמה, אם אתם רוצים לשמור קבצים בקטגוריה מסוימת למשך יום אחד בלבד, אתם יכולים להגדיר לקטגוריה כלל של מחזור חיים באמצעות הפקודה הבאה:
echo '{ "rule": [{ "action": {"type": "Delete"}, "condition": {"age": 1}}]}' > lifecycle_config.json
gcloud storage buckets update gs://example-bucket --lifecycle-file=lifecycle_config.json
מעכשיו, כל האובייקטים שנמצאים בקטגוריה יותר מיום אחד יימחקו ממנה באופן אוטומטי. אפשר לבדוק את ההגדרות שקבעתם באמצעות הפקודה buckets describe (פקודות הגדרה אחרות פועלות בצורה דומה):
gcloud storage buckets describe gs://example-bucket
שיתוף נתונים בקטגוריה
אם אתם עובדים עם Big Data, כנראה שאתם עובדים על קבצים בשיתוף פעולה, ואתם צריכים את האפשרות להעניק גישה לאנשים ספציפיים או לקבוצות ספציפיות.
כללי המדיניות של ניהול זהויות והרשאות גישה (IAM) מגדירים מי יכול לגשת לקבצים שלכם ומה מותר להם לעשות. כדי לצפות במדיניות IAM של קטגוריה מסוימת, אפשר להשתמש בפקודה buckets get-iam-policy:
gcloud storage buckets get-iam-policy gs://example-bucket
התגובה לפקודה מציגה את חשבונות המשתמש, שהם החשבונות שיש להם גישה לקטגוריה שלכם, ואת התפקידים, שהם קבוצות הרשאות שהוקצו לחשבונות המשתמשים.
קיימים שלושה תרחישים נפוצים של שיתוף נתונים – שיתוף באופן ציבורי, שיתוף עם קבוצה ושיתוף עם אדם:
שיתוף באופן ציבורי: בקטגוריה שהתוכן שלה מיועד לפרסום ולקריאה של כל המשתמשים באינטרנט, תוכלו להגדיר את מדיניות IAM באמצעות הסיווג AllUsers:
gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=allUsers --role=roles/storage.objectViewer
שיתוף עם קבוצה: במקרה של שותפי עריכה שאין להם גישה למשאבים האחרים שלכם ב- Google Cloud , מומלץ ליצור קבוצה ב-Google ואז להוסיף את הקבוצה הזו לקטגוריה. לדוגמה, כדי לתת הרשאה לקבוצה ב-Google
my-group, אפשר להגדיר את מדיניות IAM הבאה:gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=group:my-group@googlegroups.com --role=roles/storage.objectViewer
למידע נוסף, ראו שימוש בקבוצה כדי לשלוט בגישה לאובייקטים.
שיתוף עם אדם אחד: אם יש לכם שותפי עריכה רבים, אתם צריכים להשתמש בקבוצה כדי להעניק להם גישה ביחד. לאדם אחד אפשר להעניק גישת קריאה באופן הבא:
gcloud storage buckets add-iam-policy-binding gs://example-bucket --member=user:jeffersonloveshiking@gmail.com --role=roles/storage.objectViewer
הסרת המשאבים של קטגוריה
כדי להסיר את כל המשאבים שבקטגוריה במהירות, משתמשים בפקודה הבאה:
gcloud storage rm gs://example-bucket/ --recursive
עבודה עם סיכומי ביקורת (checksums)
כשמבצעים פעולות העתקה, הפקודות gcloud storage cp ו-gcloud storage rsync מאמתות שסיכום הביקורת (checksum) של קובץ המקור תואם לסיכום הביקורת של קובץ היעד. במקרים הנדירים שבהם אין התאמה בין סיכומי הביקורת, פקודת gcloud storage מוחקת את העותק הלא תקין ומדפיסה הודעת אזהרה. מידע נוסף זמין במאמר אימות סיכום ביקורת (checksum).
אפשר להשתמש ב-gcloud storage כדי לקבל את סיכום הביקורת של אובייקט בקטגוריה. לדוגמה, נניח שאתם מעתיקים אובייקט נתונים ציבוריים של Landsat לקטגוריית העבודה שלכם, באמצעות הפקודה:
gcloud storage cp gs://gcp-public-data-landsat/LC08/01/001/003/LC08_L1GT_001003_20140812_20170420_01_T2/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF gs://example-bucket
עכשיו אתם יכולים לקבל את סיכומי הביקורת של גרסת הקובץ הציבורית וגם של גרסת הקובץ בקטגוריה שלכם, כדי לוודא שיש ביניהם התאמה:
gcloud storage objects describe gs://example-bucket/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF
gcloud storage objects describe gs://gcp-public-data-landsat/LC08/01/001/003/LC08_L1GT_001003_20140812_20170420_01_T2/LC08_L1GT_001003_20140812_20170420_01_T2_B3.TIF
אפשר גם להשתמש ב-gcloud storage כדי לחשב את סיכום הביקורת של קובץ מקומי. לדוגמה, נניח שהנתונים שלכם נמצאים בקובץ במרכז נתונים מקומי והעתקתם אותם ל-Cloud Storage. בעזרת gcloud storage hash תוכלו לקבל את סיכום הביקורת של הקובץ המקומי, ולהשוות אותו לסיכום הביקורת של הקובץ שהעתקתם לקטגוריה. כדי לקבל את סיכום הביקורת של קובץ מקומי:
gcloud storage hash local-file
ערכי MD5
באובייקטים לא מורכבים, הרצת הפקודה gcloud storage objects describe על אובייקט בקטגוריה תחזיר את הפלט:
bucket: example-bucket contentType: text/plain crc32c: FTiauw== customTime: '1970-01-01T00:00:00+00:00' etag: CPjo7ILqxsQCEAE= generation: '1629833823159214' id: example-bucket/100MBfile.txt/1629833823159214 kind: storage#object md5Hash: daHmCObxxQdY9P7lp9jj0A== ...
הרצת הפקודה gcloud storage hash על קובץ מקומי תחזיר את הפלט:
--- crc32c_hash: IJfuvg== digest_format: base64 md5_hash: +bqpwgYMTRn0kWmp5HXRMw== url: file.txt
שני הפלטים כוללים את ערכי CRC32c ו-MD5. אין ערך MD5 לאובייקטים מורכבים, כמו האובייקטים שנוצרו מהעלאות מורכבות מקבילות.