Xlera8

הפעל עומסי עבודה אינטראקטיביים ב- Amazon EMR Serverless מ- Amazon EMR Studio | שירותי האינטרנט של אמזון

החל מהגרסה 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.

השלם את השלבים הבאים כדי לפרוס את התנאים המוקדמים האלה:

  1. הפעל את הדבר הבא AWS CloudFormation ערימה.
    הפעל את Cloudformation Stack
  2. הזן ערכים עבור AdminPassword ו DevPassword ורשום את הסיסמאות שאתה יוצר.
  3. בחרו הַבָּא.
  4. שמור את ההגדרות כברירת מחדל ובחר הַבָּא שוב.
  5. בחר אני מאשר ש- AWS CloudFormation עשוי ליצור משאבי IAM עם שמות מותאמים אישית.
  6. בחר שלח.

סיפקנו גם הנחיות לפריסת משאבים אלה באופן ידני עם מדיניות IAM לדוגמה ב- GitHub ריפו.

הגדר את EMR Studio ויישום אינטראקטיבי ללא שרת

לאחר שמנהל חשבון AWS ישלים את התנאים המוקדמים, מנהל EMR ​​Studio יכול להיכנס ל- קונסולת הניהול של AWS כדי ליצור יישום EMR Studio, Workspace ו-EMR ללא שרתים.

צור סטודיו EMR ומרחב עבודה

מנהל EMR ​​Studio צריך להיכנס למסוף באמצעות ה- emrs-interactive-app-admin-user אישורי משתמש. אם פרסת את המשאבים הנדרשים באמצעות תבנית CloudFormation שסופקה, השתמש בסיסמה שסיפקת כפרמטר קלט.

  1. בקונסולת אמזון EMR, בחר EMR ללא שרת בחלונית הניווט.
  2. בחרו התחל כאן.
  3. בחר צור והפעל את EMR Studio.

זה יוצר סטודיו עם שם ברירת המחדל studio_1 ומרחב עבודה עם שם ברירת המחדל My_First_Workspace. כרטיסיית דפדפן חדשה תיפתח עבור Studio_1 ממשק משתמש.

צור והפעל את EMR Studio

צור אפליקציה ללא שרת EMR

השלם את השלבים הבאים כדי ליצור יישום EMR ללא שרת:

  1. במסוף EMR Studio, בחר יישומים בחלונית הניווט.
  2. צור אפליקציה חדשה.
  3. בעד שם, הזן שם (לדוגמה, my-serverless-interactive-application).
  4. בעד אפשרויות הגדרת אפליקציה, בחר השתמש בהגדרות מותאמות אישית לעומסי עבודה אינטראקטיביים.
    צור יישום ללא שרת באמצעות הגדרות מותאמות אישית

עבור יישומים אינטראקטיביים, כשיטת עבודה מומלצת, אנו ממליצים לשמור את הנהג והעובדים מאתחלים מראש על ידי קביעת התצורה של יכולת אתחול מראש בזמן יצירת האפליקציה. זה יוצר למעשה מאגר חם של עובדים עבור אפליקציה ושומר על המשאבים מוכנים לצריכה, מה שמאפשר לאפליקציה להגיב תוך שניות. לשיטות עבודה מומלצות נוספות ליצירת יישומים ללא שרת EMR, ראה הגדר מגבלות משאבים לצוות עבור עומסי עבודה ב-Big Data באמצעות Amazon EMR Serverless.

  1. ב נקודת קצה אינטראקטיבית בחר, בחר אפשר נקודת קצה אינטראקטיבית.
  2. ב חיבורי רשת בחר את ה-VPC, רשתות המשנה הפרטיות וקבוצת האבטחה שיצרת בעבר.

אם פרסת את ערימת CloudFormation שסופקה בפוסט זה, בחר emr-serverless-sg­  בתור קבוצת האבטחה.

יש צורך ב-VPC כדי שעומס העבודה יוכל לגשת לאינטרנט מתוך היישום EMR Serverless על מנת להוריד חבילות Python חיצוניות. ה-VPC מאפשר לך גם לגשת למשאבים כגון שירות מסדי נתונים יחסי של אמזון (אמזון RDS) ו- האדום של אמזון שנמצאים ב-VPC מיישום זה. חיבור של יישום ללא שרת ל-VPC יכול להוביל למיצוי IP ברשת המשנה, לכן ודא שיש מספיק כתובות IP ברשת המשנה שלך.

  1. בחרו צור והתחל יישום.

אפשר נקודות קצה אינטראקטיביות, בחר רשתות משנה פרטיות וקבוצת אבטחה

בדף היישומים, אתה יכול לוודא שהסטטוס של האפליקציה ללא שרת שלך משתנה ל התחיל.

  1. בחר את היישום שלך ובחר איך זה עובד.
  2. בחרו הצג והפעל סביבות עבודה.
  3. בחרו הגדר את הסטודיו.

  1. בעד תפקיד שירות¸ לספק את תפקיד השירות EMR Studio שיצרת כתנאי מוקדם (emr-studio-service-role).
  2. בעד אחסון סביבת עבודה, הזן את הנתיב של דלי S3 שיצרת כתנאי מוקדם (emrserverless-interactive-blog-<account-id>-<region-name>).
  3. בחרו שמור את השינויים.

