ממשקים זמינים
הממשקים הבאים זמינים בצומת מאסטר אשכולות (cluster master) של Managed Service for Apache Spark (מחליפים את master-host-name בשם של צומת המאסטר).
| ממשק המשתמש באינטרנט | יציאה | כתובת URL |
|---|---|---|
| YARN ResourceManager | 80881 | http://master-host-name:8088 |
| HDFS NameNode | 98702,3 | http://master-host-name:9870 |
1 באשכולות שבהם מופעל Kerberos, היציאה של ממשק המשתמש באינטרנט של YARN ResourceManager היא 8090, והיא פועלת ב-HTTPS.
2 באשכולות שבהם Kerberos מופעל, היציאה של ממשק המשתמש באינטרנט של HDFS Namenode היא 9871, והיא פועלת ב-HTTPS.
3 בגרסאות קודמות של Managed Service for Apache Spark (לפני גרסה 1.2), היציאה של ממשק המשתמש באינטרנט של HDFS Namenode הייתה 50070.
בעמודה Tracking UI ב-YARN ResourceManager יש קישורים לכל ממשקי האינטרנט של MapReduce ושל Spark Applications שפועלים כרגע או שהושלמו.
ממשקי API מותרים בארכיטקטורת REST של YARN ResourceManager
כשיוצרים אשכול, Managed Service for Apache Spark מגדיר את המאפיין yarn-site.xml yarn.resourcemanager.webapp.methods-allowed לערך "GET,HEAD". כך מוגבלות השיטות של HTTP שאפשר לקרוא להן בממשק המשתמש של מנהל המשאבים של YARN ובממשקי ה-API בארכיטקטורת REST לשיטות GET ו-HEAD. הגדרת ברירת המחדל הזו גם משביתה את האפשרות לשלוח ולשנות משימות באמצעות YARN API בארכיטקטורת REST.
כדי לשנות את ערכי ברירת המחדל ולהפעיל שיטות HTTP ספציפיות ביציאה 8088, מגדירים את המאפיין הזה לשם אחד או יותר של שיטת HTTP, מופרדים בפסיקים. הערך ALL יאפשר את כל שיטות ה-HTTP ביציאה.
דוגמה:
gcloud dataproc clusters create cluster-name \ --properties=^#^yarn:yarn.resourcemanager.webapp.methods-allowed=GET,POST,DELETE \ --region=region \
המלצה: אם מגדירים את המאפיין הזה כדי לאפשר שיטות HTTP שאינן ברירת מחדל, חשוב להגדיר כללי חומת אש והגדרות אבטחה אחרות כדי להגביל את הגישה ליציאה 8088.
חיבור לממשקי אינטרנט
אתם יכולים להתחבר לממשקי אינטרנט שפועלים באשכול של Managed Service for Apache Spark באמצעות שער הרכיבים של Managed Service for Apache Spark, Cloud Shell של הפרויקט או הכלי gcloud של Google Cloud CLI:
שער רכיבים: התחברות בלחיצה אחת ל-Hadoop, ל-Spark ולממשקי משתמש אינטרנטיים של רכיבים אחרים מתוך מסוף Google Cloud . מפעילים את שער הרכיבים כשיוצרים את האשכול.
Cloud Shell: ב-Cloud Shell במסוף Google Cloud מותקנים מראש הפקודות וכלי העזר של ה-CLI של gcloud, ויש בו את התכונה Web Preview שמאפשרת להתחבר במהירות דרך מנהרת SSH ליציאה של ממשק אינטרנט באשכול. עם זאת, חיבור לאשכול מ-Cloud Shell משתמש בהעברה ליציאה מקומית אחרת, שפותחת חיבור ליציאה אחת בלבד בממשק האינטרנט של האשכול – נדרשות כמה פקודות כדי להתחבר לכמה יציאות. בנוסף, הסשנים של Cloud Shell מסתיימים באופן אוטומטי אחרי פרק זמן של חוסר פעילות (30 דקות).
Google Cloud CLI: הפקודה
gcloud compute sshעם העברה דינמית ליציאה אחרת מאפשרת ליצור מנהרת SSH ולהריץ שרת proxy מסוג SOCKS מעל המנהרה. אחרי שמפעילים את הפקודה הזו, צריך להגדיר את הדפדפן המקומי כך שישתמש בשרת ה-proxy של SOCKS. שיטת החיבור הזו מאפשרת להתחבר לכמה יציאות בממשק האינטרנט של האשכול. האם אפשר להשתמש בהעברה ליציאה אחרת במקום בשרת proxy מסוג SOCKS? למידע נוסף.
הגדרת משתני פקודה נפוצים
כדי שיהיה קל יותר להעתיק ולהריץ דוגמאות של שורת הפקודה במחשב המקומי או ב-Cloud Shell, מגדירים משתני פקודה של gcloud dataproc. יכול להיות שתצטרכו להגדיר משתנים נוספים לחלק מהפקודות לדוגמה שמוצגות בדף הזה.
Linux/mac/Shell
export PROJECT=project;export HOSTNAME=hostname;export ZONE=zone
Windows
set PROJECT=project && set HOSTNAME=hostname && set ZONE=zone
- מגדירים את PROJECT ל Google Cloud מזהה הפרויקט.
- מגדירים את HOSTNAME לשם של צומת המאסטר באשכול Managed Service for Apache Spark (השם של המאסטר מסתיים בסיומת
-m) - מגדירים את ZONE לאזור של המכונות הווירטואליות באשכול Managed Service for Apache Spark (לדוגמה, "us-central1-b").
יצירת מנהרת SSH
פקודת gcloud
מריצים את הפקודה הבאה של gcloud במכונה המקומית כדי להגדיר מנהרת SSH מיציאה פתוחה במכונה המקומית למכונה הראשית של האשכול, ומריצים שרת proxy מקומי של SOCKS שמאזין ליציאה.
לפני שמריצים את הפקודה, במכונה המקומית:
- הגדרת משתני פקודה נפוצים
- מגדירים משתנה PORT ליציאה פתוחה במחשב המקומי.
יציאה
1080היא בחירה שרירותית אבל אופיינית, כי סביר להניח שהיא פתוחה.PORT=number
Linux/macOS
gcloud compute ssh ${HOSTNAME} \
--project=${PROJECT} --zone=${ZONE} -- \
-D ${PORT} -N
Windows
gcloud compute ssh %HOSTNAME% ^ --project=%PROJECT% --zone=%ZONE% -- ^ -D %PORT% -N
המפריד -- מאפשר להוסיף ארגומנטים של SSH לפקודה gcloud compute ssh, באופן הבא:
-Dמציין העברה דינמית ליציאה אחרת ברמת האפליקציה.-
-Nמורה ל-gcloudלא לפתוח מעטפת מרוחקת.
הפקודה הזו של gcloud יוצרת מנהרת SSH שפועלת בנפרד מסשנים אחרים של מעטפת SSH, מונעת הצגה של שגיאות שקשורות למנהרה בפלט של המעטפת ועוזרת למנוע סגירה לא מכוונת של המנהרה.
אם הפקודה ssh נכשלת ומוצגת הודעת השגיאה bind: Cannot assign requested address, יכול להיות שהסיבה לכך היא שהיציאה המבוקשת נמצאת בשימוש. נסו להריץ את הפקודה עם ערך משתנה PORT אחר.
הפקודה שלמעלה פועלת בחזית, והיא צריכה להמשיך לפעול כדי שהמנהרה תישאר פעילה. הפקודה אמורה לצאת באופן אוטומטי אם וכאשר תמחקו את האשכול.
Cloud Shell
-
פותחים את Google Cloud Cloud Shell.
-
מריצים את הפקודה
gcloudשבהמשך ב-Cloud Shell כדי להגדיר מנהרת SSH מיציאת תצוגה מקדימה של Cloud Shell ליציאת ממשק אינטרנט בצומת הראשי באשכול. לפני שמריצים את הפקודה, ב-Cloud Shell :- הגדרת משתני פקודה נפוצים
- מגדירים משתנה PORT1 ליציאת Cloud Shell בטווח היציאות 8080-8084, ומגדירים משתנה PORT2 ליציאת ממשק האינטרנט בצומת הראשי באשכול Managed Service for Apache Spark.
PORT1=number PORT2=number
gcloud compute ssh ${HOSTNAME} \ --project=${PROJECT} --zone=${ZONE} -- \ -4 -N -L ${PORT1}:${HOSTNAME}:${PORT2}המפריד
--מאפשר להוסיף ארגומנטים של SSH לפקודהgcloud compute ssh, באופן הבא:-4מורה ל-ssh להשתמש רק ב-IPv4.-
-Nמורה ל-gcloudלא לפתוח מעטפת מרוחקת. -
-L ${PORT1}:${HOSTNAME}:${PORT2}מציין העברה ליציאה אחרת מקומית מ-PORT1 שצוין ב-Cloud Shell אל HOSTNAME:PORT2 באשכול.
הפקודה הזו של
gcloudיוצרת מנהרת SSH שפועלת בנפרד מסשנים אחרים של מעטפת SSH, מונעת הצגה של שגיאות שקשורות למנהרה בפלט של המעטפת ועוזרת למנוע סגירה לא מכוונת של המנהרה.
הגדרת הדפדפן
פקודת gcloud
מנהרת ה-SSH תומכת בהעברת תנועה באמצעות שרת proxy בפרוטוקול SOCKS.
כדי להגדיר את הדפדפן לשימוש בשרת proxy, צריך להתחיל סשן חדש בדפדפן עם הפרמטרים של שרת ה-proxy. הדוגמה הבאה מתייחסת לדפדפן Google Chrome.
HOSTNAME הוא השם של צומת המאסטר של האשכול (ראו הגדרת משתני פקודה נפוצים).
Linux
/usr/bin/google-chrome \
--proxy-server="socks5://localhost:${PORT}" \
--user-data-dir=/tmp/${HOSTNAME}
macOS
"/Applications/Google Chrome.app/Contents/MacOS/Google Chrome" \
--proxy-server="socks5://localhost:${PORT}" \
--user-data-dir=/tmp/${HOSTNAME}
Windows
"%ProgramFiles(x86)%\Google\Chrome\Application\chrome.exe" ^ --proxy-server="socks5://localhost:%PORT%" ^ --user-data-dir="%Temp%\%HOSTNAME%"
בפקודה הזו נעשה שימוש בדגלים הבאים של דפדפן Chrome:
-proxy-server="socks5://localhost:1080"מורה ל-Chrome לשלוח את כל בקשות ה-URL שלhttp://ו-https://דרך שרת ה-proxy של SOCKSlocalhost:${PORT}, באמצעות גרסה 5 של פרוטוקול SOCKS. ${PORT} הוא משתנה היציאה שהגדרתם ביצירת מנהרת SSH. שרת ה-proxy פותר את שמות המארחים של כתובות ה-URL, ולא Chrome באופן מקומי.--user-data-dir=/tmp/${HOSTNAME}מאלץ את Chrome לפתוח חלון חדש שלא קשור לסשן קיים ב-Chrome. בלי הדגל הזה, יכול להיות ש-Chrome יפתח חלון חדש שמחובר לסשן קיים ב-Chrome, ויתעלם מההגדרה של--proxy-server. הערך שמוגדר ל---user-data-dirיכול להיות כל נתיב שלא קיים.
Cloud Shell
כשמשתמשים ב-Cloud Shell, לא צריך להגדיר את הדפדפן המקומי. אחרי שיוצרים מנהרת SSH, משתמשים בתצוגה המקדימה באינטרנט של Cloud Shell כדי להתחבר לממשק האשכול.
התחברות לממשק של האשכול
פקודת gcloud
אחרי שמגדירים את הדפדפן המקומי לשימוש בשרת ה-proxy, אפשר לעבור לכתובת ה-URL של ממשק האינטרנט באשכול של Managed Service for Apache Spark (ראו ממשקים זמינים).
כתובת ה-URL של הדפדפן היא בפורמט ובתוכן הבאים:
http://cluster-name-m:port (יציאת ממשק האשכול)
Cloud Shell
לוחצים על הלחצן Web Preview
ב-Cloud Shell ובוחרים באחת מהאפשרויות הבאות:
- "Preview on port 8080" (תצוגה מקדימה ביציאה 8080), או
- "שינוי יציאה" ומזינים את מספר היציאה בתיבת הדו-שיח
gcloud compute ssh בקטע יצירת מנהרת SSH.
ייפתח חלון דפדפן שמתחבר ליציאת ממשק האינטרנט בצומת הראשי של האשכול.
שאלות נפוצות וטיפים לניפוי באגים
מה קורה אם ממשק המשתמש לא מופיע בדפדפן?
אם ממשקי המשתמש לא מופיעים בדפדפן, שתי הסיבות הנפוצות ביותר לכך הן:
יש בעיה בחיבור לרשת, אולי בגלל חומת אש. מריצים את הפקודה הבאה (אחרי הגדרת משתנים מקומיים) כדי לבדוק אם אפשר להשתמש ב-SSH במכונה הראשית. אם לא, כנראה שיש בעיה בקישוריות.
Linux/macOS
gcloud compute ssh ${HOSTNAME}-m \ --project=${PROJECT}Windows
gcloud compute ssh %HOSTNAME%-m ^ --project=%PROJECT%
שרת proxy אחר מפריע לשרת ה-proxy של SOCKS. כדי לבדוק את שרת ה-proxy, מריצים את פקודת
curlהבאה (זמינה ב-Linux וב-macOS):אם מופיעה תגובת HTTP, שרת ה-Proxy פועל, ויכול להיות ששרת ה-Proxy מסוג SOCKS מופרע על ידי שרת Proxy אחר או תוסף אחר לדפדפן.Linux/macOS
curl -Is --socks5-hostname localhost:1080 http://cluster-name-m:8088
Windows
curl.exe -Is --socks5-hostname localhost:1080 http://cluster-name-m:8088
האם אפשר להשתמש בהעברה ליציאה אחרת במקום בשרת proxy מסוג SOCKS?
במקום שרת ה-proxy מסוג SOCKS, אפשר לגשת לממשקי המשתמש של אפליקציית האינטרנט שפועלים במכונה הראשית באמצעות העברה ליציאה אחרת באמצעות SSH, שמעבירה את היציאה של המכונה הראשית ליציאה מקומית. לדוגמה, הפקודה הבאה מאפשרת לגשת אל localhost:1080 כדי להגיע אל cluster-name-m:8088 בלי SOCKS (ראו הגדרת משתני פקודה נפוצים):
Linux/macOS
gcloud compute ssh ${HOSTNAME}-m \
--project=${PROJECT} -- \
-L 1080:${HOSTNAME}-m:8088 -N -n
Windows
gcloud compute ssh %HOSTNAME%-m ^ --project=%PROJECT% -- ^ -L 1080:%HOSTNAME%-m:8088 -N -n
יכול להיות שעדיף להשתמש בשרת proxy מסוג SOCKS במקום בהעברה ליציאה אחרת, כי שרת ה-proxy:
- מאפשרת לגשת לכל היציאות של אפליקציית האינטרנט בלי להגדיר מנהרת העברה ליציאה אחרת לכל יציאה של ממשק המשתמש.
- מאפשר לממשקי המשתמש באינטרנט של Spark ו-Hadoop לפתור בצורה נכונה מארחי DNS