הקצאה ושימוש באשכול Hadoop/Spark מנוהל באמצעות Cloud Dataproc (שורת פקודה)

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. הגדרה ודרישות

הגדרת סביבה בקצב עצמאי

  1. נכנסים למסוף Cloud ויוצרים פרויקט חדש או עושים שימוש חוזר בפרויקט קיים. (אם עדיין אין לכם חשבון Gmail או G Suite, עליכם ליצור חשבון).

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZw

ci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ

8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

חשוב לזכור את מזהה הפרויקט, שם ייחודי לכל הפרויקטים ב-Google Cloud (השם שלמעלה כבר תפוס ולא מתאים לכם, סליחה). בהמשך ב-Codelab הזה, היא תיקרא PROJECT_ID.

  1. בשלב הבא צריך להפעיל את החיוב במסוף Cloud כדי להשתמש במשאבים של Google Cloud.

מעבר ב-Codelab הזה לא אמור לעלות הרבה, אם בכלל. חשוב לבצע את כל ההוראות בקטע 'ניקוי' שמסביר איך להשבית משאבים כדי שלא תצברו חיובים מעבר למדריך הזה. משתמשים חדשים ב-Google Cloud זכאים להשתתף בתוכנית תקופת ניסיון בחינם בשווי 1,200 ש"ח.

3. הפעלת ממשקי ה-API של Cloud Dataproc ו-Google Compute Engine

לוחצים על סמל התפריט בפינה השמאלית העליונה.

2bfc27ef9ba2ec7d.png

בתפריט הנפתח בוחרים באפשרות 'מנהל API'.

408af5f32c4b7c25.png

לוחצים על Enable APIs and Services.

a9c0e84296a7ba5b.png

מחפשים את Compute Engine. בתיבת החיפוש. לוחצים על 'Google Compute Engine API' ברשימת התוצאות שמופיעה.

b6adf859758d76b3.png

בדף Google Compute Engine, לוחצים על Enable (הפעלה).

da5584a1cbc77104.png

לאחר ההפעלה, יש ללחוץ על החץ שמצביע שמאלה כדי לחזור אחורה.

עכשיו מחפשים את Google Cloud Dataproc API ולהפעיל אותה גם כן.

f782195d8e3d732a.png

4. הפעלת Cloud Shell

המכונה הווירטואלית הזו שמבוססת על Debian נטענת עם כל הכלים למפתחים שדרושים לכם. יש בה ספריית בית בנפח מתמיד של 5GB והיא פועלת ב-Google Cloud, מה שמשפר משמעותית את ביצועי הרשת והאימות. כלומר, כל מה שדרוש ל-Codelab הזה הוא דפדפן (כן, הוא פועל ב-Chromebook).

  1. כדי להפעיל את Cloud Shell ממסוף Cloud, לוחצים על Activate Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (ההקצאה וההתחברות לסביבה אמורות להימשך כמה דקות).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01A

צילום מסך מתאריך 2017-06-14 בשעה 22:13.43.png

אחרי ההתחברות ל-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:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

Cloud Shell גם מגדירה משתני סביבה כברירת מחדל, והוא יכול להיות שימושי כשמריצים פקודות עתידיות.

echo $GOOGLE_CLOUD_PROJECT

פלט הפקודה

<PROJECT_ID>
  1. בשלב האחרון, מגדירים את ברירת המחדל של האזור והפרויקט.
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

כשהמשימה תסתיים, הפלט יכלול הערכה של הערך של פאי.

493928df54f61386.png

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!

מידע נוסף

רישיון

העבודה הזו בשימוש ברישיון Creative Commons Attribution 3.0 גנרי ורישיון Apache 2.0.