Managed Service for Apache Spark

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.

a961b2e8895e88da.jpeg

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

9583c91204a09c12.jpeg

في هذه الصفحة:

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

سيؤدي ذلك إلى تشغيل مجموعة Managed Apache Spark.

3- تشغيل المجموعة وتسجيل الدخول إليها باستخدام بروتوكول SSH

بعد أن تتغيّر حالة المجموعة إلى قيد التشغيل، انقر على اسم المجموعة من وحدة تحكّم Managed Apache Spark.

7332f1c2cb25807d.jpeg

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

25be1578e00f669f.jpeg

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

2810ffd97f315bdb.jpeg

شغِّل أوامر hdfs للاطّلاع على بنية الدليل.

hadoop_commands_example

sudo hadoop fs -ls /
sudo hadoop version
sudo hadoop fs -mkdir /test51 
sudo hadoop fs -ls /

4- واجهات الويب وبوابات المكوّنات

من وحدة تحكّم مجموعة Managed Apache Spark، انقر على اسم مجموعتك، ثم انقر على علامة التبويب واجهات الويب.

6398f71d6293d6ff.jpeg

يعرض ذلك واجهات الويب المتاحة، بما في ذلك 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.

679fd2f76806f4e2.jpeg

بعد إنشاء حزمة 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. انقر على المهام في قائمة التنقّل اليمنى، ثم انقر على إرسال مهمة.

5767fc7c50b706d3.jpeg

أدخِلمعرف الوظيفة والمنطقة. اختَر مجموعتك وأدخِل موقع نص Spark البرمجي الذي نسخته في GCS. سيتم تشغيل هذه المهمة كمهمة مجمّعة في Spark على Managed Apache Spark.

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

a7ca90f5132faa31.jpeg

سينشئ نص Spark البرمجي Dataframe ويكتب في جدول Hive‏ test_table_1.

بعد تشغيل المهمة بنجاح، يمكنك الاطّلاع على عبارات الطباعة في وحدة التحكّم ضمن علامة التبويب المراقبة.

bdec2f3ae1055f9.jpeg

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

أنشئ مهمة أخرى بالسمات التالية:

c16f02d1b3afaa27.jpeg

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

أرسِل المهمة مع الاحتفاظ ببقية المَعلمات كإعدادات تلقائية.

e242e50bc2519bf4.jpeg

لاحظ كيف يختار 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). يمكنك تثبيت مكوّنات إضافية، تُعرف باسم المكوّنات الاختيارية ، على المجموعة عند إنشائها.

e39cc34245af3f01.jpeg

أثناء إنشاء مجموعة Managed Apache Spark من "وحدة التحكّم"، فعّلنا المكوّنات الاختيارية واختَرنا دفتر ملاحظات Jupyter كمكوّن اختياري.

8- تنظيف الموارد

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

بعد حذف مجموعة Managed Apache Spark، احذف حزم GCS التي تم نسخ الرمز إليها.

لتنظيف الموارد وإيقاف أي فوترة غير مرغوب فيها، يجب أولاً إيقاف مجموعة Managed Apache Spark ثم حذفها.

قبل إيقاف المجموعة وحذفها، تأكَّد من نسخ جميع البيانات المكتوبة في مساحة تخزين HDFS إلى GCS لتوفير مساحة تخزين دائمة.

لإيقاف المجموعة، انقر على إيقاف.

52065de928ab52e7.jpeg

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

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

52065de928ab52e7.jpeg