מחבר Cloud Storage – ספריית Java בקוד פתוח – מאפשר להריץ משימות של Apache Hadoop או של Apache Spark ישירות על נתונים ב-Cloud Storage.
היתרונות של מחבר 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, אתם יכולים להתחיל את העבודה ברגע שצמתי המשימות מתחילים לפעול, וכך לחסוך בעלויות לאורך זמן.
הגדרת מחבר באשכולות Dataproc
מחבר Cloud Storage מותקן כברירת מחדל בכל הצמתים של אשכול Dataproc בספרייה /usr/local/share/google/dataproc/lib/. בקטעי המשנה הבאים מתוארים השלבים להשלמת הגדרת מחבר באשכולות Dataproc.
חשבון שירות של מכונה וירטואלית
כשמריצים את המחבר בצמתים של אשכול Dataproc ובמכונות וירטואליות אחרות של Compute Engine, המאפיין google.cloud.auth.service.account.enable מוגדר כ-false כברירת מחדל. המשמעות היא שלא צריך להגדיר את פרטי הכניסה של חשבון השירות של המכונה הווירטואלית עבור המחבר – פרטי הכניסה של חשבון השירות של המכונה הווירטואלית מסופקים על ידי שרת המטא-נתונים של המכונה הווירטואלית.
לחשבון השירות של מכונת ה-VM ב-Dataproc צריכה להיות הרשאה לגשת לקטגוריה שלכם ב-Cloud Storage.
אם אתם משתמשים בחשבון שירות בהתאמה אישית עם 2.2+ Spark job cluster: אם אתם בוחרים חשבון שירות בהתאמה אישית כשאתם יוצרים גרסת תמונה של Dataproc 2.2+ 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 שמשמשות בתמונות העדכניות ביותר שהותקנו באשכולות Dataproc מפורטות בדפים של גרסאות התמונות. אם האפליקציה שלכם תלויה בגרסת מחבר שאינה ברירת המחדל שפריסתה בוצעה באשכול שלכם, אתם יכולים לבצע אחת מהפעולות הבאות כדי להשתמש בגרסת המחבר שבחרתם:
- יוצרים אשכול עם האפשרות
--metadata=GCS_CONNECTOR_VERSION=x.y.zשמעדכנת את המחבר שבו משתמשות אפליקציות שפועלות באשכול לגרסת המחבר שצוינה. - צריך לכלול את מחלקות המחברים ואת התלויות של המחברים בגרסה שבה אתם משתמשים בקובץ ה-JAR של האפליקציה, ולהעביר אותן לשם. העברה נדרשת כדי למנוע התנגשות בין גרסת המחבר שפרסתם לבין גרסת המחבר שמוגדרת כברירת מחדל ומופיעה באשכול Dataproc. אפשר גם לעיין בדוגמה להעברה של יחסי תלות ב-Maven.
הגדרת מחבר באשכולות שאינם Dataproc
כדי להגדיר את המחבר של Cloud Storage באשכול שאינו Dataproc, כמו אשכול 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 ותרחישי שימוש. כשמשתמשים בו עם Dataproc, הוא נתמך באותה רמה כמו Dataproc. מידע נוסף זמין במאמר איך מקבלים תמיכה.
התחברות ל-Cloud Storage באמצעות gRPC
כברירת מחדל, המחבר של Cloud Storage ב-Dataproc משתמש ב-API בפורמט JSON של Cloud Storage. בקטע הזה מוסבר איך להפעיל את המחבר של Cloud Storage כדי להשתמש ב-gRPC.
שיקולי שימוש
השימוש במחבר Cloud Storage עם gRPC כולל את ההיבטים הבאים:
- מיקום אזורי של קטגוריה: פרוטוקול gRPC יכול לשפר את זמן האחזור של קריאה רק כשמכונות וירטואליות של Compute Engine וקטגוריות של Cloud Storage נמצאות באותו אזור של Compute Engine.
- משימות שדורשות קריאה אינטנסיבית: gRPC יכול לשפר את זמן האחזור של קריאות ארוכות, ויכול לעזור בעומסי עבודה שדורשים קריאה אינטנסיבית. לא מומלץ להשתמש בשיטה הזו באפליקציות שיוצרות ערוץ gRPC, מריצות חישוב קצר ואז סוגרות את הערוץ.
- בקשות לא מאומתות: פרוטוקול gRPC לא תומך בבקשות לא מאומתות.
דרישות
הדרישות הבאות חלות כשמשתמשים ב-gRPC עם מחבר Cloud Storage:
רשת ה-VPC של אשכול Dataproc צריכה לתמוך בקישוריות ישירה. כלומר, המסלולים והכללים של חומת האש ברשת צריכים לאפשר לתעבורת נתונים יוצאת להגיע אל
34.126.0.0/18ו-2001:4860:8040::/42.- אם אשכול Dataproc משתמש ברשת IPv6, צריך להגדיר רשת משנה IPv6 למכונות וירטואליות. מידע נוסף זמין במאמר הגדרת IPv6 למופעים ולתבניות של מופעים.
כשיוצרים אשכול Dataproc, צריך להשתמש בגרסה
2.2.23ואילך של מחבר Cloud Storage עם גרסת אימג'2.1.56+, או בגרסה v3.0.0 ואילך של מחבר Cloud Storage עם גרסת אימג' 2.2.0 ואילך. גרסת מחבר Cloud Storage שמותקנת בכל גרסת אימג' של Dataproc מפורטת בדפים של גרסאות האימג' של Dataproc.- אם אתם יוצרים ומשתמשים באשכול וירטואלי של Dataproc ב-GKE לבקשות gRPC Cloud Storage, מומלץ להשתמש בגרסה GKE
1.28.5-gke.1199000עםgke-metadata-server 0.4.285. השילוב הזה תומך בקישוריות ישירה.
- אם אתם יוצרים ומשתמשים באשכול וירטואלי של Dataproc ב-GKE לבקשות gRPC Cloud Storage, מומלץ להשתמש בגרסה GKE
אתם או האדמין הארגוני שלכם צריכים להקצות תפקידים בניהול זהויות והרשאות גישה (IAM) שכוללים את ההרשאות שנדרשות כדי להגדיר את המחבר של Cloud Storage ולשלוח אליו בקשות gRPC. התפקידים האלה יכולים לכלול את התפקידים הבאים:
- תפקיד המשתמש: Dataproc Editor (עריכה ב-Dataproc) – תפקיד שמוענק למשתמשים כדי לאפשר להם ליצור אשכולות ולשלוח משימות
- תפקיד חשבון השירות: התפקיד משתמש אובייקטים של אחסון שהוקצה לחשבון השירות של מכונת ה-VM של Dataproc כדי לאפשר לאפליקציות שפועלות במכונות הווירטואליות של האשכול להציג, לקרוא, ליצור ולכתוב אובייקטים ב-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 כשיוצרים אשכול Dataproc.
אחרי שמפעילים את gRPC ברמת האשכול, בקשות קריאה של Cloud Storage Connector שנשלחות על ידי משימות שפועלות באשכול משתמשות ב-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