התקנה או עדכון של Apache Beam SDK

בדף הזה מוסבר איך להתקין או לעדכן את Apache Beam SDK כדי להריץ את צינורות הנתונים בשירות Dataflow.

התקנה של Apache Beam SDK

‫Apache Beam SDK הוא מודל תכנות בקוד פתוח לפייפליינים של נתונים. אתם מגדירים את צינורות עיבוד הנתונים האלה באמצעות תוכנית Apache Beam, ויכולים לבחור מריץ (runner), כמו Dataflow, כדי להריץ את צינור עיבוד הנתונים.

Java

הגרסה האחרונה של Apache Beam SDK ל-Java היא 2.77.0. אפשר לקרוא מידע על השינויים שכלולים בגרסה בהודעה על הגרסה.

כדי להוריד את Apache Beam SDK ל-Java באמצעות Maven, משתמשים באחד מהארטיפקטים שפורסמו ב-Maven Central Repository.

מוסיפים יחסי תלות וכלים לניהול יחסי תלות לקובץ pom.xml של ארטיפקט ה-SDK. פרטים נוספים זמינים במאמר ניהול יחסי תלות של צינור עיבוד נתונים ב-Dataflow.

מידע נוסף על תלויות ב-Apache Beam SDK for Java זמין במאמרים Apache Beam SDK for Java dependencies ו-Managing Beam dependencies in Java במסמכי התיעוד של Apache Beam.

Python

הגרסה האחרונה של Apache Beam SDK ל-Python היא 2.77.0. אפשר לקרוא מידע על השינויים שכלולים בגרסה בהודעה על הגרסה.

כדי לקבל את Apache Beam SDK ל-Python, משתמשים באחת מהחבילות שפורסמו ב- Python Package Index.

מתקינים את Python wheel באמצעות הפקודה הבאה:

pip install wheel

כדי להתקין את הגרסה העדכנית של Apache Beam SDK ל-Python, מריצים את הפקודה הבאה מסביבה וירטואלית:

pip install 'apache-beam[gcp]'

ההתקנה עשויה להימשך זמן מה, בהתאם לחיבור.

המשך

הגרסה האחרונה שפורסמה של Apache Beam SDK for Go היא 2.77.0. אפשר לקרוא מידע על השינויים שכלולים בגרסה בהודעה על הגרסה.

כדי להתקין את הגרסה העדכנית של Apache Beam SDK ל-Go, מריצים את הפקודה הבאה:

go get -u github.com/apache/beam/sdks/v2/go/pkg/beam

הגדרת סביבת הפיתוח

כדי להגדיר את הפרויקט וסביבת הפיתוח ב- Google Cloud לשימוש ב-Dataflow, תוכלו להיעזר באחד מהמדריכים הבאים:

קוד מקור ודוגמאות

קוד המקור של Apache Beam זמין במאגר של Apache Beam ב-GitHub.

Java

דוגמאות קוד זמינות ב ספריית הדוגמאות של Apache Beam ב-GitHub.

Python

דוגמאות קוד זמינות בספריית הדוגמאות של Apache Beam ב-GitHub.

המשך

דוגמאות קוד זמינות בספריית הדוגמאות של Apache Beam ב-GitHub.

איך מוצאים את גרסת Dataflow SDK

פרטי ההתקנה משתנים בהתאם לסביבת הפיתוח. אם אתם משתמשים ב-Maven, אתם יכולים להתקין כמה גרסאות של Dataflow SDK במאגר Maven מקומי אחד או יותר.

Java

כדי לברר איזו גרסה של Dataflow SDK פועלת בצינור עיבוד נתונים מסוים, אפשר להסתכל על הפלט של המסוף כשמריצים את DataflowPipelineRunner או את BlockingDataflowPipelineRunner. המסוף יכיל הודעה כמו זו שבהמשך, שכוללת את פרטי הגרסה של Dataflow SDK:

Python

כדי לברר איזו גרסה של Dataflow SDK פועלת בצינור עיבוד נתונים מסוים, אפשר להסתכל על הפלט של המסוף כשמריצים את DataflowRunner. במסוף תופיע הודעה כמו זו, שמכילה את פרטי הגרסה של Dataflow SDK:

המשך

כדי לברר איזו גרסה של Dataflow SDK פועלת בצינור עיבוד נתונים מסוים, אפשר להסתכל על הפלט של המסוף כשמריצים את DataflowRunner. המסוף יכיל הודעה כמו זו שבהמשך, שכוללת את פרטי הגרסה של Dataflow SDK:

  INFO: Executing pipeline on the Dataflow Service, ...
  Dataflow SDK version: <version>

עדכון של Apache Beam SDK

כשמשדרגים את הצינור לגרסה עדכנית יותר של Apache Beam SDK, צריך לעדכן את הגדרות התלות של הפרויקט ולבדוק אם יש שינויי תוכנה שעלולים לגרום לכשל בין הגרסאות.

עיון בנתוני הגרסה ובשינויי תוכנה שעלולים לגרום לכשל

לפני השדרוג, כדאי לעיין בנתוני הגרסה של Apache Beam כדי לראות אם יש שינויים, תיקוני באגים ושינויי תוכנה שעלולים לגרום לכשל.

