החל מהגרסה 6.14, סטודיו EMR של אמזון תומך בניתוח אינטראקטיבי על Amazon EMR ללא שרת. כעת אתה יכול להשתמש ביישומי EMR Serverless כמחשוב, בנוסף לאמזון EMR באשכולות EC2 ו אמזון EMR ב-EKS אשכולות וירטואליים, להפעלת מחברות JupyterLab מ-EMR Studio Workspaces.
EMR Studio הוא סביבת פיתוח משולבת (IDE) שמאפשרת למדעני נתונים ומהנדסי נתונים לפתח, להמחיש ולבצע ניפוי באגים של יישומי ניתוח שנכתבו ב-PySpark, Python ו-Scala. EMR Serverless היא אפשרות ללא שרת עבור אמזון EMR מה שהופך את זה לפשוט להפעיל מסגרות לניתוח ביג דאטה בקוד פתוח כמו Apache Spark מבלי להגדיר, לנהל ולהרחיב אשכולות או שרתים.
בפוסט, אנו מדגימים כיצד לבצע את הפעולות הבאות:
- צור נקודת קצה ללא שרת EMR עבור יישומים אינטראקטיביים
- צרף את נקודת הקצה לסביבת EMR Studio קיימת
- צור מחברת והפעל יישום אינטראקטיבי
- אבחן בצורה חלקה יישומים אינטראקטיביים מתוך EMR Studio
תנאים מוקדמים
בארגון טיפוסי, מנהל חשבון AWS יגדיר משאבי AWS כגון ניהול זהות וגישה של AWS (IAM) תפקידים, שירות אחסון פשוט של אמזון (אמזון S3) דליים, ו ענן וירטואלי פרטי של אמזון משאבים (Amazon VPC) עבור גישה לאינטרנט וגישה למשאבים אחרים ב-VPC. הם מקצים מנהלי EMR Studio שמנהלים את הגדרת EMR Studios והקצאת משתמשים לאולפן EMR ספציפי. ברגע שהם מוקצים, מפתחי EMR Studio יכולים להשתמש ב-EMR Studio כדי לפתח ולנטר עומסי עבודה.
ודא שאתה מגדיר משאבים כמו דלי S3 שלך, רשתות משנה VPC ו-EMR Studio באותו אזור AWS.
השלם את השלבים הבאים כדי לפרוס את התנאים המוקדמים האלה:
- הפעל את הדבר הבא AWS CloudFormation ערימה.
- הזן ערכים עבור AdminPassword ו DevPassword ורשום את הסיסמאות שאתה יוצר.
- בחרו הַבָּא.
- שמור את ההגדרות כברירת מחדל ובחר הַבָּא שוב.
- בחר אני מאשר ש- AWS CloudFormation עשוי ליצור משאבי IAM עם שמות מותאמים אישית.
- בחר שלח.
סיפקנו גם הנחיות לפריסת משאבים אלה באופן ידני עם מדיניות IAM לדוגמה ב- GitHub ריפו.
הגדר את EMR Studio ויישום אינטראקטיבי ללא שרת
לאחר שמנהל חשבון AWS ישלים את התנאים המוקדמים, מנהל EMR Studio יכול להיכנס ל- קונסולת הניהול של AWS כדי ליצור יישום EMR Studio, Workspace ו-EMR ללא שרתים.
צור סטודיו EMR ומרחב עבודה
מנהל EMR Studio צריך להיכנס למסוף באמצעות ה- emrs-interactive-app-admin-user
אישורי משתמש. אם פרסת את המשאבים הנדרשים באמצעות תבנית CloudFormation שסופקה, השתמש בסיסמה שסיפקת כפרמטר קלט.
- בקונסולת אמזון EMR, בחר EMR ללא שרת בחלונית הניווט.
- בחרו התחל כאן.
- בחר צור והפעל את EMR Studio.
זה יוצר סטודיו עם שם ברירת המחדל studio_1
ומרחב עבודה עם שם ברירת המחדל My_First_Workspace
. כרטיסיית דפדפן חדשה תיפתח עבור Studio_1
ממשק משתמש.
צור אפליקציה ללא שרת EMR
השלם את השלבים הבאים כדי ליצור יישום EMR ללא שרת:
- במסוף EMR Studio, בחר יישומים בחלונית הניווט.
- צור אפליקציה חדשה.
- בעד שם, הזן שם (לדוגמה,
my-serverless-interactive-application
). - בעד אפשרויות הגדרת אפליקציה, בחר השתמש בהגדרות מותאמות אישית לעומסי עבודה אינטראקטיביים.
עבור יישומים אינטראקטיביים, כשיטת עבודה מומלצת, אנו ממליצים לשמור את הנהג והעובדים מאתחלים מראש על ידי קביעת התצורה של יכולת אתחול מראש בזמן יצירת האפליקציה. זה יוצר למעשה מאגר חם של עובדים עבור אפליקציה ושומר על המשאבים מוכנים לצריכה, מה שמאפשר לאפליקציה להגיב תוך שניות. לשיטות עבודה מומלצות נוספות ליצירת יישומים ללא שרת EMR, ראה הגדר מגבלות משאבים לצוות עבור עומסי עבודה ב-Big Data באמצעות Amazon EMR Serverless.
- ב נקודת קצה אינטראקטיבית בחר, בחר אפשר נקודת קצה אינטראקטיבית.
- ב חיבורי רשת בחר את ה-VPC, רשתות המשנה הפרטיות וקבוצת האבטחה שיצרת בעבר.
אם פרסת את ערימת CloudFormation שסופקה בפוסט זה, בחר emr-serverless-sg
בתור קבוצת האבטחה.
יש צורך ב-VPC כדי שעומס העבודה יוכל לגשת לאינטרנט מתוך היישום EMR Serverless על מנת להוריד חבילות Python חיצוניות. ה-VPC מאפשר לך גם לגשת למשאבים כגון שירות מסדי נתונים יחסי של אמזון (אמזון RDS) ו- האדום של אמזון שנמצאים ב-VPC מיישום זה. חיבור של יישום ללא שרת ל-VPC יכול להוביל למיצוי IP ברשת המשנה, לכן ודא שיש מספיק כתובות IP ברשת המשנה שלך.
- בחרו צור והתחל יישום.
בדף היישומים, אתה יכול לוודא שהסטטוס של האפליקציה ללא שרת שלך משתנה ל התחיל.
- בחר את היישום שלך ובחר איך זה עובד.
- בחרו הצג והפעל סביבות עבודה.
- בחרו הגדר את הסטודיו.
- בעד תפקיד שירות¸ לספק את תפקיד השירות EMR Studio שיצרת כתנאי מוקדם (
emr-studio-service-role
). - בעד אחסון סביבת עבודה, הזן את הנתיב של דלי S3 שיצרת כתנאי מוקדם (
emrserverless-interactive-blog-<account-id>-<region-name>
). - בחרו שמור את השינויים.
14. נווט אל קונסולת האולפנים על ידי בחירה אולפני בתפריט הניווט השמאלי ב- סטודיו EMR סָעִיף. שימו לב ל כתובת URL של גישה לסטודיו ממסוף Studios וספק אותו למפתחים שלך כדי להפעיל את יישומי Spark שלהם.
הפעל את אפליקציית Spark הראשונה שלך
לאחר שמנהל המערכת של EMR Studio יצר את האפליקציה Studio, Workspace והאפליקציה ללא שרתים, משתמש Studio יכול להשתמש בסביבת העבודה ובאפליקציה כדי לפתח ולנטר עומסי עבודה של Spark.
הפעל את סביבת העבודה וצרף את היישום ללא שרת
בצע את הצעדים הבאים:
- באמצעות כתובת ה-URL של הסטודיו שסופקה על ידי מנהל EMR Studio, היכנס באמצעות ה-
emrs-interactive-app-dev-user
אישורי משתמש משותפים על ידי מנהל חשבון AWS.
אם פרסת את המשאבים הנדרשים באמצעות תבנית CloudFormation שסופקה, השתמש בסיסמה שסיפקת כפרמטר קלט.
על סביבות עבודה בדף, תוכל לבדוק את המצב של סביבת העבודה שלך. כאשר סביבת העבודה תושק, תראה את הסטטוס משתנה ל מוכנים.
- הפעל את סביבת העבודה על ידי בחירת שם סביבת העבודה (
My_First_Workspace
).
פעולה זו תפתח כרטיסייה חדשה. ודא שהדפדפן שלך מאפשר חלונות קופצים.
- בסביבת העבודה, בחר לחשב (סמל אשכול) בחלונית הניווט.
- בעד אפליקציה ללא שרת EMR, בחר את היישום שלך (
my-serverless-interactive-application
). - בעד תפקיד זמן ריצה אינטראקטיבי, בחר תפקיד זמן ריצה אינטראקטיבי (עבור פוסט זה אנו משתמשים
emr-serverless-runtime-role
). - בחרו לצרף כדי לצרף את היישום ללא שרת כסוג המחשוב עבור כל המחברות בסביבת העבודה הזו.
הפעל את אפליקציית Spark באופן אינטראקטיבי
בצע את הצעדים הבאים:
- בחר את דוגמאות למחברת (סמל שלוש נקודות) בחלונית הניווט ופתח
Getting-started-with-emr-serverless
מחברת. - בחרו שמור בסביבת העבודה.
ישנן שלוש אפשרויות של גרעינים עבור המחברת שלנו: Python 3, PySpark ו-Spark (עבור Scala).
- כשתתבקש, בחר PySpark כגרעין.
- בחרו בחר.
עכשיו אתה יכול להפעיל את אפליקציית Spark שלך. כדי לעשות זאת, השתמש ב- %%configure
Sparkmagic הפקודה, המגדירה את פרמטרי יצירת ההפעלה. יישומים אינטראקטיביים תומכים בסביבות וירטואליות של Python. אנו משתמשים בסביבה מותאמת אישית בצמתי העבודה על ידי ציון נתיב עבור זמן ריצה אחר של Python עבור סביבת הביצוע באמצעות spark.executorEnv.PYSPARK_PYTHON
. ראה את הקוד הבא:
%%configure -f
{
"conf": {
"spark.pyspark.virtualenv.enabled": "true",
"spark.pyspark.virtualenv.bin.path": "/usr/bin/virtualenv",
"spark.pyspark.virtualenv.type": "native",
"spark.pyspark.python": "/usr/bin/python3",
"spark.executorEnv.PYSPARK_PYTHON": "/usr/bin/python3"
}
}
התקן חבילות חיצוניות
כעת, כשיש לך סביבה וירטואלית עצמאית עבור העובדים, מחברות EMR Studio מאפשרות לך להתקין חבילות חיצוניות מתוך האפליקציה ללא שרת באמצעות ה-Spark install_pypi_package
לתפקד באמצעות הקשר Spark. שימוש בפונקציה זו הופך את החבילה לזמינה עבור כל העובדים ללא שרת EMR.
ראשית, התקן את matplotlib, חבילת Python, מ- PyPi:
sc.install_pypi_package("matplotlib")
אם השלב הקודם לא מגיב, בדוק את הגדרת ה-VPC שלך וודא שהיא מוגדרת כהלכה עבור גישה לאינטרנט.
כעת אתה יכול להשתמש במערך נתונים ולהמחיש את הנתונים שלך.
צור הדמיות
כדי ליצור הדמיות, אנו משתמשים במערך נתונים ציבורי במוניות צהובות של ניו יורק:
file_name = "s3://athena-examples-us-east-1/notebooks/yellow_tripdata_2016-01.parquet"
taxi_df = (spark.read.format("parquet").option("header", "true")
.option("inferSchema", "true").load(file_name))
בגוש הקוד הקודם, אתה קורא את קובץ הפרקט מדלי ציבורי באמזון S3. לקובץ יש כותרות, ואנחנו רוצים ש-Spark יסיק את הסכימה. לאחר מכן אתה משתמש במסגרת נתונים של Spark כדי לקבץ ולספור עמודות ספציפיות מהן taxi_df
:
taxi1_df = taxi_df.groupBy("VendorID", "passenger_count").count()
taxi1_df.show()
השתמש %%display
קסם לצפייה בתוצאה בפורמט טבלה:
%%display
taxi1_df
אתה יכול גם לדמיין במהירות את הנתונים שלך עם חמישה סוגים של תרשימים. אתה יכול לבחור את סוג התצוגה והתרשים ישתנה בהתאם. בצילום המסך הבא, אנו משתמשים בתרשים עמודות כדי להמחיש את הנתונים שלנו.
אינטראקציה עם EMR Serverless באמצעות Spark SQL
אתה יכול ליצור אינטראקציה עם טבלאות ב- קטלוג נתוני דבק של AWS באמצעות Spark SQL על EMR Serverless. במחברת לדוגמה, אנו מראים כיצד ניתן להפוך נתונים באמצעות מסגרת נתונים של Spark.
ראשית, צור תצוגה זמנית חדשה בשם מוניות. זה מאפשר לך להשתמש ב-Spark SQL כדי לבחור נתונים מתצוגה זו. לאחר מכן צור מסגרת נתונים של מונית להמשך עיבוד:
taxi_df.createOrReplaceTempView("taxis")
sqlDF = spark.sql(
"SELECT DOLocationID, sum(total_amount) as sum_total_amount
FROM taxis where DOLocationID < 25 Group by DOLocationID ORDER BY DOLocationID"
)
sqlDF.show(5)
בכל תא במחברת EMR Studio שלך, אתה יכול להרחיב Spark Job Progress כדי להציג את השלבים השונים של העבודה שהוגשה ל-EMR Serverless תוך הפעלת התא הספציפי הזה. אתה יכול לראות את הזמן שלוקח להשלים כל שלב. בדוגמה הבאה, בשלב 14 של העבודה יש 12 משימות שהושלמו. בנוסף, אם יש כשל כלשהו, אתה יכול לראות את היומנים, מה שהופך את פתרון הבעיות לחוויה חלקה. נדון בכך יותר בסעיף הבא.
השתמש בקוד הבא כדי לדמיין את מסגרת הנתונים המעובדת באמצעות חבילת matplotlib. אתה משתמש בספריית maptplotlib כדי לשרטט את מיקום ההורדה ואת הכמות הכוללת כתרשים עמודות.
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
plt.clf()
df = sqlDF.toPandas()
plt.bar(df.DOLocationID, df.sum_total_amount)
%matplot plt
אבחון יישומים אינטראקטיביים
אתה יכול לקבל את מידע הפגישה עבור נקודת הקצה של Livy שלך באמצעות ה %%info
Sparkmagic. זה נותן לך קישורים לגישה לממשק המשתמש של Spark כמו גם ליומן מנהל ההתקן ישירות במחברת שלך.
צילום המסך הבא הוא קטע יומן מנהל התקן עבור האפליקציה שלנו, אותו פתחנו דרך הקישור במחברת שלנו.
באופן דומה, אתה יכול לבחור בקישור למטה ממשק המשתמש של Spark כדי לפתוח את ממשק המשתמש. צילום המסך הבא מציג את מוציאים לפועל לשונית, המספקת גישה ליומני מנהל ההתקן והמבצעים.
צילום המסך הבא מציג את שלב 14, התואם לשלב Spark SQL שראינו קודם ובו חישבנו את הסכום המושכל של אוסף המוניות הכולל, שחולק ל-12 משימות. באמצעות ממשק המשתמש של Spark, האפליקציה האינטראקטיבית מספקת סטטוס ברמת המשימה, קלט/פלט ופרטי ערבוב, כמו גם קישורים ליומנים מתאימים עבור כל משימה עבור שלב זה ישירות מהמחברת שלך, מה שמאפשר חוויית פתרון בעיות חלקה.
לנקות את
אם אינך רוצה יותר לשמור את המשאבים שנוצרו בפוסט זה, השלם את שלבי הניקוי הבאים:
- מחק את היישום EMR Serverless.
- מחק את EMR Studio ואת סביבות העבודה והמחברות המשויכות.
- כדי למחוק את שאר המשאבים, נווט אל מסוף CloudFormation, בחר את המחסנית ובחר מחק.
כל המשאבים יימחקו מלבד דלי S3, שמדיניות המחיקה שלו מוגדרת לשמירה.
סיכום
הפוסט הראה כיצד להפעיל עומסי עבודה אינטראקטיביים של PySpark ב-EMR Studio באמצעות EMR Serverless כמחשוב. אתה יכול גם לבנות ולנטר יישומי Spark בסביבת עבודה אינטראקטיבית של JupyterLab.
בפוסט הקרוב, נדון ביכולות נוספות של יישומי EMR Serverless Interactive, כגון:
- עבודה עם משאבים כגון Amazon RDS ו- Amazon Redshift ב-VPC שלך (לדוגמה, עבור קישוריות JDBC/ODBC)
- הפעלת עומסי עבודה של עסקאות באמצעות נקודות קצה ללא שרת
אם זו הפעם הראשונה שאתה חוקר את EMR Studio, אנו ממליצים לבדוק את ה- סדנאות EMR של אמזון והכוונה ל צור סטודיו EMR.
על הכותבים
Sekar Srinivasan הוא ארכיטקט פתרונות מומחה ראשי ב-AWS המתמקד בניתוח נתונים ובינה מלאכותית. ל-Sekar למעלה מ-20 שנות ניסיון בעבודה עם נתונים. הוא נלהב לעזור ללקוחות לבנות פתרונות ניתנים להרחבה תוך מודרניזציה של הארכיטקטורה שלהם ויצירת תובנות מהנתונים שלהם. בזמנו הפנוי הוא אוהב לעבוד בפרויקטים ללא מטרות רווח, המתמקדים בחינוך ילדים מעוטי יכולת.
דישה אומרואני הוא ארכיטקט נתונים Sr. עם שירותי אמזון מקצועיים ב-Global Health Care ו-LifeSciences. היא עבדה עם לקוחות כדי לתכנן, לעצב ולהטמיע אסטרטגיית נתונים בקנה מידה. היא מתמחה באדריכלות ארכיטקטורות Data Mesh עבור פלטפורמות ארגוניות.
- הפצת תוכן ויחסי ציבור מופעל על ידי SEO. קבל הגברה היום.
- PlatoData.Network Vertical Generative Ai. העצים את עצמך. גישה כאן.
- PlatoAiStream. Web3 Intelligence. הידע מוגבר. גישה כאן.
- PlatoESG. פחמן, קלינטק, אנרגיה, סביבה, שמש, ניהול פסולת. גישה כאן.
- PlatoHealth. מודיעין ביוטכנולוגיה וניסויים קליניים. גישה כאן.
- מקור: https://aws.amazon.com/blogs/big-data/run-interactive-workloads-on-amazon-emr-serverless-from-amazon-emr-studio/