1. نظرة عامة
ما هو Dataflow؟
Dataflow هي خدمة مُدارة لتنفيذ مجموعة متنوعة من أنماط معالجة البيانات. توضّح لك المستندات على هذا الموقع الإلكتروني كيفية نشر مسارات معالجة البيانات المجمّعة وتدفق البيانات باستخدام Dataflow، بما في ذلك إرشادات استخدام ميزات الخدمة.
حزمة Apache Beam SDK هي نموذج برمجة مفتوح المصدر يمكّنك من تطوير كل من مسارات الحزم وتدفقات البث. ويمكنك إنشاء المسارات باستخدام برنامج Apache Beam، ثم تشغيلها في خدمة Dataflow. توفِّر مستندات Apache Beam معلومات مفاهيمية معمّقة ومواد مرجعية لنموذج برمجة Apache Beam وحزم تطوير البرامج (SDK) وبرامج التشغيل الأخرى.
بث تحليلات البيانات بسرعة
تتيح عملية Dataflow تطوير مسار نقل بيانات البث بسرعة وسهولة مع تقليل وقت الاستجابة.
تبسيط العمليات والإدارة
يسمح ذلك للفِرق بالتركيز على البرمجة بدلاً من إدارة مجموعات الخوادم، لأنّ نهج Dataflow بدون خوادم يؤدي إلى تخفيف أعباء العمل المتعلّقة بهندسة البيانات.
تقليل التكلفة الإجمالية للملكية
من خلال التوسّع التلقائي للموارد إلى جانب إمكانات المعالجة على دفعات محسَّنة، تقدّم Dataflow سعة غير محدودة تقريبًا لإدارة أعباء العمل الموسمية والارتفاعة بدون زيادة في الإنفاق.
الميزات الأساسية
إدارة الموارد المبرمَجة وإعادة موازنة العمل الديناميكي
تعمل Dataflow على برمجة عملية توفير موارد المعالجة وإدارتها لتقليل وقت الاستجابة وزيادة الاستخدام إلى أقصى حد كي لا تحتاج إلى تدوير المثيلات أو الاحتفاظ بها يدويًا. تتم أيضًا برمجة تقسيم العمل ويتم تحسينه لإعادة موازنة العمل المتأخِّر ديناميكيًا. لا داعي لاستخدام "مفاتيح التشغيل السريع" أو معالجة بيانات الإدخال مسبقًا.
القياس التلقائي الأفقي
يؤدي القياس التلقائي الأفقي لموارد العمال للحصول على أفضل سرعة لإنتاج البيانات إلى تحسين الأداء الإجمالي من حيث السعر.
أسعار مرنة لجدولة الموارد للمعالجة المجمّعة
لمعالجة الطلبات بشكل مرن في جدولة المهام، مثل المهام اليومية، توفّر ميزة جدولة الموارد المرنة (FlexRS) سعرًا أقل للمعالجة على دفعات. ويتم وضع هذه المهام المرنة في قائمة انتظار مع ضمان استردادها لتنفيذها في غضون ست ساعات.
هذا الدليل التوجيهي مقتبس من https://cloud.google.com/dataflow/docs/quickstarts/quickstart-java-maven.
المعلومات التي ستطّلع عليها
- كيفية إنشاء مشروع Maven باستخدام Apache Beam، باستخدام حزمة Java SDK
- تشغيل نموذج مسار باستخدام "وحدة تحكّم Google Cloud Platform"
- كيفية حذف حزمة Cloud Storage المرتبطة ومحتوياتها
المتطلبات
كيف ستستخدم هذا البرنامج التعليمي؟
ما هو تقييمك لتجربتك في استخدام خدمات Google Cloud Platform؟
2. الإعداد والمتطلبات
إعداد بيئة ذاتية
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو G Suite، عليك إنشاء حساب.)
يُرجى تذكُّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (سبق أن تم استخدام الاسم أعلاه ولن يكون مناسبًا لك). ستتم الإشارة إليها لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID
.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console لاستخدام موارد Google Cloud.
إنّ تنفيذ هذا الدرس التطبيقي حول الترميز لن يكون مكلفًا أو مكلفًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "الحذف سريعًا". الذي يقدم لك نصائح حول كيفية إيقاف تشغيل الموارد حتى لا تتكبّد أي فواتير خارج نطاق هذا البرنامج التعليمي. يكون مستخدمو Google Cloud الجدد مؤهَّلون للانضمام إلى برنامج الفترة التجريبية المجانية التي تبلغ قيمتها 300 دولار أمريكي.
تفعيل واجهات برمجة التطبيقات
انقر على رمز القائمة في أعلى يمين الشاشة.
حدد واجهات برمجة التطبيقات الخدمات > لوحة البيانات من القائمة المنسدلة.
اختَر + تفعيل واجهات برمجة التطبيقات والخدمات.
ابحث عن "Compute Engine" في مربع البحث. انقر على "Compute Engine API" في قائمة النتائج التي تظهر.
في صفحة Google Compute Engine، انقر على تفعيل.
وبعد تفعيلها، انقر على السهم للعودة إلى الصفحة السابقة.
ابحث الآن عن واجهات برمجة التطبيقات التالية وفعِّلها أيضًا:
- تدفق البيانات في السحابة الإلكترونية
- Stackdriver
- تخزين في السحابة الإلكترونية
- ملف JSON للتخزين في السحابة الإلكترونية
- BigQuery
- خدمة Cloud Pub/Sub
- Cloud Datastore
- واجهات Cloud Resource Manager
3- إنشاء حزمة جديدة على Cloud Storage
في وحدة تحكُّم Google Cloud Platform، انقر على رمز القائمة في أعلى يمين الشاشة:
مرر لأسفل واختر Cloud Storage > المتصفِّح في القسم الفرعي مساحة التخزين:
من المفترض أن يظهر لك الآن متصفِّح Cloud Storage، وبافتراض أنّك تستخدم مشروعًا لا يحتوي حاليًا على أي حِزم Cloud Storage، ستظهر لك دعوة لإنشاء حزمة جديدة. اضغط على الزر إنشاء حزمة لإنشاء حزمة:
يُرجى إدخال اسم للحزمة. وفقًا لملاحظات مربّع الحوار، يجب أن تكون أسماء الحِزم فريدة في كل Cloud Storage. لذلك، إذا اخترت اسمًا واضحًا، مثل "test"، فربما تجد أن مستخدمًا آخر قد أنشأ مجموعة بيانات بهذا الاسم من قبل، وسيتلقى رسالة خطأ.
وهناك أيضًا بعض القواعد بشأن الأحرف المسموح بها في أسماء الحِزم. إذا بدأت اسم الحزمة وانتهائه بحرف أو رقم، وكنت تستخدم الشرطات في المنتصف فقط، لا بأس في ذلك. إذا حاولت استخدام رموز خاصة، أو حاولت بدء اسم الحزمة أو إنهائه بشيء آخر غير الحرف أو الرقم، فسيذكرك مربع الحوار بالقواعد.
أدخِل اسمًا فريدًا للحزمة واضغط على إنشاء. إذا اخترت منتجًا قيد الاستخدام، ستظهر لك رسالة الخطأ الواردة أعلاه. عند إنشاء حزمة بنجاح، سيتم نقلك إلى حزمتك الجديدة الفارغة في المتصفّح:
وبالطبع، سيكون اسم الحزمة الذي تراه مختلفًا، لأنه يجب أن يكون فريدًا عبر جميع المشروعات.
4. بدء Cloud Shell
تفعيل Cloud Shell
- من Cloud Console، انقر على تفعيل Cloud Shell .
إذا لم يسبق لك بدء تشغيل Cloud Shell، ستظهر لك شاشة وسيطة (الجزء السفلي غير المرئي من الصفحة) تصف ماهيتها. إذا كان الأمر كذلك، فانقر على متابعة (ولن تراه مرة أخرى مطلقًا). إليك ما تبدو عليه هذه الشاشة التي تُستخدم لمرة واحدة:
من المفترَض أن تستغرق عملية إدارة الحسابات والاتصال بخدمة Cloud Shell بضع دقائق فقط.
يتم تحميل هذه الآلة الافتراضية مزوّدة بكل أدوات التطوير التي ستحتاج إليها. وتوفّر هذه الشبكة دليلاً رئيسيًا دائمًا بسعة 5 غيغابايت ويتم تشغيله في Google Cloud، ما يحسّن بشكل كبير من أداء الشبكة والمصادقة. يمكنك تنفيذ معظم عملك، إن لم يكن كلّه، في هذا الدرس التطبيقي حول الترميز باستخدام متصفّح أو جهاز Chromebook.
بعد الربط بخدمة Cloud Shell، من المفترض أن ترى أنّه قد تمت مصادقتك وأنّ المشروع معيّن سبق أن تم ضبطه على رقم تعريف مشروعك.
- شغِّل الأمر التالي في Cloud Shell لتأكيد مصادقتك:
gcloud auth list
مخرجات الأمر
Credentialed Accounts ACTIVE ACCOUNT * <my_account>@<my_domain.com> To set the active account, run: $ gcloud config set account `ACCOUNT`
gcloud config list project
مخرجات الأمر
[core] project = <PROJECT_ID>
إذا لم يكن كذلك، يمكنك تعيينه من خلال هذا الأمر:
gcloud config set project <PROJECT_ID>
مخرجات الأمر
Updated property [core/project].
5- إنشاء مشروع Maven
بعد إطلاق Cloud Shell، لنبدأ بإنشاء مشروع Maven باستخدام حزمة تطوير البرامج (SDK) بلغة Java لخدمة Apache Beam.
Apache Beam هو نموذج برمجة مفتوح المصدر لمسارات البيانات. يمكنك تحديد المسارات باستخدام برنامج شعاع Apache، كما يمكنك اختيار برنامج تشغيل، مثل Dataflow لتنفيذ مسار العملية.
نفِّذ الأمر mvn archetype:generate
في واجهة الأوامر على النحو التالي:
mvn archetype:generate \
-DarchetypeGroupId=org.apache.beam \
-DarchetypeArtifactId=beam-sdks-java-maven-archetypes-examples \
-DarchetypeVersion=2.46.0 \
-DgroupId=org.example \
-DartifactId=first-dataflow \
-Dversion="0.1" \
-Dpackage=org.apache.beam.examples \
-DinteractiveMode=false
بعد تشغيل الأمر، من المفترض أن يظهر لك دليل جديد باسم first-dataflow
ضمن الدليل الحالي. يحتوي "first-dataflow
" على مشروع Maven يتضمّن حزمة تطوير البرامج (SDK) الخاصة بخدمة Cloud Dataflow للغة Java وأمثلة للمسارات.
6- تنفيذ مسار معالجة النصوص في Cloud Dataflow
لنبدأ بحفظ رقم تعريف مشروعنا وأسماء حِزم Cloud Storage كمتغيّرات للبيئة. يمكنك إجراء ذلك في Cloud Shell. تأكَّد من استبدال <your_project_id>
برقم تعريف مشروعك.
export PROJECT_ID=<your_project_id>
سنطبّق الآن الإجراء نفسه على حزمة Cloud Storage. ملاحظة: يجب استبدال السمة <your_bucket_name>
بالاسم الفريد الذي استخدمته لإنشاء حزمتك في خطوة سابقة.
export BUCKET_NAME=<your_bucket_name>
التغيير إلى الدليل first-dataflow/
.
cd first-dataflow
نحن بصدد تشغيل مسار يسمى WordCount، والذي يقرأ النص، ويرمز إلى سطور النص إلى كلمات فردية، ويحسب مرات تكرار كل كلمة من هذه الكلمات. سنقوم أولاً بتشغيل مسار التعلّم، وأثناء تنفيذ العملية، سنلقي نظرة على ما يحدث في كل خطوة.
ابدأ المسار من خلال تنفيذ الأمر mvn compile exec:java
في واجهة الأوامر أو في نافذة المحطة الطرفية. بالنسبة إلى الوسيطات --project, --stagingLocation,
و--output
، يشير الأمر أدناه إلى متغيّرات البيئة التي سبق لك إعدادها في هذه الخطوة.
mvn compile exec:java \
-Pdataflow-runner compile exec:java \
-Dexec.mainClass=org.apache.beam.examples.WordCount \
-Dexec.args="--project=${PROJECT_ID} \
--stagingLocation=gs://${BUCKET_NAME}/staging/ \
--output=gs://${BUCKET_NAME}/output \
--runner=DataflowRunner \
--region=us-central1 \
--gcpTempLocation=gs://${BUCKET_NAME}/temp"
أثناء تشغيل الوظيفة، دعنا نعثر على الوظيفة في قائمة الوظائف.
افتح واجهة مستخدم الويب في Cloud Dataflow في وحدة تحكُّم Google Cloud Platform. من المفترض أن تظهر لك مهمة عدد الكلمات بالحالة قيد التشغيل:
الآن، لنلقِ نظرة على معاملات المسار. ابدأ بالنقر على اسم وظيفتك:
عند اختيار وظيفة، يمكنك عرض الرسم البياني للتنفيذ. يمثل الرسم البياني لتنفيذ مسار التحويل كل تحويل في المسار كمربع يحتوي على اسم التحويل وبعض معلومات الحالة. يمكنك النقر على القيراط في أعلى الجانب الأيسر من كل خطوة للاطلاع على مزيد من التفاصيل:
دعونا نرى كيف يحول المسار البيانات في كل خطوة:
- القراءة: في هذه الخطوة، تتم قراءة المسار من مصدر إدخال. وفي هذه الحالة، تكون عبارة عن ملف نصي من Cloud Storage يتضمّن النص الكامل لمسرحية King Lear لشكسبير. يقرأ مسارنا الملف سطرًا تلو الآخر، ويُخرج كل
PCollection
سطر، حيث يكون كل سطر في الملف النصي عنصرًا في المجموعة. - CountWords: تشمل الخطوة
CountWords
جزأين. أولاً، يستخدم دالة "do" المتوازية (ParDo) المسماةExtractWords
لتحويل كل سطر إلى كلمات مميّزة. ناتج استخراج الكلمات هو مجموعة PCollection جديدة حيث يكون كل عنصر كلمة. تستخدِم الخطوة التالية،Count
، عملية تحويل توفِّرها حزمة تطوير البرامج (SDK) بلغة Java لعرض أزواج المفتاح/القيمة حيث يكون المفتاح كلمة فريدة والقيمة هي عدد مرّات حدوثها. في ما يلي طريقة تنفيذCountWords
، ويمكنك مراجعة ملف WordCount.java الكامل على GitHub:
/**
* A PTransform that converts a PCollection containing lines of text into a PCollection of
* formatted word counts.
*
* <p>Concept #3: This is a custom composite transform that bundles two transforms (ParDo and
* Count) as a reusable PTransform subclass. Using composite transforms allows for easy reuse,
* modular testing, and an improved monitoring experience.
*/
public static class CountWords
extends PTransform<PCollection<String>, PCollection<KV<String, Long>>> {
@Override
public PCollection<KV<String, Long>> expand(PCollection<String> lines) {
// Convert lines of text into individual words.
PCollection<String> words = lines.apply(ParDo.of(new ExtractWordsFn()));
// Count the number of times each word occurs.
PCollection<KV<String, Long>> wordCounts = words.apply(Count.perElement());
return wordCounts;
}
}
- MapElements: يؤدي هذا إلى استدعاء
FormatAsTextFn
، المنسوخة أدناه، والتي تعمل على تنسيق كل زوج قيمة ومفتاح في سلسلة قابلة للطباعة.
/** A SimpleFunction that converts a Word and Count into a printable string. */
public static class FormatAsTextFn extends SimpleFunction<KV<String, Long>, String> {
@Override
public String apply(KV<String, Long> input) {
return input.getKey() + ": " + input.getValue();
}
}
- WriteCounts: في هذه الخطوة، نكتب السلاسل القابلة للطباعة في عدة ملفات نصية مقسّمة.
سنلقي نظرة خلال بضع دقائق على المخرجات النهائية.
ألقِ نظرة الآن على صفحة معلومات عن الوظيفة على يسار الرسم البياني، والتي تتضمّن مَعلمات المسارات التي أدرجناها في الأمر mvn compile exec:java
.
يمكنك أيضًا رؤية العدّادات المخصّصة لمسار العملية، والتي تعرض في هذه الحالة عدد الأسطر الفارغة التي تمّت مواجهتها حتى الآن أثناء التنفيذ. يمكنك إضافة عدّادات جديدة إلى مسار العملية لتتبّع المقاييس الخاصة بالتطبيقات.
يمكنك النقر على رمز السجلات في أسفل وحدة التحكّم لعرض رسائل الخطأ المحدّدة.
تعرض اللوحة بشكل تلقائي رسائل سجلّ المهام التي تبلغ عن حالة المهمة ككل. يمكنك استخدام أداة اختيار "الحد الأدنى لدرجة الخطورة" لفلترة تقدم المهمة ورسائل الحالة.
يؤدي تحديد خطوة في المسار في الرسم البياني إلى تغيير طريقة العرض إلى السجلات التي تم إنشاؤها بواسطة الرمز البرمجي والرمز الذي تم إنشاؤه قيد التشغيل في خطوة المسار.
للرجوع إلى سجلات المهام، ألغ تحديد الخطوة بالنقر خارج الرسم البياني أو باستخدام الزر "إغلاق" في اللوحة الجانبية اليسرى.
يمكنك استخدام الزر سجلّات العمال في علامة التبويب "السجلات" للاطّلاع على سجلات العاملين الخاصة بمثيلات Compute Engine التي تشغّل مسارك. تتكون سجلات العامل من سطور سجل تم إنشاؤها بواسطة التعليمة البرمجية والتعليمات البرمجية التي تم إنشاؤها في Dataflow لتشغيلها.
إذا كنت تحاول تصحيح أخطاء عطل في مسار التعلّم، سيكون هناك في كثير من الأحيان تسجيل إضافي في سجلّات العامل يساعد في حل المشكلة. وتذكر أن هذه السجلات يتم تجميعها عبر كل العاملين، ويمكن تصفيتها والبحث فيها.
لا تعرض واجهة Dataflow Monitoring Interface سوى أحدث رسائل السجلّ. يمكنك عرض جميع السجلات بالنقر على رابط "مراقبة Google Cloud" على يسار جزء السجلات.
في ما يلي ملخص لأنواع السجلات المختلفة المتاحة للعرض من صفحة Monitoring←Logs:
- تحتوي سجلات job-message على رسائل على مستوى الوظيفة تنشئها المكونات المختلفة لتدفق البيانات. وتشمل الأمثلة ضبط القياس التلقائي، ووقت بدء تشغيل الموظفين أو إيقاف تشغيله، والتقدّم في خطوة المهمة، وأخطاء المهمة. إنّ الأخطاء على مستوى العامل التي تنشأ عن تعطّل رمز المستخدم والموجودة في سجلات العامل يتم أيضًا نشرها في سجلات رسالة الوظيفة.
- يعمل عاملو Dataflow على إنشاء سجلات worker. ينجز العمال معظم أعمالهم (على سبيل المثال، تطبيق ParDos على البيانات). تحتوي سجلات العامل على الرسائل التي تم تسجيلها من خلال الرمز الخاص بك وDataflow.
- تتوفّر سجلات worker-startup في معظم مهام Dataflow، ويمكنها تسجيل الرسائل المتعلّقة بعملية بدء التشغيل. تشمل عملية بدء التشغيل تنزيل حاويات المهمة من Cloud Storage، ثم بدء العاملين. إذا كانت هناك مشكلة في بدء تشغيل العاملين، تعد هذه السجلات مكانًا جيدًا للبحث.
- تتضمن السجلات Shuffler رسائل من العاملين الذين يدمجون نتائج عمليات المسارات المتوازية.
- تحتوي سجلات docker وkubelet على رسائل ذات صلة بهذه التكنولوجيات العامة، والتي يتم استخدامها في العاملين في Dataflow.
في الخطوة التالية، سنتحقّق من نجاح مهمتك.
7. التحقّق من نجاح مهمتك
افتح واجهة مستخدم الويب في Cloud Dataflow في وحدة تحكُّم Google Cloud Platform.
من المفترض أن تظهر لك مهمة عدد الكلمات بالحالة قيد التشغيل في البداية، ثم ناجح:
يستغرق تنفيذ المهمة من 3 إلى 4 دقائق تقريبًا.
هل تتذكر عندما قمت بتشغيل مسار التعلّم وحددت حزمة إخراج؟ لنلقِ نظرة على النتيجة (لأنّك لا تريد معرفة عدد مرات حدوث كل كلمة في King Lear؟). انتقِل مرة أخرى إلى متصفِّح Cloud Storage في وحدة تحكُّم Google Cloud Platform. من المفترَض أن تظهر في الحِزمة ملفات الإخراج والملفات المرحلية التي أنشأتها مهمتك:
8. إيقاف تشغيل الموارد
يمكنك إيقاف مواردك من وحدة تحكُّم Google Cloud Platform.
افتح متصفِّح Cloud Storage في "وحدة تحكُّم Google Cloud Platform".
ضَع علامة في مربّع الاختيار بجانب الحزمة التي أنشأتها وانقر على حذف لحذف الحزمة ومحتواها نهائيًا.
9. تهانينا!
لقد تعرفت على كيفية إنشاء مشروع Maven باستخدام حزمة تطوير البرامج (SDK) في Cloud Dataflow، وتشغيل نموذج مسار باستخدام وحدة تحكّم Google Cloud Platform، وحذف حزمة Cloud Storage المرتبطة ومحتواها.
مزيد من المعلومات
- مستندات Dataflow: https://cloud.google.com/dataflow/docs/
الترخيص
هذا العمل مرخّص بموجب ترخيص Creative Commons Attribution 3.0 العام وترخيص Apache 2.0.