יצירה והרצה של משימה לדוגמה

Google Cloudבמאמר הזה מוסבר איך ליצור ולהריץ משימת עיבוד באצווה לדוגמה, שממירה קובצי וידאו באמצעות Batch.


לחצו על תראו לי איך כדי לקרוא הסבר מפורט על המשימה ישירות במסוף Google Cloud :

תראו לי איך


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

  1. נכנסים לחשבון Google Cloud . אם אתם משתמשים חדשים ב- Google Cloud, צרו חשבון כדי שתוכלו להעריך את הביצועים של המוצרים שלנו בתרחישים מהעולם האמיתי. לקוחות חדשים מקבלים בחינם גם קרדיט בשווי 300$ להרצה, לבדיקה ולפריסה של עומסי העבודה.
  2. התקינו את ה-CLI של Google Cloud.

  3. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  4. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  5. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  6. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  7. מפעילים את ממשקי ה-API של Batch, ‏ Compute Engine, ‏ Logging ו-Cloud Storage:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  8. התקינו את ה-CLI של Google Cloud.

  9. אם אתם משתמשים בספק זהויות חיצוני (IdP), קודם אתם צריכים להיכנס ל-CLI של gcloud באמצעות המאגר המאוחד לניהול זהויות.

  10. כדי לאתחל את ה-CLI של gcloud, הריצו את הפקודה הבאה:

    gcloud init
  11. יוצרים או בוחרים Google Cloud פרויקט.

    תפקידים שנדרשים כדי לבחור או ליצור פרויקט

    • Select a project: כדי לבחור פרויקט לא צריך תפקיד IAM ספציפי – אפשר לבחור כל פרויקט שקיבלתם בו תפקיד.
    • יצירת פרויקט: כדי ליצור פרויקט, צריך את התפקיד Project Creator (יצירת פרויקטים) (roles/resourcemanager.projectCreator), שכולל את ההרשאה resourcemanager.projects.create. איך מקצים תפקידים
    • יוצרים Google Cloud פרויקט:

      gcloud projects create PROJECT_ID

      מחליפים את PROJECT_ID בשם של פרויקט Google Cloud שיוצרים.

    • בוחרים את הפרויקט שיצרתם: Google Cloud

      gcloud config set project PROJECT_ID

      מחליפים את PROJECT_ID בשם הפרויקט ב- Google Cloud .

  12. מוודאים שהחיוב מופעל בפרויקט Google Cloud .

  13. מפעילים את ממשקי ה-API של Batch, ‏ Compute Engine, ‏ Logging ו-Cloud Storage:

    תפקידים שנדרשים להפעלת ממשקי API

    כדי להפעיל ממשקי API, נדרשת ההרשאה serviceusage.services.enable. אם יצרתם את הפרויקט, סביר להניח שכבר יש לכם את ההרשאה הזו דרך התפקיד 'בעלים' (roles/owner). אחרת, תוכלו לקבל את ההרשאה הזו דרך התפקיד 'אדמין בממשק Service Usage' (roles/serviceusage.serviceUsageAdmin). איך מקצים תפקידים

    gcloud services enable batch.googleapis.com compute.googleapis.com logging.googleapis.com storage.googleapis.com
  14. חשוב לוודא שלכם ולחשבון השירות של המשימה יש את ההרשאות הנדרשות כדי להשלים את המדריך הזה. במדריך הזה נעשה שימוש בחשבון שירות שמוגדר כברירת מחדל למשימה, שהוא חשבון השירות שמוגדר כברירת מחדל ב-Compute Engine.

    • כדי לקבל את ההרשאות שדרושות להשלמת המדריך הזה, אתם צריכים לבקש מהאדמין להקצות לכם את תפקידי ה-IAM הבאים:

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

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

    • כדי לוודא שלחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine יש את ההרשאות שנדרשות להשלמת המדריך הזה, צריך לבקש מהאדמין להקצות לחשבון השירות שמוגדר כברירת מחדל ב-Compute Engine את תפקידי ה-IAM הבאים:

      • Batch Agent Reporter (roles/batch.agentReporter) בפרויקט
      • כדי לאפשר לעבודות גישה לקטגוריות של Cloud Storage: אדמין לניהול אחסון (roles/storage.admin) בפרויקט
      • כדי לאפשר לעבודות ליצור יומנים ב-Logging: Logs Writer (roles/logging.logWriter) on the project

  15. משכפלים את מאגר ה-Git של Batch לספרייה הנוכחית:
    git clone https://github.com/GoogleCloudPlatform/batch-samples.git
  16. עוברים לספרייה transcoding:
    cd batch-samples/transcoding/

הכנת נתוני משרות

  1. יוצרים קטגוריה של Cloud Storage:

    gcloud storage buckets create gs://BUCKET_NAME
    

    מחליפים את BUCKET_NAME בשם ייחודי בהיקף גלובלי לקטגוריה.

    הפלט אמור להיראות כך:

    Creating gs://BUCKET_NAME/...
    
  2. מעתיקים את סקריפט transcode.sh ואת התיקייה שמכילה את קובצי הווידאו לקטגוריה של Cloud Storage:

    gcloud storage cp -R transcode.sh input gs://BUCKET_NAME
    

    הפלט אמור להיראות כך:

    Copying file://transcode.sh to gs://BUCKET_NAME/transcode.sh
    Copying file://input/video-2.mp4 to gs://BUCKET_NAME/input/video-2.mp4
    Copying file://input/video-1.mp4 to gs://BUCKET_NAME/input/video-1.mp4
    Copying file://input/video-0.mp4 to gs://BUCKET_NAME/input/video-0.mp4
      Completed files 4/4 | 37.5MiB/37.5MiB
    
    Average throughput: 48.4MiB/s
    

