1- مقدّمة - Managed Service for Apache Spark
Managed Service for Apache Spark هي خدمة مُدارة بالكامل وقابلة للتوسّع بدرجة كبيرة لتشغيل Apache Spark وApache Flink وPresto والعديد من الأدوات والأُطر المفتوحة المصدر الأخرى. يمكنك استخدام Managed Service for Apache Spark لتحديث مستودع البيانات وعمليات ETL / ELT وعلوم البيانات الآمنة على نطاق عالمي. تتكامل Managed Service for Apache Spark أيضًا بشكل كامل مع العديد من خدمات Google Cloud، بما في ذلك BigQuery و Cloud Storage و Gemini Enterprise Agent Engine و Knowledge Catalog.
تتوفّر Managed Service for Apache Spark في وضعَي نشر:
- Managed Apache Spark بدون خادم: يتيح لك تشغيل مهام PySpark بدون الحاجة إلى ضبط البنية الأساسية والقياس التلقائي. تتوافق خدمة Managed Apache Spark مع أحمال عمل PySpark المجمّعة والجلسات / دفاتر الملاحظات.
- Managed Apache Spark clusters: تتيح لك إدارة مجموعة Hadoop YARN لأحمال عمل Spark المستندة إلى YARN بالإضافة إلى الأدوات المفتوحة المصدر، مثل Flink وPresto. يمكنك تخصيص مجموعاتك المستندة إلى السحابة الإلكترونية باستخدام أي قدر تريده من القياس العمودي أو الأفقي، بما في ذلك القياس التلقائي.
2- إنشاء مجموعة Managed Apache Spark على شبكة VPC في Google Cloud
في هذه الخطوة، ستنشئ مجموعة Managed Apache Spark على Google Cloud باستخدام "وحدة تحكّم Google Cloud".
كخطوة أولى، فعِّل واجهة برمجة التطبيقات Managed Apache Spark service API على "وحدة التحكّم". بعد تفعيلها، ابحث عن "Managed Apache Spark" في شريط البحث وانقر على إنشاء مجموعة.
اختَر مجموعة على Compute Engine لاستخدام الأجهزة الافتراضية في Google Compute Engine(GCE) كبنية أساسية لتشغيل مجموعات Managed Apache Spark.

لقد انتقلت الآن إلى صفحة "إنشاء مجموعة".

في هذه الصفحة:
- أدخِل اسمًا فريدًا للمجموعة.
- اختَر المنطقة المحدّدة . يمكنك أيضًا اختيار منطقة، ولكن تتيح لك خدمة Managed Apache Spark اختيار منطقة تلقائيًا. في هذا الدرس التطبيقي حول الترميز، اختَر "us-central1" و"us-central1-c".
- اختَر نوع المجموعة "عادية". يضمن ذلك وجود عقدة رئيسية واحدة.
- في علامة التبويب ضبط العُقد ، تأكَّد من أنّ عدد العُقد العاملة التي تم إنشاؤها سيكون اثنتين.
- في قسم تخصيص المجموعة ، ضَع علامة في المربّع بجانب تفعيل بوابة المكوّنات. يتيح ذلك الوصول إلى واجهات الويب على المجموعة، بما في ذلك واجهة مستخدم Spark وYarn Node Manager ودفاتر ملاحظات Jupyter.
- في المكوّنات الاختيارية، اختَر دفتر ملاحظات Jupyter. يضبط ذلك المجموعة باستخدام خادم دفتر ملاحظات Jupyter.
- اترك كل شيء آخر كما هو وانقر على إنشاء مجموعة.
سيؤدي ذلك إلى تشغيل مجموعة Managed Apache Spark.
3- تشغيل المجموعة وتسجيل الدخول إليها باستخدام بروتوكول SSH
بعد أن تتغيّر حالة المجموعة إلى قيد التشغيل، انقر على اسم المجموعة من وحدة تحكّم Managed Apache Spark.

انقر على علامة التبويب مثيل الجهاز الافتراضي لعرض العقدة الرئيسية وعقدتَي العُقد العاملة في المجموعة.

انقر على SSH بجانب العقدة الرئيسية لتسجيل الدخول إلى العقدة الرئيسية.

شغِّل أوامر hdfs للاطّلاع على بنية الدليل.
hadoop_commands_example
sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51
sudo hadoop fs -ls /
4- واجهات الويب وبوابات المكوّنات
من وحدة تحكّم مجموعة Managed Apache Spark، انقر على اسم مجموعتك، ثم انقر على علامة التبويب واجهات الويب.

يعرض ذلك واجهات الويب المتاحة، بما في ذلك Jupyter. انقر على Jupyter لفتح دفتر ملاحظات Jupyter. يمكنك استخدام ذلك لإنشاء دفاتر ملاحظات في PySpark مخزّنة على GCS. لتخزين دفتر ملاحظاتك على Google Cloud Storage وفتح دفتر ملاحظات PySpark لاستخدامه في هذا الدرس التطبيقي حول الترميز.
5- مراقبة مهام Spark وملاحظتها
بعد تشغيل مجموعة Managed Apache Spark، أنشئ مهمة مجمّعة في PySpark وأرسِلها إلى مجموعة Managed Apache Spark.
أنشئ حزمة في Google Cloud Storage (GCS) لتخزين نص PySpark البرمجي. احرص على إنشاء الحزمة في المنطقة نفسها التي تتوفّر فيها مجموعة Managed Apache Spark.

