מחבר Cloud Storage

ספריית Java בקוד פתוח של המחבר ל-Cloud Storage מאפשרת להריץ משימות של Apache Hadoop או של Apache Spark ישירות על נתונים ב-Cloud Storage.

‫Lightning Engine משפר את הקישוריות ל-Cloud Storage כדי לשפר את הביצועים של המנוע המקורי שלו. המחבר המשופר ל-Cloud Storage ממזער את פעולות המטא-נתונים כדי להפחית את העלויות, ו-file output committer שעבר אופטימיזציה משפר את הביצועים והאמינות של עומסי העבודה ב-Spark. כדי לבקש גישה מוקדמת לתכונה בגרסת טרום-השקה (Preview) הפרטית הזו, צריך למלא את הטופס Early Access.

היתרונות של החיבור ל-Cloud Storage

  • גישה ישירה לנתונים: אחסון הנתונים ב-Cloud Storage וגישה ישירה אליהם. לא צריך להעביר אותו קודם ל-HDFS.
  • תאימות ל-HDFS: אתם יכולים לגשת לנתונים ב-Cloud Storage באמצעות הקידומת gs:// במקום hdfs://.
  • יכולת פעולה הדדית: אחסון נתונים ב-Cloud Storage מאפשר יכולת פעולה הדדית חלקה בין Spark,‏ Hadoop ושירותי Google.
  • נגישות לנתונים: כשמשביתים אשכול Hadoop, בניגוד ל-HDFS, עדיין יש לכם גישה לנתונים ב-Cloud Storage.
  • זמינות גבוהה של נתונים: הנתונים שמאוחסנים ב-Cloud Storage זמינים מאוד ומשוכפלים באופן גלובלי בלי לפגוע בביצועים.
  • אין תקורה של ניהול האחסון: בניגוד ל-HDFS, ב-Cloud Storage לא נדרשת תחזוקה שוטפת, כמו בדיקת מערכת הקבצים, שדרוג או חזרה לגרסה קודמת של מערכת הקבצים.
  • הפעלה מהירה: ב-HDFS, אי אפשר להפעיל משימת MapReduce עד ש-NameNode יוצא ממצב בטוח. התהליך הזה יכול להימשך בין כמה שניות לכמה דקות, בהתאם לגודל ולמצב של הנתונים. עם Cloud Storage, אפשר להתחיל את העבודה ברגע שצומתי המשימות מתחילים, וכך לחסוך בעלויות באופן משמעותי לאורך זמן.

הגדרת מחבר באשכולות של Managed Service for Apache Spark

כברירת מחדל, חיבור ל-Cloud Storage מותקן בכל צומתי האשכולות של Managed Service for Apache Spark בספרייה /usr/local/share/google/managed-spark/lib/. בסעיפי המשנה הבאים מוסבר איך להשלים את הגדרת המחבר באשכולות של Managed Service for Apache Spark.

חשבון שירות של VM

כשמפעילים את המחבר בצומתי אשכול של Managed Service for Apache Spark ובמכונות וירטואליות אחרות של Compute Engine, המאפיין google.cloud.auth.service.account.enable מוגדר כברירת מחדל לערך false. המשמעות היא שאין צורך להגדיר את פרטי הכניסה לחשבון השירות של המכונה הווירטואלית בשביל המחבר – פרטי הכניסה לחשבון השירות של המכונה הווירטואלית מסופקים על ידי שרת המטא-נתונים של המכונה הווירטואלית.

לחשבון השירות של המכונה הווירטואלית ב-Managed Service for Apache Spark צריכה להיות הרשאת גישה לקטגוריה של Cloud Storage.

אם אתם משתמשים בחשבון שירות בהתאמה אישית עם אשכול של משימות 2.2+ Spark: אם אתם בוחרים חשבון שירות בהתאמה אישית כשאתם יוצרים אשכול של גרסת תמונה 2.2+ Managed Service for Apache Spark שאתם שולחים אליו משימות Spark, ואם משימות Spark קוראות מ-Cloud Storage או כותבות אליו, כדי למנוע בעיות בהרשאות שעלולות לגרום לכשלים במשימות, הוסיפו את ההגדרה הבאה (מודגשת) לקוד היצירה של סשן Spark:

spark = SparkSession.builder \
.appName(appName) \
.config("fs.gs.auth.type", "SERVICE_ACCOUNT_JSON_KEYFILE") \
.config("fs.gs.auth.service.account.json.keyfile", "path/to/your/keyfile.json") \
.getOrCreate()

כדי לוודא שההרשאות מוגדרות כמו שצריך, בודקים שלחשבון השירות בהתאמה אישית יש את ההרשאות storage.objects.get ו-storage.objects.create:

  1. בודקים את הגישה הנוכחית כדי לראות את רשימת התפקידים שניתנו לחשבון השירות בהתאמה אישית.
  2. חיפוש תפקיד או הרשאה כדי לחפש את ההרשאות שמשויכות לתפקיד.

גרסאות של מחברים שהמשתמש בחר

