1. סקירה כללית
Cloud Dataproc הוא שירות מנוהל של Spark ו-Hadoop המאפשר לנצל את היתרונות של כלי נתונים בקוד פתוח לעיבוד ברצף (batch processing), לשלוח שאילתות, סטרימינג ולמידת מכונה. האוטומציה של Cloud Dataproc עוזרת ליצור אשכולות במהירות, לנהל אותם בקלות ולחסוך כסף באמצעות השבתת אשכולות כשלא צריכים אותם. באמצעות פחות זמן וכסף מושקעים בניהול, תוכלו להתמקד במשרות ובנתונים שלכם.
המדריך הזה מבוסס על https://cloud.google.com/dataproc/overview
מה תלמדו
- איך יוצרים אשכול מנוהל של Cloud Dataproc (עם התקנה מראש של Apache Spark).
- איך שולחים משימת Spark
- איך לשנות גודל של אשכול
- איך להיכנס לצומת הראשי של אשכול Dataproc
- איך משתמשים ב-gcloud כדי לבדוק אשכולות, משימות וכללי חומת אש
- איך לכבות את האשכול
מה צריך להכין
איך תשתמשו במדריך הזה?
איזה דירוג מגיע לדעתך לחוויית השימוש בשירותי Google Cloud Platform?
2. הגדרה ודרישות
הגדרת סביבה בקצב עצמאי
- נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או G Suite, עליכם ליצור חשבון).
חשוב לזכור את מזהה הפרויקט, שם ייחודי לכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא מתאים לכם, סליחה). בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID
.
- בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.
מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.
3. הפעלת ממשקי ה-API של Cloud Dataproc ו-Google Compute Engine
לוחצים על סמל התפריט בפינה השמאלית העליונה.
בתפריט הנפתח בוחרים באפשרות 'מנהל API'.
לוחצים על Enable APIs and Services.
מחפשים את Compute Engine. בתיבת החיפוש. לוחצים על 'Google Compute Engine API' ברשימת התוצאות שמופיעה.
בדף Google Compute Engine, לוחצים על Enable (הפעלה).
לאחר ההפעלה, יש ללחוץ על החץ שמצביע שמאלה כדי לחזור אחורה.
עכשיו מחפשים את Google Cloud Dataproc API ולהפעיל אותה גם כן.
4. הפעלת Cloud Shell
המכונה הווירטואלית הזו שמבוססת על Debian נטענת עם כל הכלים למפתחים שדרושים לכם. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כלומר, כל מה שדרוש ל-Codelab הזה הוא דפדפן (כן, הוא פועל ב-Chromebook).
- כדי להפעיל את Cloud Shell ממסוף Cloud, לוחצים על Activate Cloud Shell (ההקצאה וההתחברות לסביבה אמורות להימשך כמה דקות).
אחרי ההתחברות ל-Cloud Shell, אתם אמורים לראות שכבר בוצע אימות ושהפרויקט כבר מוגדר ל-PROJECT_ID
שלכם.
gcloud auth list
פלט הפקודה
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
פלט הפקודה
[core] project = <PROJECT_ID>
אם מסיבה כלשהי הפרויקט לא מוגדר, פשוט מריצים את הפקודה הבאה:
gcloud config set project <PROJECT_ID>
רוצה למצוא את ה-PROJECT_ID
שלך? אתם יכולים לבדוק באיזה מזהה השתמשתם בשלבי ההגדרה או לחפש אותו במרכז הבקרה של מסוף Cloud:
Cloud Shell גם מגדירה משתני סביבה כברירת מחדל, והוא יכול להיות שימושי כשמריצים פקודות עתידיות.
echo $GOOGLE_CLOUD_PROJECT
פלט הפקודה
<PROJECT_ID>
- בשלב האחרון, מגדירים את ברירת המחדל של האזור והפרויקט.
gcloud config set compute/zone us-central1-f
אפשר לבחור מגוון אזורים שונים. מידע נוסף זמין במאמר אזורים ו אזורים.
5. יצירת אשכול של Cloud Dataproc
אחרי ההשקה של Cloud Shell, אפשר להשתמש בשורת הפקודה כדי להפעיל את פקודת Cloud SDK של gcloud או כלים אחרים שזמינים במכונה הווירטואלית.
צריך לבחור שם לאשכול לשימוש בשיעור ה-Lab הזה:
$ CLUSTERNAME=${USER}-dplab
כדי להתחיל, יוצרים אשכול חדש:
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
הגדרות ברירת המחדל של האשכול, שכוללות צמתים של שני עובדים, אמורות להספיק עבור המדריך הזה. הפקודה שלמעלה כוללת את האפשרות --zone
כדי לציין את האזור הגיאוגרפי שבו האשכול ייווצר, ושתי אפשרויות מתקדמות, --scopes
ו---tags
, שמוסברות למטה כשמשתמשים בתכונות שהן מאפשרות. מידע על השימוש בדגלי שורת פקודה להתאמה אישית של הגדרות האשכול זמין בפקודה gcloud dataproc clusters create
של Cloud SDK.
6. שליחת משימת Spark לאשכול
אפשר לשלוח משימה דרך בקשה של Cloud Dataproc API jobs.submit
, באמצעות כלי שורת הפקודה gcloud
או ממסוף Google Cloud Platform. אתם יכולים גם להתחבר למכונה כלשהי באשכול באמצעות SSH, ואז להריץ משימה מהמכונה.
שולחים משימה באמצעות הכלי gcloud
משורת הפקודה של Cloud Shell:
$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
--class org.apache.spark.examples.SparkPi \
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
בזמן שהמשימה תפעל, הפלט יופיע בחלון Cloud Shell.
כדי להפריע לפלט, מקישים על Control-C. הפעולה הזו תפסיק את הפקודה gcloud
, אבל המשימה תמשיך לפעול באשכול Dataproc.
7. הצגת רשימה של משימות וחיבור מחדש
הדפסה של רשימת משימות:
$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}
המשרה האחרונה שנשלחה תופיע בראש הרשימה. מעתיקים את מזהה המשימה ומדביקים אותו במקום 'jobId
' בפקודה שלמטה. הפקודה יתחברה מחדש למשימה שצוינה ותציג את הפלט שלה:
$ gcloud dataproc jobs wait jobId
כשהמשימה תסתיים, הפלט יכלול הערכה של הערך של פאי.
8. שינוי הגודל של אשכול
כדי להריץ חישובים גדולים יותר, מומלץ להוסיף עוד צמתים לאשכול כדי לזרז אותו. ב-Dataproc אפשר להוסיף צמתים לאשכול ולהסיר ממנו צמתים בכל שלב.
בודקים את תצורת האשכול:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
כדי להגדיל את האשכול, מוסיפים כמה צמתים זמניים:
$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2
בודקים את האשכול שוב:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
לתשומת ליבכם, בנוסף ל-workerConfig
מתיאור האשכול המקורי, יש עכשיו גם secondaryWorkerConfig
שכולל שני instanceNames
לעובדים הזמניים מראש. Dataproc מציג את הסטטוס של האשכול כ'מוכן' בזמן האתחול של הצמתים החדשים.
מכיוון שהתחלת עם שני צמתים ועכשיו יש לך ארבעה צמתים, משימות Spark שלך אמורות לרוץ בערך פי שניים מהר יותר.
9. SSH לאשכול
התחברות באמצעות SSH לצומת הראשי, ששם המכונה שלו הוא תמיד שם האשכול כאשר מצורף אליו -m
:
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
בפעם הראשונה שמריצים פקודת ssh ב-Cloud Shell, היא תיצור שם מפתחות SSH לחשבון שלכם. אפשר לבחור ביטוי סיסמה או להשתמש כרגע בביטוי סיסמה ריק ולשנות אותו מאוחר יותר באמצעות ssh-keygen
.
במכונה, בודקים את שם המארח:
$ hostname
בגלל שציינתם את --scopes=cloud-platform
כשיצרתם את האשכול, תוכלו להריץ פקודות gcloud
באשכול. הצגת רשימה של האשכולות בפרויקט:
$ gcloud dataproc clusters list
התנתקות מחיבור ה-ssh בסיום:
$ logout
10. בדיקת התגים
כשיצרת את האשכול, כללת אפשרות של --tags
להוסיף תג לכל צומת באשכול. תגים משמשים לצירוף כללי חומת אש לכל צומת. לא יצרת כללי חומת אש תואמים ב-Codelab הזה, אבל עדיין אפשר לבדוק את התגים בצומת ואת כללי חומת האש ברשת.
הדפסת התיאור של הצומת הראשי:
$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c
צריך לחפש את הערך tags:
לקראת סוף הפלט ולראות שהוא כולל את codelab
.
מדפיסים את כללי חומת האש:
$ gcloud compute firewall-rules list
שימו לב לעמודות SRC_TAGS
ו-TARGET_TAGS
. כשמצרפים תג לכלל של חומת אש, אפשר לציין שצריך להשתמש בו בכל הצמתים שכוללים את התג הזה.
11. כיבוי האשכול
אפשר לכבות אשכול באמצעות בקשה של Cloud Dataproc API clusters.delete
, משורת הפקודה באמצעות קובץ ההפעלה gcloud dataproc clusters delete
או ממסוף Google Cloud Platform.
עכשיו נשבית את האשכול באמצעות שורת הפקודה של Cloud Shell:
$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1
12. מעולה!
למדתם איך ליצור אשכול של Dataproc, לשלוח משימת Spark, לשנות את הגודל של אשכול, להשתמש ב-ssh כדי להתחבר לצומת המאסטר, להשתמש ב-gcloud כדי לבדוק אשכולות, משימות וכללי חומת אש ולכבות את האשכול באמצעות gcloud!
מידע נוסף
- מסמכי תיעוד בנושא Dataproc: https://cloud.google.com/dataproc/overview
- תחילת העבודה עם Dataproc באמצעות Codelab של המסוף
רישיון
העבודה הזו בשימוש ברישיון Creative Commons Attribution 3.0 גנרי ורישיון Apache 2.0.