מחבר 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 ב-Managed Service for 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 באשכול שאינו שירות מנוהל של Apache Spark, כמו אשכול Apache Hadoop או Spark שמשמש להעברת נתוני HDFS מקומיים אל Cloud Storage, אפשר לבצע את השלבים הבאים.
מורידים את המחבר.
- כדי להוריד את Cloud Storage Connector:
- כדי להשתמש בגרסה
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 Connector:
מתקינים את המחבר.
פועלים לפי ההוראות של 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 משתמש ב-Cloud Storage JSON API. בקטע הזה מוסבר איך להפעיל את המחבר של 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 connector עם גרסת תמונה2.1.56+או בגרסה v3.0.0 ואילך של Cloud Storage connector עם גרסת תמונה 2.2.0 ואילך. גרסת Cloud Storage connector שמותקנת בכל גרסת תמונה של Managed Service for Apache Spark מפורטת בדפים של גרסאות התמונה של Managed Service for Apache Spark.- אם אתם יוצרים ומשתמשים בManaged Service for Apache Spark באשכול וירטואלי של GKE לבקשות Cloud Storage ב-gRPC, מומלץ להשתמש בגרסה
1.28.5-gke.1199000של GKE עםgke-metadata-server 0.4.285. השילוב הזה תומך בקישוריות ישירה.
- אם אתם יוצרים ומשתמשים בManaged Service for Apache Spark באשכול וירטואלי של GKE לבקשות Cloud Storage ב-gRPC, מומלץ להשתמש בגרסה
אתם או האדמין הארגוני שלכם צריכים להעניק תפקידים בניהול זהויות והרשאות גישה (IAM) שכוללים את ההרשאות שנדרשות להגדרה ולשליחת בקשות gRPC למחבר Cloud Storage. התפקידים האלה יכולים לכלול את התפקידים הבאים:
- תפקיד המשתמש: Dataproc Editor תפקיד שמוענק למשתמשים כדי לאפשר להם ליצור אשכולות ולשלוח משימות
- תפקיד חשבון השירות: התפקיד משתמש באובייקט אחסון שמוקצה לחשבון השירות של המכונה הווירטואלית של 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