بعد إنشاء حزمة GCS، انسخ الملف التالي إلى هذه الحزمة.
https://raw.githubusercontent.com/diptimanr/spark-on-gce/main/test-spark-1.py
ينشئ هذا النص البرمجي نموذجًا لـ Spark DataFrame ويكتبه كجدول Hive.
hive_job.py
from pyspark.sql import SparkSession
from datetime import datetime, date
from pyspark.sql import Row
spark = SparkSession.builder.master("local").enableHiveSupport().getOrCreate()
df = spark.createDataFrame([ (1, 2., 'string1', date(2000, 1, 1), datetime(2000, 1, 1, 12, 0)),
(2, 3., 'string2', date(2000, 2, 1), datetime(2000, 1, 2, 12, 0)), (3, 4., 'string3', date(2000, 3, 1), datetime(2000, 1, 3, 12, 0))
], schema='a long, b double, c string, d date, e timestamp')
print("..... Writing data .....")
df.write.mode("overwrite").saveAsTable("test_table_1")
print("..... Complete .....")
أرسِل هذا النص البرمجي كمهمة مجمّعة في Spark في Managed Apache Spark. انقر على المهام في قائمة التنقّل اليمنى، ثم انقر على إرسال مهمة.

أدخِلمعرف الوظيفة والمنطقة. اختَر مجموعتك وأدخِل موقع نص Spark البرمجي الذي نسخته في GCS. سيتم تشغيل هذه المهمة كمهمة مجمّعة في Spark على Managed Apache Spark.
ضمن السمات ، أضِف المفتاح spark.submit.deployMode والقيمة client للتأكّد من أنّ برنامج التشغيل يتم تشغيله في العقدة الرئيسية لـ Managed Apache Spark وليس في العُقد العاملة. انقر على إرسال لإرسال المهمة المجمّعة إلى Managed Apache Spark.

سينشئ نص Spark البرمجي Dataframe ويكتب في جدول Hive test_table_1.
بعد تشغيل المهمة بنجاح، يمكنك الاطّلاع على عبارات الطباعة في وحدة التحكّم ضمن علامة التبويب المراقبة.

بعد إنشاء جدول Hive، أرسِل مهمة طلب بحث أخرى في Hive لاختيار محتوى الجدول وعرضه على وحدة التحكّم.
أنشئ مهمة أخرى بالسمات التالية:

لاحظ أنّ نوع المهمة مضبوط على Hive وأنّ نوع مصدر طلب البحث هو نص طلب البحث، ما يعني أنّنا سنكتب عبارة HiveQL بالكامل ضمن مربّع النص نص طلب البحث.
أرسِل المهمة مع الاحتفاظ ببقية المَعلمات كإعدادات تلقائية.

لاحظ كيف يختار HiveQL جميع السجلات ويعرضها على وحدة التحكّم.
6- القياس التلقائي
القياس التلقائي هو مهمة تقدير العدد "الصحيح" من العُقد العاملة في المجموعة لحمل عمل معيّن.
توفّر واجهة برمجة التطبيقات Managed Apache Spark AutoscalingPolicies آلية لأتمتة إدارة موارد المجموعة وتفعيل القياس التلقائي للأجهزة الافتراضية للعُقد العاملة في المجموعة. سياسة القياس التلقائي هي إعداد قابل لإعادة الاستخدام يوضّح كيفية توسيع نطاق العُقد العاملة في المجموعة التي تستخدم سياسة القياس التلقائي. تحدّد السياسة حدود القياس والتكرار والمدى لتوفير تحكّم دقيق في موارد المجموعة طوال فترة بقائها.
تُكتب سياسات القياس التلقائي في Managed Apache Spark باستخدام ملفات YAML، ويتم تمرير ملفات YAML هذه في أمر سطر الأوامر لإنشاء المجموعة أو اختيارها من حزمة GCS عند إنشاء مجموعة من Cloud Console.
في ما يلي مثال على سياسة قياس تلقائي في Managed Apache Spark :
policy.yaml
workerConfig:
minInstances: 10
maxInstances: 10
secondaryWorkerConfig:
maxInstances: 50
basicAlgorithm:
cooldownPeriod: 4m
yarnConfig:
scaleUpFactor: 0.05
scaleDownFactor: 1.0
gracefulDecommissionTimeout: 1h
7- ضبط المكوّنات الاختيارية في Managed Apache Spark
سيؤدي ذلك إلى تشغيل مجموعة Managed Apache Spark.
عند إنشاء مجموعة Managed Apache Spark، يتم تلقائيًا تثبيت مكوّنات نظام Apache Hadoop الأساسي على المجموعة (راجِع قائمة إصدارات Managed Apache Spark). يمكنك تثبيت مكوّنات إضافية، تُعرف باسم المكوّنات الاختيارية ، على المجموعة عند إنشائها.

أثناء إنشاء مجموعة Managed Apache Spark من "وحدة التحكّم"، فعّلنا المكوّنات الاختيارية واختَرنا دفتر ملاحظات Jupyter كمكوّن اختياري.
8- تنظيف الموارد
لتنظيف المجموعة، انقر على إيقاف بعد اختيار المجموعة من وحدة تحكّم Managed Apache Spark. بعد إيقاف المجموعة، انقر على حذف لحذفها.
بعد حذف مجموعة Managed Apache Spark، احذف حزم GCS التي تم نسخ الرمز إليها.
لتنظيف الموارد وإيقاف أي فوترة غير مرغوب فيها، يجب أولاً إيقاف مجموعة Managed Apache Spark ثم حذفها.
قبل إيقاف المجموعة وحذفها، تأكَّد من نسخ جميع البيانات المكتوبة في مساحة تخزين HDFS إلى GCS لتوفير مساحة تخزين دائمة.
لإيقاف المجموعة، انقر على إيقاف.

بعد إيقاف المجموعة، انقر على حذف لحذفها.
في مربّع حوار التأكيد، انقر على حذف لحذف المجموعة.