אם אתם משדרגים בין כמה גרסאות משניות, כדאי לעיין בהערות לגבי כל הגרסאות שביניהן. לדוגמה, אם אתם משדרגים מגרסה 2.50.0 לגרסה 2.60.0, כדאי לעיין בנתוני הגרסאות של גרסאות 2.51.0 עד 2.60.0. שינויי תוכנה שעלולים לגרום לכשל, הוצאה משימוש ועדכוני הגדרות מצטברים בין הגרסאות.

בעיות ידועות והודעות ספציפיות למחברים שמשפיעות על Dataflow מפורטות בעמודה Details בטבלה SDK version support status.

עדכון יחסי תלות ב-SDK

כדי לשדרג את גרסת ה-SDK בפרויקט, צריך לעדכן את תצורת ה-build או את הסביבה של השפה שבה נעשה שימוש בפייפליין. מחליפים את VERSION בגרסת היעד של Apache Beam SDK (לדוגמה, 2.76.0).

Java

כדי לשדרג את Apache Beam SDK ל-Java, מעדכנים את גרסת ה-SDK בקובץ תצורת ה-build, כמו pom.xml ל-Maven או build.gradle ל-Gradle.

Maven

בקובץ pom.xml, מעדכנים את המאפיין beam.version או את התג <version> ביחסי התלות של Apache Beam:

<properties>
  <beam.version>VERSION</beam.version>
</properties>

<dependencies>
  <dependency>
    <groupId>org.apache.beam</groupId>
    <artifactId>beam-sdks-java-core</artifactId>
    <version>${beam.version}</version>
  </dependency>
  <dependency>
    <groupId>org.apache.beam</groupId>
    <artifactId>beam-runners-google-cloud-dataflow-java</artifactId>
    <version>${beam.version}</version>
  </dependency>
</dependencies>

Gradle

בקובץ build.gradle, מעדכנים את הצהרות התלות של Apache Beam:

dependencies {
  implementation 'org.apache.beam:beam-sdks-java-core:VERSION'
  implementation 'org.apache.beam:beam-runners-google-cloud-dataflow-java:VERSION'
}

מידע נוסף זמין במאמר בנושא ניהול יחסי תלות בצינורות Java.

Python

כדי לשדרג את Apache Beam SDK ל-Python בסביבה המקומית או הווירטואלית, משתמשים ב-pip:

pip install --upgrade 'apache-beam[gcp]==VERSION'

בקבצים requirements.txt או setup.py, מעדכנים את הגרסה המוצמדת:

apache-beam[gcp]==VERSION

המשך

כדי לשדרג את Apache Beam SDK ל-Go, משתמשים ב-go get כדי לאחזר את גרסת היעד ומעדכנים את הקובץ go.mod:

go get -u github.com/apache/beam/sdks/v2@vVERSION
go mod tidy

מידע נוסף זמין במאמר ניהול יחסי תלות של צינור עיבוד נתונים ב-Go.

פריסת צינורות עיבוד נתונים משודרגים

אחרי שמעדכנים את גרסת ה-SDK בקוד, בוחרים אסטרטגיית פריסה על סמך סוג צינור הנתונים:

  • פייפליינים זורמים: בפייפליינים זורמים, אפשר לפרוס קוד משודרג באמצעות החלפת משימה במקום, הפעלת פייפליינים במקביל או עצירה והפעלה מחדש של המשימה. הוראות מפורטות, כללי תאימות ואסטרטגיות פריסה זמינים במאמרים בנושא עדכון פייפליין קיים ושדרוג פייפליין זורם.
  • צינורות Batch: צינורות Batch לא תומכים בעדכונים בזמן ההעברה או בהחלפת משימות במקום. מאפשרים למשימה הקיימת לפעול עד הסיום, או מבטלים את המשימה שפועלת ואז מפעילים משימה חדשה עם הגרסה המשודרגת של ה-SDK.

שיטות מומלצות ל-CI/CD ולעדכון פריסות

כדי לצמצם את הסיכון התפעולי כשמשיקים שדרוגי SDK בצינורות אוטומטיים של בנייה ופריסה, מומלץ לפעול לפי השיטות המומלצות הבאות:

  • הצמדת יחסי תלות: תמיד מצמידים גרסאות SDK מדויקות, כמו apache-beam[gcp]==VERSION ב-Python, או מחרוזות גרסה מדויקות ב-Maven וב-Gradle. כדי למנוע שדרוגים קלים שלא נבדקו במהלך גרסאות build אוטומטיות של CI/CD, הימנעו מטווחים דינמיים (כמו >= או latest).
  • אימות בסביבות Staging: פורסים ובודקים את צינור עיבוד הנתונים המשודרג בסביבת Staging ייעודית או בסביבת טרום-ייצור, לפני שמקדמים את השינויים לסביבת הייצור. מאמתים את קצב העברת הנתונים בצינור עיבוד הנתונים, את יציבות המדדים ואת הפלטים במורד הזרם.
  • שימוש בצינור עיבוד נתונים לבדיקה או בצינור עיבוד נתונים מקביל: לאפליקציות סטרימינג קריטיות, מריצים את צינור עיבוד הנתונים המשודרג במקביל לצינור עיבוד הנתונים הקיים. לפני שאתם מרוקנים את צינור עיבוד הנתונים הישן, ודאו שקיימת התאמה בין הנתונים ושהפלט תקין בשני הצינורות.

המאמרים הבאים