1. نظرة عامة
Cloud Dataproc هي خدمة مُدارة من Spark وHadoop تتيح لك الاستفادة من أدوات البيانات مفتوحة المصدر للمعالجة على دفعات والاستعلام والبث وتعلُّم الآلة. تساعدك أتمتة Cloud Dataproc في إنشاء المجموعات بسرعة وإدارتها بسهولة وتوفير المال من خلال إيقاف تشغيل المجموعات عندما لا تحتاج إليها. وبفضل تقليل الوقت والمال المستغرقَين في الإدارة، يمكنك التركيز على وظائفك وبياناتك.
تم اقتباس هذا الدرس التعليمي من https://cloud.google.com/dataproc/overview
أهداف الدورة التعليمية
- كيفية إنشاء مجموعة Cloud Dataproc مُدارة (مع تثبيت Apache Spark مسبقًا)
- كيفية إرسال مهمة Spark
- كيفية تغيير حجم مجموعة
- كيفية استخدام SSH للوصول إلى العُقدة الرئيسية في مجموعة Dataproc
- كيفية استخدام gcloud لفحص المجموعات والمهام وقواعد جدار الحماية
- كيفية إيقاف مجموعتك نهائيًا
المتطلبات
كيف ستستخدم هذا البرنامج التعليمي؟
ما هو تقييمك لتجربة استخدام خدمات Google Cloud Platform؟
2. الإعداد والمتطلبات
إعداد البيئة بالسرعة التي تناسبك
- سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو G Suite، عليك إنشاء حساب).
تذكَّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (الاسم أعلاه مستخدَم حاليًا ولن يكون متاحًا لك، نأسف لذلك). سيتم الإشارة إليه لاحقًا في هذا الدرس العملي باسم PROJECT_ID.
- بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.
لن تكلفك تجربة هذا الدرس التطبيقي حول الترميز الكثير من المال، إن لم تكلفك شيئًا على الإطلاق. احرص على اتّباع أي تعليمات في قسم "التنظيف" الذي ينصحك بكيفية إيقاف الموارد حتى لا تتحمّل رسومًا تتجاوز هذا البرنامج التعليمي. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.
3- تفعيل واجهات برمجة التطبيقات Cloud Dataproc وGoogle Compute Engine
انقر على رمز القائمة في أعلى يمين الشاشة.

اختَر "إدارة واجهة برمجة التطبيقات" من القائمة المنسدلة.

انقر على تفعيل واجهات برمجة التطبيقات والخدمات.

ابحث عن "Compute Engine" في مربّع البحث. انقر على "Google Compute Engine API" في قائمة النتائج التي تظهر.

في صفحة Google Compute Engine، انقر على تفعيل.

بعد تفعيلها، انقر على السهم المتّجه لليسار للرجوع.
ابحث الآن عن "Google Cloud Dataproc API" وفعِّلها أيضًا.

4. بدء Cloud Shell
يتم تحميل هذا الجهاز الافتراضي المستند إلى Debian بجميع أدوات التطوير التي تحتاج إليها. توفّر هذه الخدمة دليلًا رئيسيًا دائمًا بسعة 5 غيغابايت وتعمل في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. وهذا يعني أنّ كل ما تحتاجه لهذا الدرس التطبيقي حول الترميز هو متصفّح (نعم، يمكن استخدامه على جهاز Chromebook).
- لتفعيل Cloud Shell من Cloud Console، ما عليك سوى النقر على تفعيل Cloud Shell
(يستغرق توفير البيئة والاتصال بها بضع لحظات فقط).
بعد الاتصال بـ Cloud Shell، من المفترض أن يظهر لك أنّه تمّت المصادقة عليك وأنّ المشروع تمّ ضبطه مسبقًا على PROJECT_ID.
gcloud auth list
ناتج الأمر
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
ناتج الأمر
[core] project = <PROJECT_ID>
إذا لم يتم ضبط المشروع لسبب ما، ما عليك سوى تنفيذ الأمر التالي:
gcloud config set project <PROJECT_ID>
هل تبحث عن PROJECT_ID؟ يمكنك الاطّلاع على المعرّف الذي استخدمته في خطوات الإعداد أو البحث عنه في لوحة بيانات Cloud Console:
يضبط Cloud Shell أيضًا بعض متغيرات البيئة تلقائيًا، ما قد يكون مفيدًا عند تنفيذ الأوامر المستقبلية.
echo $GOOGLE_CLOUD_PROJECT
ناتج الأمر
<PROJECT_ID>
- أخيرًا، اضبط المنطقة التلقائية وإعدادات المشروع.
gcloud config set compute/zone us-central1-f
يمكنك اختيار مجموعة متنوعة من المناطق المختلفة. لمزيد من المعلومات، يُرجى الاطّلاع على الأقاليم والمناطق.
5- إنشاء مجموعة Cloud Dataproc
بعد تشغيل Cloud Shell، يمكنك استخدام سطر الأوامر لاستدعاء أمر gcloud في Cloud SDK أو أدوات أخرى متاحة على مثيل الجهاز الافتراضي.
اختَر اسم مجموعة لاستخدامه في هذا الدرس التطبيقي:
$ CLUSTERNAME=${USER}-dplab
لنبدأ بإنشاء مجموعة جديدة:
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
يجب أن تكون إعدادات المجموعة التلقائية، التي تتضمّن عقدتَي عاملتَين، كافية لهذا البرنامج التعليمي. يتضمّن الأمر أعلاه الخيار --zone لتحديد المنطقة الجغرافية التي سيتم إنشاء المجموعة فيها، وخيارَين متقدّمين، --scopes و--tags، يتم توضيحها أدناه عند استخدام الميزات التي تتيحها. راجِع الأمر gcloud dataproc clusters create في Cloud SDK للحصول على معلومات حول استخدام علامات سطر الأوامر لتخصيص إعدادات المجموعة.
6. إرسال مهمة Spark إلى مجموعتك
يمكنك إرسال مهمة من خلال طلب jobs.submit لواجهة برمجة تطبيقات Cloud Dataproc، باستخدام أداة سطر الأوامر gcloud، أو من وحدة تحكّم Google Cloud Platform. يمكنك أيضًا الاتصال بجهاز افتراضي في مجموعتك باستخدام بروتوكول النقل الآمن (SSH)، ثم تنفيذ مهمة من الجهاز الافتراضي.
لنرسل مهمة باستخدام أداة gcloud من سطر أوامر Cloud Shell:
$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
--class org.apache.spark.examples.SparkPi \
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
أثناء تنفيذ المهمة، ستظهر النتائج في نافذة Cloud Shell.
يمكنك مقاطعة الإخراج عن طريق الضغط على Control-C. سيؤدي ذلك إلى إيقاف الأمر gcloud، ولكن ستظل المهمة قيد التنفيذ على مجموعة Dataproc.
7. عرض قائمة بالمهام وإعادة الربط
طباعة قائمة بالوظائف:
$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}
تظهر المهمة التي تم إرسالها مؤخرًا في أعلى القائمة. انسخ معرّف المهمة والصِقه بدلاً من "jobId" في الأمر أدناه. سيعيد الأمر الاتصال بالمهمة المحدّدة ويعرض نتيجتها:
$ gcloud dataproc jobs wait jobId
عند انتهاء المهمة، سيتضمّن الناتج قيمة تقريبية لـ Pi.