בחר emr-studio-service-role ו-emrserverless-interactive-blog s3 bucket

14. נווט אל קונסולת האולפנים על ידי בחירה אולפני בתפריט הניווט השמאלי ב- סטודיו EMR סָעִיף. שימו לב ל כתובת URL של גישה לסטודיו ממסוף Studios וספק אותו למפתחים שלך כדי להפעיל את יישומי Spark שלהם.

הפעל את אפליקציית Spark הראשונה שלך

לאחר שמנהל המערכת של EMR ​​Studio יצר את האפליקציה Studio, Workspace והאפליקציה ללא שרתים, משתמש Studio יכול להשתמש בסביבת העבודה ובאפליקציה כדי לפתח ולנטר עומסי עבודה של Spark.

הפעל את סביבת העבודה וצרף את היישום ללא שרת

בצע את הצעדים הבאים:

  1. באמצעות כתובת ה-URL של הסטודיו שסופקה על ידי מנהל EMR ​​Studio, היכנס באמצעות ה- emrs-interactive-app-dev-user אישורי משתמש משותפים על ידי מנהל חשבון AWS.

אם פרסת את המשאבים הנדרשים באמצעות תבנית CloudFormation שסופקה, השתמש בסיסמה שסיפקת כפרמטר קלט.

על סביבות עבודה בדף, תוכל לבדוק את המצב של סביבת העבודה שלך. כאשר סביבת העבודה תושק, תראה את הסטטוס משתנה ל מוכנים.

  1. הפעל את סביבת העבודה על ידי בחירת שם סביבת העבודה (My_First_Workspace).

פעולה זו תפתח כרטיסייה חדשה. ודא שהדפדפן שלך מאפשר חלונות קופצים.

  1. בסביבת העבודה, בחר לחשב (סמל אשכול) בחלונית הניווט.
  2. בעד אפליקציה ללא שרת EMR, בחר את היישום שלך (my-serverless-interactive-application).
  3. בעד תפקיד זמן ריצה אינטראקטיבי, בחר תפקיד זמן ריצה אינטראקטיבי (עבור פוסט זה אנו משתמשים emr-serverless-runtime-role).
  4. בחרו לצרף כדי לצרף את היישום ללא שרת כסוג המחשוב עבור כל המחברות בסביבת העבודה הזו.

בחר אפליקציה ללא שרת-אינטראקטיבית שלי כאפליקציה שלך ותפקיד זמן ריצה ללא שרת-emr וצרף

הפעל את אפליקציית Spark באופן אינטראקטיבי

בצע את הצעדים הבאים:

  1. בחר את דוגמאות למחברת (סמל שלוש נקודות) בחלונית הניווט ופתח Getting-started-with-emr-serverless מחברת.
  2. בחרו שמור בסביבת העבודה.

ישנן שלוש אפשרויות של גרעינים עבור המחברת שלנו: Python 3, PySpark ו-Spark (עבור Scala).

  1. כשתתבקש, בחר PySpark כגרעין.
  2. בחרו בחר.

בחר 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

הטבלה מציגה עמודות ספק_מזהה, ספירת_נוסעים וספירה

אתה יכול גם לדמיין במהירות את הנתונים שלך עם חמישה סוגים של תרשימים. אתה יכול לבחור את סוג התצוגה והתרשים ישתנה בהתאם. בצילום המסך הבא, אנו משתמשים בתרשים עמודות כדי להמחיש את הנתונים שלנו.

תרשים עמודות המציג passager_count מול כל vendor_id

אינטראקציה עם 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 משימות שהושלמו. בנוסף, אם יש כשל כלשהו, ​​אתה יכול לראות את היומנים, מה שהופך את פתרון הבעיות לחוויה חלקה. נדון בכך יותר בסעיף הבא.

Job[14]: showString ב-NativeMethodAccessorImpl.java:0 ו-Job[15]: showString ב-NativeMethodAccessorImpl.java:0

השתמש בקוד הבא כדי לדמיין את מסגרת הנתונים המעובדת באמצעות חבילת 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, האפליקציה האינטראקטיבית מספקת סטטוס ברמת המשימה, קלט/פלט ופרטי ערבוב, כמו גם קישורים ליומנים מתאימים עבור כל משימה עבור שלב זה ישירות מהמחברת שלך, מה שמאפשר חוויית פתרון בעיות חלקה.

לנקות את

אם אינך רוצה יותר לשמור את המשאבים שנוצרו בפוסט זה, השלם את שלבי הניקוי הבאים:

  1. מחק את היישום EMR Serverless.
  2. מחק את EMR Studio ואת סביבות העבודה והמחברות המשויכות.
  3. כדי למחוק את שאר המשאבים, נווט אל מסוף 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 עבור פלטפורמות ארגוניות.

דבר איתנו

שלום שם! איך אני יכול לעזור לך?