יצירת משרה

  1. פותחים את קובץ ההגדרות job.json בכלי לעריכת טקסט.

  2. מגדירים את הערך בשדה remotePath לשם של קטגוריה של Cloud Storage:

    {
      "taskGroups": [
        {
          "taskSpec": {
            "runnables": [
              {
                "script": {
                  "text": "bash /mnt/share/transcode.sh"
                }
              }
            ],
            "computeResource": {
              "cpuMilli": 2000,
              "memoryMib": 2048
            },
            "volumes": [
              {
                "gcs": {
                  "remotePath": "BUCKET_NAME"
                },
                "mountPath": "/mnt/share"
              }
            ],
            "maxRetryCount": 2,
            "maxRunDuration": "600s"
          },
          "taskCount": 3,
          "parallelism": 3
        }
      ],
      "allocationPolicy": {
        "instances": [
          {
            "policy": {
              "machineType": "n2d-standard-4",
              "provisioningModel": "SPOT"
            }
          }
        ]
      },
      "labels": {
        "department": "creative",
        "env": "testing"
      },
      "logsPolicy": {
        "destination": "CLOUD_LOGGING"
      }
    }
    
  3. שומרים את השינויים וסוגרים את עורך הטקסט.

  4. יוצרים את העבודה transcode:

    gcloud batch jobs submit transcode \
        --config=job.json \
        --location=us-central1
    

    הפלט אמור להיראות כך:

    Job transcode-7a1654ca-211c-40e8-b0fb-8a00 was successfully submitted.
    ...
    

    העבודה מריצה 3 משימות בו-זמנית. כל משימה מריצה את הסקריפט transcode.sh, שמקודד קובץ וידאו אחד מתוך שלושה ומעלה אותו לקטגוריה של Cloud Storage.

מעקב אחרי המשרה

  1. נכנסים לדף Job list במסוף Google Cloud .

    מעבר לרשימת המשימות

  2. בעמודה שם המשימה, לוחצים על transcode (קידוד מחדש).

    ייפתח הדף פרטי המשרה.

  3. לוחצים על הכרטיסייה אירועים.

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

  4. אופציונלי: כדי לעדכן את הדף, לוחצים על רענון.

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

צפייה בסרטונים המוצפנים

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

    כניסה לדף Buckets

  2. בעמודה Name (שם), לוחצים על BUCKET_NAME.

    הדף Bucket details נפתח.

  3. בעמודה Name (שם), לוחצים על output/‎, ואז לוחצים על אחד מקובצי הסרטון המקודדים.

    הדף Object details נפתח.

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

הסרת המשאבים

כדי לא לצבור חיובים בחשבון Google Cloud על המשאבים שבהם השתמשתם בדף הזה, אתם צריכים למחוק את הפרויקט Google Cloud יחד עם המשאבים.

מחיקת הפרויקט

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

כדי למחוק Google Cloud פרויקט:

gcloud projects delete PROJECT_ID

מחיקת משאבים בודדים

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

מחיקת המשימה

אחרי שהרצתם את משימת האצווה, מוחקים את המשימה transcode:

gcloud batch jobs delete transcode \
    --location=us-central1

הפלט אמור להיראות כך:

Job projects/example-project/locations/us-central1/jobs/transcode deletion is in progress

מחיקה של משימה מובילה גם למחיקה של הפרטים וההיסטוריה שלה. היומנים של העבודה נמחקים אוטומטית בסוף תקופת השמירה של היומנים ב-Cloud Logging.

מחיקת הקטגוריה

אם אתם לא צריכים יותר את קטגוריית Cloud Storage שבה השתמשתם במדריך הזה ואת התוכן שלה, אתם יכולים למחוק את הקטגוריה:

gcloud storage rm gs://BUCKET_NAME \
    --recursive

הפלט אמור להיראות כך:

Removing objects:
Removing gs://BUCKET_NAME/input/video-0.mp4#1694788495332395...
Removing gs://BUCKET_NAME/input/video-2.mp4#1694788495296173...
Removing gs://BUCKET_NAME/input/video-1.mp4#1694788495228839...
Removing gs://BUCKET_NAME/output/video-0.mp4#1694788495332395...
Removing gs://BUCKET_NAME/output/video-2.mp4#1694788495296173...
Removing gs://BUCKET_NAME/output/video-1.mp4#1694788495228839...
Removing gs://BUCKET_NAME/transcode.sh#1694788495039427...
  Completed 4/4
Removing Buckets:
Removing gs://BUCKET_NAME/...
  Completed 1/1

מחיקת מאגר Git

אם אתם לא צריכים יותר את מאגר ה-git של Batch ששיבטתם לצורך המדריך הזה, אתם יכולים למחוק אותו:

cd ../../ && rm -rf batch-samples

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