גרסאות ברירת המחדל של המחבר ל-Cloud Storage שמשמשות בקובצי האימג' האחרונים שמותקנים באשכולות של Managed Service for Apache Spark מפורטות בדפי גרסאות קובצי האימג'. אם האפליקציה שלכם תלויה בגרסת מחבר שאינה ברירת המחדל שנפרסה באשכול, אתם יכולים לבצע אחת מהפעולות הבאות כדי להשתמש בגרסת המחבר שבחרתם:

  • יוצרים אשכול עם הדגל --metadata=GCS_CONNECTOR_VERSION=x.y.z, שמעדכן את המחבר שבו משתמשות האפליקציות שפועלות באשכול לגרסת המחבר שצוינה.
  • כוללים את מחלקות המחבר ואת יחסי התלות של המחבר לגרסה שבה משתמשים, ומעבירים אותם לקובץ ה-JAR של האפליקציה. צריך להעביר את המיקום כדי למנוע התנגשות בין גרסת המחבר שפרסתם לבין גרסת ברירת המחדל של המחבר שמותקנת באשכול של Managed Service for Apache Spark. אפשר גם לעיין בדוגמה להעברת יחסי תלות ב-Maven.

הגדרת מחבר באשכולות שהם לא Managed Service for Apache Spark

כדי להגדיר את החיבור ל-Cloud Storage באשכול שהוא לא Managed Service for Apache Spark, כמו אשכול Apache Hadoop או Spark שמשמש להעברת נתוני HDFS מקומיים ל-Cloud Storage, אתם יכולים לבצע את השלבים הבאים.

  1. מורידים את המחבר.

  2. מתקינים את המחבר.

    פועלים לפי ההוראות ב-GitHub כדי להתקין, להגדיר ולבדוק את החיבור ל-Cloud Storage.

שימוש במחבר

אתם יכולים להשתמש במחבר כדי לגשת לנתונים ב-Cloud Storage בדרכים הבאות:

שימוש ב-Java

כדי להשתמש בחיבור ל-Cloud Storage צריך את Java 8.

הקטע הבא הוא דוגמה לניהול יחסי תלות של Maven POM בשביל החיבור ל-Cloud Storage. מידע נוסף זמין במאמר ניהול יחסי תלות.

<dependency>
    <groupId>com.google.cloud.bigdataoss</groupId>
    <artifactId>gcs-connector</artifactId>
    <version>hadoopX-X.X.XCONNECTOR VERSION</version>
    <scope>provided</scope>
</dependency>

לגרסה עם הצללה:

<dependency>
    <groupId>com.google.cloud.bigdataoss</groupId>
    <artifactId>gcs-connector</artifactId>
    <version>hadoopX-X.X.XCONNECTOR VERSION</version>
    <scope>provided</scope>
    <classifier>shaded</classifier>
</dependency>

תמיכה במחברים

החיבור ל-Cloud Storage נתמך על ידי Google Cloud לשימוש עם מוצרים ותרחישי שימוש שלGoogle Cloud . כשמשתמשים ב-Managed Service for Apache Spark, הוא נתמך באותה רמה כמו Managed Service for Apache Spark. למידע נוסף, קראו את המאמר קבלת תמיכה.

התחברות ל-Cloud Storage באמצעות gRPC

כברירת מחדל, חיבור ל-Cloud Storage ב-Managed Service for Apache Spark משתמש ב-API בפורמט JSON ב-Cloud Storage. בקטע הזה מוסבר איך להפעיל את החיבור ל-Cloud Storage כדי להשתמש ב-gRPC.

שיקולים לשימוש

כשמשתמשים בחיבור ל-Cloud Storage עם gRPC, חשוב להביא בחשבון את הדברים הבאים:

  • מיקום הקטגוריה האזורית: ה-gRPC יכול לשפר את זמני האחזור של הקריאה רק אם המכונות הווירטואליות של Compute Engine והקטגוריות של Cloud Storage נמצאות באותו אזור של Compute Engine.
  • משימות שכוללות הרבה קריאות: gRPC יכול לשפר את זמני האחזור של קריאות ארוכות, ולעזור בעומסי עבודה שכוללים הרבה קריאות. הוא לא מומלץ לאפליקציות שיוצרות ערוץ gRPC, מריצות חישוב קצר ואז סוגרות את הערוץ.
  • בקשות לא מאומתות: ב-gRPC אין תמיכה בבקשות לא מאומתות.

דרישות

