Dataproc على Google Compute Engine

1. مقدمة - Google Dataproc

Dataproc هي خدمة مُدارة بالكامل وقابلة للتطوير بشكل كبير لتشغيل Apache Spark وApache Flink وPresto والعديد من الأدوات وأُطر العمل الأخرى المفتوحة المصدر. يمكنك استخدام Dataproc لتحديث بحيرات البيانات وتقنية ETL / ELT وعلوم البيانات الآمنة على مستوى كوكب الأرض. تم دمج Dataproc بالكامل أيضًا مع العديد من خدمات Google Cloud، بما في ذلك BigQuery وCloud Storage وVertex AI وDataplex.

تتوفّر أداة Dataproc بثلاث نكهات:

  • تسمح لك خدمة Dataproc Serverless بتنفيذ مهام PySpark بدون الحاجة إلى إعداد البنية الأساسية والقياس التلقائي. تتوافق Dataproc Serverless مع أعباء العمل المجمّعة والجلسات أو أوراق الملاحظات في PySpark.
  • تتيح لك خدمة Dataproc على Google Compute Engine إدارة مجموعة Hadoop YARN لأعباء العمل في Spark المستندة إلى YARN، بالإضافة إلى الأدوات المفتوحة المصدر مثل Flink وPresto. ويمكنك تخصيص المجموعات المستندة إلى السحابة الإلكترونية مع التحجيم العمودي أو الأفقي بقدر ما تريد، بما في ذلك القياس التلقائي.
  • تتيح لك Dataproc على Google Kubernetes Engine ضبط مجموعات Dataproc الافتراضية في بنية GKE الأساسية لإرسال مهام Spark أو PySpark أو SparkR أو Spark SQL.

2. إنشاء مجموعة Dataproc على شبكة VPC في Google Cloud

في هذه الخطوة، عليك إنشاء مجموعة Dataproc على Google Cloud باستخدام وحدة تحكُّم Google Cloud.

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

اختَر المجموعة على Compute Engine لاستخدام الأجهزة الافتراضية في Google Compute Engine(GCE) كبنية أساسية أساسية لتشغيل مجموعات Dataproc.

a961b2e8895e88da.jpeg

أنت الآن في صفحة "إنشاء المجموعة".

9583c91204a09c12.jpeg

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

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

سيؤدي ذلك إلى تدوير مجموعة Dataproc.

3- أطلِق المجموعة العنقودية وبروتوكول النقل الآمن (SSH) فيها.

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

7332f1c2cb25807d.jpeg

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

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. واجهات الويب وبوابات المكونات

من وحدة تحكم مجموعة البيانات في Dataproc، انقر على اسم مجموعتك، ثم انقر على علامة التبويب واجهات الويب.

6398f71d6293d6ff.jpeg

يعرِض هذا العمود واجهات الويب المتاحة، بما في ذلك Jupyter. انقر على Jupyter لفتح دفتر ملاحظات Jupyter. يمكنك استخدامها لإنشاء أوراق ملاحظات في PySpark مخزَّنة على GCS. لتخزين دفتر ملاحظاتك على Google Cloud Storage وافتح دفتر ملاحظات PySpark لاستخدامه في هذا الدرس التطبيقي حول الترميز.

5- مراقبة ومراقبة الوظائف التي تثير

أثناء إعداد مجموعة Dataproc وتشغيلها، يمكنك إنشاء مهمة مجمَّعة في PySpark وإرسال المهمة إلى مجموعة Dataproc.

إنشاء حزمة Google Cloud Storage (GCS) لتخزين نص PySpark النصي. تأكَّد من إنشاء الحزمة في المنطقة نفسها التي تتوفّر فيها مجموعة Dataproc.

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 المجمَّعة في Dataproc. انقر على الوظائف في قائمة التنقّل اليمنى، ثم انقر على إرسال وظيفة.

5767fc7c50b706d3.jpeg

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

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

a7ca90f5132faa31.jpeg

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

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

bdec2f3ae1055f9.jpeg

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

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

c16f02d1b3afaa27.jpeg

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

أرسِل المهمة، مع إبقاء باقي المعلمات كإعداد تلقائي.

e242e50bc2519bf4.jpeg

لاحظ كيف تحدد HiveQL جميع السجلات وتعرضها على وحدة التحكم.

6- تغيير الحجم التلقائي

القياس التلقائي هي مهمة تقدير قيمة "اليمين" عدد عُقد عامل المجموعة لحمل العمل.

إنّ واجهة برمجة التطبيقات Dataproc AutoscalingPolicies API توفّر آلية لإدارة موارد المجموعات تلقائيًا وتتيح القياس التلقائي للأجهزة الافتراضية لعامل المجموعة. سياسة القياس التلقائي هي إعدادات قابلة لإعادة الاستخدام تصف كيفية توسيع نطاق العاملين في المجموعات الذين يستخدمون سياسة القياس التلقائي. وتحدّد هذه السياسة حدود التوسع والتكرار ومستوى القوة من أجل التحكّم بدقة في موارد المجموعة على مدار عمر المجموعة.

تتم كتابة سياسات القياس التلقائي لخدمة Dataproc باستخدام ملفات YAML ويتم تمرير ملفات YAML هذه في أمر CLI لإنشاء المجموعة، أو يتم اختيارها من حزمة GCS عند إنشاء مجموعة من Cloud Console.

في ما يلي مثال على سياسة القياس التلقائي للبيانات في Dataproc :

policy.yaml

workerConfig:
  minInstances: 10
  maxInstances: 10
secondaryWorkerConfig:
  maxInstances: 50
basicAlgorithm:
  cooldownPeriod: 4m
  yarnConfig:
    scaleUpFactor: 0.05
    scaleDownFactor: 1.0
    gracefulDecommissionTimeout: 1h

7. ضبط مكونات Dataproc الاختيارية

سيؤدي ذلك إلى تدوير مجموعة Dataproc.

عند إنشاء مجموعة Dataproc، يتم تثبيت مكوّنات المنظومة المتكاملة العادية من Apache Hadoop تلقائيًا على المجموعة (يمكنك الاطّلاع على قائمة إصدارات Dataproc). عند إنشاء المجموعة، يمكنك تثبيت مكوّنات إضافية تُسمى المكوّنات الاختيارية في المجموعة.

e39cc34245af3f01.jpeg

أثناء إنشاء مجموعة Dataproc من وحدة التحكّم، فعَّلنا مكونات اختيارية واخترنا Jupyter Notebook كمكون اختياري.

8. إخلاء الموارد

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

بعد حذف مجموعة Dataproc، احذف حِزم GCS التي تم نسخ الرمز فيها.

لإزالة المحتوى غير المرغوب فيه وإيقاف أي فوترة غير مرغوب فيها، يجب إيقاف مجموعة Dataproc أولاً، ثم حذفها.

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

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

52065de928ab52e7.jpeg

عند توقف المجموعة، انقر على حذف لحذف المجموعة.

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

52065de928ab52e7.jpeg