8. تغيير حجم المجموعة
لتنفيذ عمليات حسابية أكبر، قد تحتاج إلى إضافة المزيد من العُقد إلى مجموعتك لتسريعها. تتيح لك خدمة Dataproc إضافة عُقد إلى مجموعتك وإزالتها منها في أي وقت.
افحص إعدادات المجموعة:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
اجعل المجموعة أكبر من خلال إضافة بعض العُقد القابلة للإيقاف:
$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2
افحص المجموعة مرة أخرى:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
يُرجى العِلم أنّه بالإضافة إلى workerConfig من وصف المجموعة الأصلي، هناك الآن أيضًا secondaryWorkerConfig يتضمّن instanceNames للعاملين القابلين للإيقاف مؤقتًا. تعرض خدمة Dataproc حالة المجموعة على أنّها جاهزة أثناء بدء تشغيل العُقد الجديدة.
بما أنّك بدأت بعقدتَين وأصبح لديك الآن أربع عقد، من المفترض أن يتم تشغيل مهام Spark أسرع بمرتين تقريبًا.
9- الوصول إلى المجموعة باستخدام بروتوكول SSH
اتّصِل عبر ssh بالعقدة الرئيسية التي يكون اسم مثيلها دائمًا هو اسم المجموعة مع إضافة -m:
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
في المرة الأولى التي تنفّذ فيها أمر ssh على Cloud Shell، سيتم إنشاء مفاتيح ssh لحسابك هناك. يمكنك اختيار عبارة مرور أو استخدام عبارة مرور فارغة في الوقت الحالي وتغييرها لاحقًا باستخدام ssh-keygen إذا أردت ذلك.
على الجهاز الظاهري، تحقَّق من اسم المضيف:
$ hostname
بما أنّك حدّدت --scopes=cloud-platform عند إنشاء المجموعة، يمكنك تنفيذ أوامر gcloud على مجموعتك. أدرِج المجموعات في مشروعك:
$ gcloud dataproc clusters list
سجِّل الخروج من اتصال ssh عند الانتهاء:
$ logout
10. فحص العلامات
عند إنشاء مجموعتك، أدرجت الخيار --tags لإضافة علامة إلى كل عُقدة في المجموعة. تُستخدَم العلامات لربط قواعد جدار الحماية بكل عقدة. لم تنشئ أي قواعد جدار حماية مطابقة في هذا الدرس العملي، ولكن سيظل بإمكانك فحص العلامات على عقدة وقواعد جدار الحماية على الشبكة.
اطبع وصف العقدة الرئيسية:
$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c
ابحث عن tags: بالقرب من نهاية الناتج وتأكَّد من أنّه يتضمّن codelab.
اطبع قواعد جدار الحماية:
$ gcloud compute firewall-rules list
لاحظ العمودَين SRC_TAGS وTARGET_TAGS. من خلال إرفاق علامة بقاعدة جدار الحماية، يمكنك تحديد أنّه يجب استخدامها على جميع العُقد التي تحتوي على هذه العلامة.
11. إيقاف تشغيل مجموعتك
يمكنك إيقاف مجموعة من خلال طلب clusters.delete من Cloud Dataproc API، أو من سطر الأوامر باستخدام الملف التنفيذي gcloud dataproc clusters delete، أو من وحدة تحكّم Google Cloud Platform.
لنوقف المجموعة باستخدام سطر الأوامر في Cloud Shell:
$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1
12. تهانينا!
لقد تعلّمت كيفية إنشاء مجموعة Dataproc، وإرسال مهمة Spark، وتغيير حجم مجموعة، واستخدام ssh لتسجيل الدخول إلى العقدة الرئيسية، واستخدام gcloud لفحص المجموعات والمهام وقواعد جدار الحماية، وإيقاف مجموعتك باستخدام gcloud.
مزيد من المعلومات
- مستندات Dataproc: https://cloud.google.com/dataproc/overview
- Getting Started with Dataproc using the Console codelab
الترخيص
يخضع هذا العمل لترخيص المشاع الإبداعي مع نسب العمل إلى مؤلفه 3.0 Generic وترخيص Apache 2.0.