חיבור ל-Cloud Storage, שהוא ספריית Java בקוד פתוח, מאפשר להריץ משימות של Apache Hadoop או של Apache Spark ישירות על נתונים ב-Cloud Storage.
Lightning Engine משפר את הקישוריות ל-Cloud Storage כדי לייעל את הביצועים של המנוע המקורי שלו. מחבר Cloud Storage המשופר מצמצם את פעולות המטא-נתונים כדי להוזיל עלויות, ומבצע אופטימיזציה של קבצים שמועברים ל-Cloud Storage כדי לשפר את הביצועים והאמינות של עומסי עבודה (workload) ב-Spark. כדי לבקש גישה מוקדמת לתכונה הזו בגרסת הפרה-אלפא, צריך למלא את טופס הגישה המוקדמת.
היתרונות של חיבור ל-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.
חשבון שירות של מכונה וירטואלית
כשמריצים את המחבר בצמתים של אשכול Managed Service for Apache Spark ובמכונות וירטואליות אחרות ב-Compute Engine, המאפיין google.cloud.auth.service.account.enable מוגדר כ-false כברירת מחדל. המשמעות היא שלא צריך להגדיר את פרטי הכניסה של חשבון השירות של המכונה הווירטואלית עבור המחבר – פרטי הכניסה של חשבון השירות של המכונה הווירטואלית מסופקים על ידי שרת המטא-נתונים של המכונה הווירטואלית.
לחשבון השירות של מכונת ה-VM בשירות המנוהל של Apache Spark צריכה להיות הרשאה לגשת לקטגוריה שלכם ב-Cloud Storage.
אם אתם משתמשים בחשבון שירות בהתאמה אישית עם 2.2+ Spark job cluster: אם אתם בוחרים חשבון שירות בהתאמה אישית כשאתם יוצרים Managed Service for Apache Spark 2.2+ image version cluster שאתם שולחים אליו משימות Spark, ואם משימות Spark קוראות מ-Cloud Storage או כותבות ל-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:
- בודקים את הגישה הנוכחית כדי לראות את התפקידים שניתנו לחשבון השירות המותאם אישית.
- מציאת תפקיד או הרשאה כדי לחפש את ההרשאות שמשויכות לתפקיד.
גרסאות מחברים שנבחרו על ידי המשתמש
גרסאות ברירת המחדל של חיבור ל-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, אפשר לבצע את השלבים הבאים.
מורידים את המחבר.
- כדי להוריד את חיבור ל-Cloud Storage:
- כדי להשתמש בגרסה
latestשנמצאת בקטגוריה של Cloud Storage (לא מומלץ להשתמש בגרסהlatestבאפליקציות לייצור): - כדי להשתמש בגרסה ספציפית מהקטגוריה של Cloud Storage, מחליפים את הגרסאות של Hadoop ושל Cloud Storage Connector בתבנית השם
gcs-connector-HADOOP_VERSION-CONNECTOR_VERSION.jar, לדוגמה,gs://hadoop-lib/gcs/gcs-connector-hadoop2-2.1.1.jar. - כדי להשתמש בגרסה ספציפית ממאגר Apache Maven, מורידים קובץ jar מוצלל עם הסיומת
-shadedבשם.
- כדי להשתמש בגרסה
- כדי להוריד את חיבור ל-Cloud Storage:
מתקינים את המחבר.
פועלים לפי ההוראות של GitHub כדי להתקין, להגדיר ולבדוק את חיבור ל-Cloud Storage.
שימוש במחבר
אפשר להשתמש במחבר כדי לגשת לנתונים ב-Cloud Storage בדרכים הבאות:
- באפליקציית Spark, PySpark או Hadoop עם הקידומת
gs:// - במעטפת hadoop עם
hadoop fs -ls gs://bucket/dir/file - בדף Browser של Cloud Storage במסוף Google Cloud
- שימוש בפקודות של Google Cloud SDK, כמו:
שימוש ב-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 משתמש ברשת IPv6, צריך להגדיר רשת משנה של IPv6 עבור מכונות וירטואליות. מידע נוסף זמין במאמר הגדרת IPv6 למופעים ולתבניות של מופעים.
כשיוצרים אשכול Managed Service for Apache Spark, צריך להשתמש בגרסה
2.2.23ואילך של חיבור ל-Cloud Storage עם גרסת תמונה2.1.56+או בגרסה v3.0.0 ואילך של חיבור ל-Cloud Storage עם גרסת תמונה 2.2.0 ואילך. גרסת חיבור ל-Cloud Storage שמותקנת בכל גרסת תמונה של Managed Service for Apache Spark מפורטת בדפים של גרסאות התמונה של Managed Service for Apache Spark.- אם אתם יוצרים ומשתמשים בManaged Service for Apache Spark באשכול וירטואלי של GKE לבקשות gRPC Cloud Storage, מומלץ להשתמש בגרסה
1.28.5-gke.1199000של GKE עםgke-metadata-server 0.4.285. השילוב הזה תומך בקישוריות ישירה.
- אם אתם יוצרים ומשתמשים בManaged Service for Apache Spark באשכול וירטואלי של GKE לבקשות gRPC Cloud Storage, מומלץ להשתמש בגרסה
אתם או האדמין הארגוני שלכם צריכים להעניק תפקידים בניהול זהויות והרשאות גישה (IAM) שכוללים את ההרשאות שנדרשות להגדרה ולשליחת בקשות gRPC לחיבור ל-Cloud Storage. התפקידים האלה יכולים לכלול את התפקידים הבאים:
- תפקיד המשתמש: Dataproc Editor (עריכה ב-Dataproc) – תפקיד שמוענק למשתמשים כדי לאפשר להם ליצור אשכולות ולשלוח משימות
- תפקיד חשבון השירות: התפקיד משתמש באובייקט אחסון שמוקצה לחשבון השירות של המכונה הווירטואלית של Managed Service for Apache Spark, כדי לאפשר לאפליקציות שפועלות במכונות וירטואליות של אשכול לצפות באובייקטים של Cloud Storage, לקרוא אותם, ליצור אותם ולכתוב אותם.
הפעלת gRPC במחבר Cloud Storage
אפשר להפעיל את gRPC במחבר Cloud Storage ברמת האשכול או ברמת העבודה. אחרי שמפעילים את המחבר באשכול, בקשות הקריאה של Cloud Storage משתמשות ב-gRPC. אם האפשרות הזו מופעלת במשימה ולא ברמת האשכול, בקשות הקריאה של Cloud Storage Connector משתמשות ב-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 בלוח הבקרה של מסוף Google Cloud .
- REGION: מציינים אזור של Compute Engine שבו ימוקם האשכול.
הפעלת משרה
כדי להפעיל את gRPC במחבר Cloud Storage למשימה ספציפית, צריך לכלול את --properties=spark.hadoop.fs.gs.client.type=STORAGE_CLIENT כששולחים משימה.
דוגמה: הרצת משימה באשכול קיים שמשתמש ב-gRPC כדי לקרוא מ-Cloud Storage.
יוצרים סקריפט
/tmp/line-count.pyPySpark מקומי שמשתמש ב-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יוצרים קובץ טקסט מקומי
/tmp/line-count-sample.txt.cat <<EOF >"/tmp/line-count-sample.txt" Line 1 Line 2 line 3 EOF
מעלים את הקבצים המקומיים
/tmp/line-count.pyו-/tmp/line-count-sample.txtלקטגוריה ב-Cloud Storage.gcloud storage cp /tmp/line-count* gs://BUCKET
מריצים את משימת
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 בלוח הבקרה של מסוף Google Cloud .
- REGION: האזור ב-Compute Engine שבו נמצא האשכול.
- BUCKET: הקטגוריה שלכם ב-Cloud Storage.
יצירת מדדים של gRPC בצד הלקוח
אתם יכולים להגדיר את חיבור ל-Cloud Storage כך שיפיק מדדים שקשורים ל-gRPC ב-Cloud Monitoring. המדדים שקשורים ל-gRPC יכולים לעזור לכם:
- מעקב אחרי הביצועים של בקשות gRPC ל-Cloud Storage ואופטימיזציה שלהם
- פתרון בעיות וניפוי באגים
- תובנות לגבי השימוש באפליקציות וההתנהגות של המשתמשים
מידע על הגדרת חיבור ל-Cloud Storage ליצירת מדדים שקשורים ל-gRPC זמין במאמר שימוש במדדים של gRPC בצד הלקוח.
משאבים
- מידע נוסף זמין במאמר בנושא מאפייני ההגדרה של מחבר GitHub Cloud Storage.
- במאמר חיבור ל-Cloud Storage באמצעות gRPC מוסבר איך להשתמש במחבר Cloud Storage עם ספריות לקוח, VPC Service Controls ותרחישים אחרים.
- מידע נוסף על Cloud Storage
- מידע נוסף זמין במאמר בנושא שימוש בחיבור ל-Cloud Storage עם Apache Spark.
- הסבר על מערכת הקבצים של Apache Hadoop .
- מקורות מידע בנושא Javadoc