אלה הדרישות לשימוש ב-gRPC עם המחבר של Cloud Storage:

  • רשת ה-VPC של אשכול Managed Service for Apache Spark צריכה לתמוך בקישוריות ישירה. כלומר, המסלולים וכללי חומת האש של הרשת צריכים לאפשר לתעבורת הנתונים היוצאת להגיע אל 34.126.0.0/18 ואל 2001:4860:8040::/42.

  • כשיוצרים אשכול Managed Service for Apache Spark, צריך להשתמש בגרסה 2.2.23 ומעלה של החיבור ל-Cloud Storage עם גרסת אימג' 2.1.56+, או בגרסה 3.0.0 ומעלה של החיבור ל-Cloud Storage עם גרסת אימג' 2.2.0 ומעלה. גרסת החיבור ל-Cloud Storage שמותקנת בכל גרסת אימג' של Managed Service for Apache Spark מפורטת בדפי גרסאות האימג' של Managed Service for Apache Spark.

  • אתם או ה-Organization Administrator של הארגון צריכים להקצות תפקידים של ניהול זהויות והרשאות גישה (IAM) שכוללים את ההרשאות שנדרשות כדי להגדיר בקשות gRPC ולשלוח אותן לחיבור ל-Cloud Storage. התפקידים האלה יכולים לכלול:

    • תפקיד המשתמש: התפקיד עריכה ב-Dataproc מוקצה למשתמשים כדי לאפשר להם ליצור אשכולות ולשלוח משימות.
    • תפקיד חשבון השירות: התפקיד Storage Object User שמוקצה לחשבון השירות של המכונה הווירטואלית ב-Managed Service for Apache Spark, כדי לאפשר לאפליקציות שפועלות במכונות הווירטואליות של האשכול להציג, לקרוא, ליצור ולכתוב אובייקטים ב-Cloud Storage.

הפעלת gRPC במחבר של Cloud Storage

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

הפעלת אשכול

כדי להפעיל את gRPC בחיבור ל-Cloud Storage ברמת האשכול, מגדירים את המאפיין core:fs.gs.client.type=STORAGE_CLIENT כשיוצרים אשכול Managed Service for Apache Spark. אחרי שמפעילים את gRPC ברמת האשכול, בקשות הקריאה של החיבור ל-Cloud Storage שנוצרות על ידי משימות שפועלות באשכול משתמשות ב-gRPC.

דוגמה ל-CLI של gcloud:

gcloud dataproc clusters create CLUSTER_NAME \
    --project=PROJECT_ID \
    --region=REGION \
    --properties=core:fs.gs.client.type=STORAGE_CLIENT

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

  • ‫CLUSTER_NAME: מציינים שם לאשכול.
  • ‫PROJECT_NAME: מזהה הפרויקט שבו נמצא האשכול. מזהי הפרויקטים מופיעים בקטע Project info ב-Dashboard במסוף Google Cloud .
  • ‫REGION: מציינים את האזור ב-Compute Engine שבו האשכול ימוקם.

הפעלת משימה

כדי להפעיל את gRPC במחבר של Cloud Storage למשימה ספציפית, צריך לכלול את --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT כששולחים משימה.

דוגמה: הרצת משימה באשכול קיים שמשתמש ב-gRPC כדי לקרוא מ-Cloud Storage.

  1. יוצרים סקריפט PySpark מקומי של /tmp/line-count.py שמשתמש ב-gRPC כדי לקרוא קובץ טקסט של Cloud Storage ולהפיק את מספר השורות בקובץ.

    cat <<EOF >"/tmp/line-count.py"
    #!/usr/bin/python
    import sys
    from pyspark.sql import SparkSession
    path = sys.argv[1]
    spark = SparkSession.builder.getOrCreate()
    rdd = spark.read.text(path)
    lines_counter = rdd.count()
    print("There are {} lines in file: {}".format(lines_counter,path))
    EOF
    
  2. יוצרים קובץ טקסט מקומי בפורמט /tmp/line-count-sample.txt.

    cat <<EOF >"/tmp/line-count-sample.txt"
    Line 1
    Line 2
    line 3
    EOF
    
  3. מעלים את הקבצים המקומיים /tmp/line-count.py ו-/tmp/line-count-sample.txt לקטגוריה ב-Cloud Storage.

    gcloud storage cp /tmp/line-count* gs://BUCKET
    
  4. מריצים את המשימה line-count.py באשכול. מגדירים את --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT כדי להפעיל את gRPC לבקשות קריאה של החיבור ל-Cloud Storage.

    gcloud dataproc jobs submit pyspark gs://BUCKET/line-count.py \
    --cluster=CLUSTER_NAME \
    --project=PROJECT_ID  \
    --region=REGION \
    --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT \
    -- gs://BUCKET/line-count-sample.txt
    

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

    • ‫CLUSTER_NAME: השם של אשכול קיים.
    • ‫PROJECT_NAME: מזהה הפרויקט. מזהי הפרויקטים מופיעים בקטע Project info ב-Dashboard במסוף Google Cloud .
    • ‫REGION: האזור ב-Compute Engine שבו נמצא האשכול.
    • ‫BUCKET: הקטגוריה שלכם ב-Cloud Storage.

יצירת מדדים בצד הלקוח של gRPC

אתם יכולים להגדיר את החיבור ל-Cloud Storage כך שייצור מדדים שקשורים ל-gRPC ב-Cloud Monitoring. המדדים שקשורים ל-gRPC יכולים לעזור לכם:

  • מעקב אחרי הביצועים של בקשות gRPC ל-Cloud Storage ושיפור שלהם
  • פתרון בעיות וניפוי באגים
  • תובנות לגבי השימוש באפליקציות וההתנהגות בהן

במאמר שימוש במדדים בצד הלקוח של gRPC מוסבר איך להגדיר את החיבור ל-Cloud Storage כדי ליצור מדדים שקשורים ל-gRPC.

משאבים