توفير مجموعة أدوات Hadoop/Spark المُدارة واستخدامها من خلال Cloud Dataproc (سطر الأوامر)

1. نظرة عامة

‫Cloud Dataproc هي خدمة مُدارة من Spark وHadoop تتيح لك الاستفادة من أدوات البيانات المفتوحة المصدر للمعالجة على دفعات والاستعلام والبث وتعلُّم الآلة. تساعدك ميزة التشغيل الآلي في Cloud Dataproc على إنشاء المجموعات بسرعة وإدارتها بسهولة وتوفير المال من خلال إيقاف تشغيل المجموعات عندما لا تحتاج إليها. وبفضل تقليل الوقت والمال المستغرقَين في الإدارة، يمكنك التركيز على وظائفك وبياناتك.

هذا الدليل التعليمي مقتبس من https://cloud.google.com/dataproc/overview

أهداف الدورة التعليمية

  • كيفية إنشاء مجموعة Cloud Dataproc مُدارة (مع تثبيت Apache Spark مسبقًا)
  • كيفية إرسال مهمة Spark
  • كيفية تغيير حجم مجموعة
  • كيفية تسجيل الدخول إلى العقدة الرئيسية لمجموعة Dataproc باستخدام SSH
  • كيفية استخدام gcloud لفحص المجموعات والمهام وقواعد جدار الحماية
  • كيفية إيقاف مجموعتك نهائيًا

المتطلبات

كيف ستستخدم هذا البرنامج التعليمي؟

قراءة النص فقط قراءة النص وإكمال التمارين

ما هو تقييمك لتجربة استخدام خدمات Google Cloud Platform؟

مبتدئ متوسط متقدّم

2. الإعداد والمتطلبات

إعداد البيئة بالسرعة التي تناسبك

  1. سجِّل الدخول إلى Cloud Console وأنشِئ مشروعًا جديدًا أو أعِد استخدام مشروع حالي. (إذا لم يكن لديك حساب على Gmail أو G Suite، عليك إنشاء حساب).

dMbN6g9RawQj_VXCSYpdYncY-DbaRzr2GbnwoV7jFf1u3avxJtmGPmKpMYgiaMH-qu80a_NJ9p2IIXFppYk8x3wyymZXavjglNLJJhuXieCem56H30hwXtd8PvXGpXJO9gEUDu3cZwci9Oe6PgnbNuSYlMyvbXF1JdQyiHoEgnhl4PlV_MFagm2ppzhueRkqX4eLjJllZco_2zCp0V0bpTupUSKji9KkQyWqj11pqit1K1faS1V6aFxLGQdkuzGp4rsQTan7F01iePL5DtqQ8-tA_Lheyo8SscAVKrGii2coplQp2_D1Iosb2ViABY0UUO1A8cimXUu6Wf1R9zJIRExL5OB2j946aIiFtyKTzxDcNnuznmR45vZ2HMoK3o67jxuoUJCAnqvEX6NgPGFjCVNgASc-lg

تذكَّر رقم تعريف المشروع، وهو اسم فريد في جميع مشاريع Google Cloud (الاسم أعلاه مستخدَم حاليًا ولن يكون متاحًا لك، نأسف لذلك). سيتم الإشارة إليه لاحقًا في هذا الدرس التطبيقي حول الترميز باسم PROJECT_ID.

  1. بعد ذلك، عليك تفعيل الفوترة في Cloud Console من أجل استخدام موارد Google Cloud.

لن تكلفك تجربة هذا الدرس البرمجي الكثير من المال، إن وُجدت تكلفة على الإطلاق. احرص على اتّباع أي تعليمات في قسم "التنظيف" الذي ينصحك بكيفية إيقاف الموارد حتى لا يتم تحصيل رسوم منك بعد هذا البرنامج التعليمي. يمكن لمستخدمي Google Cloud الجدد الاستفادة من برنامج الفترة التجريبية المجانية بقيمة 300 دولار أمريكي.

3- تفعيل واجهات برمجة التطبيقات Cloud Dataproc وGoogle Compute Engine

انقر على رمز القائمة في أعلى يمين الشاشة.

2bfc27ef9ba2ec7d.png

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

408af5f32c4b7c25.png

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

a9c0e84296a7ba5b.png

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

b6adf859758d76b3.png

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

da5584a1cbc77104.png

بعد تفعيلها، انقر على السهم المتّجه لليسار للرجوع.

ابحث الآن عن "Google Cloud Dataproc API" وفعِّله أيضًا.

f782195d8e3d732a.png

4. بدء Cloud Shell

يتم تحميل هذا الجهاز الظاهري المستند إلى Debian بجميع أدوات التطوير التي تحتاج إليها. توفّر هذه الخدمة دليلًا منزليًا دائمًا بسعة 5 غيغابايت وتعمل في Google Cloud، ما يؤدي إلى تحسين أداء الشبكة والمصادقة بشكل كبير. يعني ذلك أنّ كل ما تحتاج إليه لهذا الدرس التطبيقي حول الترميز هو متصفّح (نعم، يمكن استخدامه على جهاز Chromebook).

  1. لتفعيل Cloud Shell من Cloud Console، ما عليك سوى النقر على تفعيل Cloud Shell fEbHefbRynwXpq1vj2wJw6Dr17O0np8l-WOekxAZYlZQIORsWQE_xJl-cNhogjATLn-YxLVz8CgLvIW1Ncc0yXKJsfzJGMYgUeLsVB7zSwz7p6ItNgx4tXqQjag7BfWPcZN5kP-X3Q (يستغرق توفير البيئة والاتصال بها بضع لحظات فقط).

I5aEsuNurCxHoDFjZRZrKBdarPPKPoKuExYpdagmdaOLKe7eig3DAKJitIKyuOpuwmrMAyZhp5AXpmD_k66cBuc1aUnWlJeSfo_aTKPY9aNMurhfegg1CYaE11jdpSTYNNIYARe01AScreen Shot 2017-06-14 at 10.13.43 PM.png

بعد الاتصال بـ 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:

R7chO4PKQfLC3bvFBNZJALLTUiCgyLEq_67ECX7ohs_0ZnSjC7GxDNxWrJJUaoM53LnqABYamrBJhCuXF-J9XBzuUgaz7VvaxNrkP2TAn93Drxccyj2-5zz4AxL-G3hzxZ4PsM5HHQ

يضبط Cloud Shell أيضًا بعض متغيرات البيئة تلقائيًا، ما قد يكون مفيدًا عند تنفيذ الأوامر المستقبلية.

echo $GOOGLE_CLOUD_PROJECT

ناتج الأمر

<PROJECT_ID>
  1. أخيرًا، اضبط المنطقة التلقائية وإعدادات المشروع.
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.

493928df54f61386.png

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.

مزيد من المعلومات

الترخيص

يخضع هذا العمل لترخيص Creative Commons Attribution 3.0 Generic License وترخيص Apache 2.0.