استخدم الميزات الموسعة لخادم Apache Spark History لتصحيح أخطاء تطبيقات Spark وتشخيصها

توضح لك هذه المقالة كيفية استخدام الميزات الموسعة لخادم محفوظات Apache Spark لتصحيح أخطاء تطبيقات Spark المكتملة أو تشغيلها وتشخيصها. يتضمن الامتداد علامة التبويب Data وعلامة التبويب Graph وعلامة التبويب Diagnosis . في علامة التبويب Data، يمكنك التحقق من بيانات الإدخال والإخراج لوظيفة Spark. في علامة التبويب Graph، يمكنك التحقق من تدفق البيانات وإعادة تشغيل الرسم البياني للوظيفة. في علامة التبويب Diagnosis، يمكنك الرجوع إلى ميزات Data Skew وTime Skew وExecutor Usage Analysis.

احصل على وصول إلى خادم Spark History

خادم Spark History هو واجهة مستخدم الويب لتطبيقات Spark المكتملة والتشغيلية. يمكنك فتحه إما من مدخل Azure أو من عنوان URL.

افتح واجهة مستخدم الويب لخادم Spark History من بوابة Microsoft Azure

  1. من مدخل Microsoft Azure، افتح مجموعة Spark. لمزيد من المعلومات، راجع قائمة وعرض المجموعات.

  2. من لوحات معلومات نظام المجموعة، حدد خادم تاريخ Spark. عند المطالبة، أدخل بيانات اعتماد المسؤول لمجموعة Spark.

    Launch the Spark History Server from the Azure portal. مدخل Microsoft Azure." border="true":::

افتح واجهة مستخدم الويب لخادم Spark History من خلال عنوان URL

افتح خادم Spark History من خلال التصفح إلى https://CLUSTERNAME.azurehdinsight.net/sparkhistory، حيث يكون CLUSTERNAME هو اسم مجموعة Spark الخاصة بك.

قد تبدو واجهة مستخدم الويب لـ Spark History Server مشابهة لهذه الصورة:

The Spark History Server page.

استخدم علامة التبويب البيانات في Spark History Server

حدد معرّف الوظيفة، ثم حدد البيانات في قائمة الأداة لمشاهدة عرض البيانات.

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

    Data tabs on the Data for Spark Application page.

  • انسخ جميع الصفوف عن طريق تحديد الزر نسخ .

    Copy data on the Spark application page.

  • احفظ جميع البيانات كملف CSV. عن طريق تحديد الزر csv .

    Save data as a .CSV file from the Data for Spark Application page.

  • ابحث في البيانات بإدخال كلمات رئيسية في حقل بحث . سيتم عرض نتائج البحث على الفور.

    Search data on the Data for Spark Application page.

  • حدد رأس العمود لفرز الجدول. حدد علامة الجمع لتوسيع صف لإظهار المزيد من التفاصيل. حدد علامة الطرح لطي الصف.

    The data table on the Data for Spark Application page.

  • قم بتنزيل ملف واحد عن طريق تحديد الزر تنزيل جزئي على اليسار. سيتم تنزيل الملف المحدد محلياً. إذا لم يعد الملف موجوداً، فسيؤدي ذلك إلى فتح علامة تبويب جديدة لإظهار رسائل الخطأ.

    The data download row on the Data for Spark Application page.

  • انسخ مساراً كاملاً أو مساراً نسبياً عن طريق تحديد الخيار نسخ المسار الكامل أو نسخ المسار النسبي، والذي يتم توسيعه من قائمة التنزيل. بالنسبة لملفات Azure Data Lake Storage، حدد فتح في Azure Storage Explorer لتشغيل Azure Storage Explorer وتحديد موقع المجلد بعد تسجيل الدخول.

    Copy Full Path and Copy Relative Path options on the Data for Spark Application page.

  • إذا كان هناك عدد كبير جداً من الصفوف لعرضها في صفحة واحدة، فحدد أرقام الصفحات في أسفل الجدول للتنقل.

    Page numbers on the Data for Spark Application page.

  • لمزيد من المعلومات، مرر الماوس فوق أو حدد علامة الاستفهام الموجودة بجوار بيانات تطبيق Spark لإظهار تلميح الأداة.

    Get more information from the Data for Spark Application page.

  • لإرسال تعليقات حول المشكلات، حدد إرسال تعليقات إلينا.

    Provide feedback from the Data for Spark Application page.

استخدم علامة التبويب الرسم البياني في خادم Spark History

  • حدد معرّف الوظيفة، ثم حدد رسم بياني في قائمة الأداة لمشاهدة الرسم البياني للوظيفة. بشكل افتراضي، سيعرض الرسم البياني جميع الوظائف. قم بتصفية النتائج باستخدام القائمة المنسدلة معرف الوظيفة .

    The Job ID drop-down menu on the Spark Application & Job Graph page.

  • يتم تحديدالتقدم بشكل افتراضي. تحقق من تدفق البيانات عن طريق تحديد قراءة أو مكتوب في القائمة المنسدلة العرض .

    Check the data flow on the Spark Application & Job Graph page.

  • يتوافق لون الخلفية لكل مهمة مع خريطة الحرارة.

    The heat map on the Spark Application & Job Graph page.

    Color ‏‏الوصف
    أخضر تمت المهمة بنجاح.
    Orange فشلت المهمة، لكن هذا لا يؤثر على النتيجة النهائية للوظيفة. تحتوي هذه المهام على مثيلات مكررة أو تعيد المحاولة قد تنجح لاحقاً.
    أزرق المهمة قيد التشغيل.
    أبيض المهمة في انتظار التشغيل، أو تم تخطي المرحلة.
    أحمر فشلت المهمة.

    Running a task on the Spark Application & Job Graph page.

    تظهر المراحل التي تم تخطيها باللون الأبيض. A skipped task on the Spark Application & Job Graph page.

    A failed task on the Spark Application & Job Graph page.

    إشعار

    التشغيل متاح للوظائف المكتملة. حدد الزر تشغيل لتشغيل المهمة. قم بإيقاف المهمة في أي وقت عن طريق تحديد زر التوقف. عند تشغيل مهمة ما، ستعرض كل مهمة حالتها حسب اللون. التشغيل غير مدعوم للمهام غير المكتملة.

  • قم بالتمرير لتكبير الرسم البياني للوظيفة أو تصغيره، أو حدد تكبير للملاءمة لجعله مناسباً للشاشة.

    Select Zoom to fit on the Spark Application & Job Graph page.

  • عندما تفشل المهام، مرر مؤشر الماوس فوق عقدة الرسم البياني لرؤية تلميح الأداة، ثم حدد المرحلة لفتحها في صفحة جديدة.

    View the tooltip on the Spark Application & Job Graph page.

  • في صفحة Spark Application & Job Graph، ستُعرض تلميحات الأدوات والرموز الصغيرة في المراحل إذا كانت المهام تفي بهذه الشروط:

    • انحراف البيانات: حجم قراءة البيانات > متوسط حجم قراءة البيانات لجميع المهام داخل هذه المرحلة * 2 و حجم قراءة البيانات > 10 ميجابايت.

    • انحراف الوقت: وقت التنفيذ > متوسط وقت التنفيذ لجميع المهام داخل هذه المرحلة * 2 ووقت التنفيذ > دقيقتين.

      The skewed task icon on the Spark Application & Job Graph page.

  • ستعرض عقدة الرسم البياني للوظيفة المعلومات التالية حول كل مرحلة:

    • المعرف

    • الاسم أو الوصف

    • إجمالي رقم المهمة

    • قراءة البيانات: مجموع حجم الإدخال وحجم القراءة عشوائياً

    • كتابة البيانات: مجموع حجم الإخراج وحجم الكتابة العشوائي

    • وقت التنفيذ: الوقت بين وقت بدء المحاولة الأولى ووقت الانتهاء من المحاولة الأخيرة

    • عدد الصفوف: مجموع سجلات الإدخال، وسجلات الإخراج، وسجلات القراءة العشوائية، وسجلات الكتابة العشوائية

    • التقدم

      إشعار

      بشكل افتراضي، ستعرض عقدة الرسم البياني للوظيفة معلومات من المحاولة الأخيرة لكل مرحلة (باستثناء وقت تنفيذ المرحلة). ولكن أثناء التشغيل، ستعرض عقدة الرسم البياني للوظيفة معلومات حول كل محاولة.

      إشعار

      لأحجام قراءة البيانات وكتابة البيانات، نستخدم 1 ميجابايت = 1000 كيلوبايت = 1000 * 1000 بايت.

  • أرسل تعليقاتك حول المشكلات عن طريق تحديد إرسال تعليقات إلينا.

    The feedback option on the Spark Application & Job Graph page.

استخدم علامة التبويب التشخيص في خادم Spark History

حدد معرّف الوظيفة، ثم حدد التشخيص في قائمة الأداة لمشاهدة عرض تشخيص الوظيفة. تتضمن علامة التبويب التشخيص انحراف البيانات و انحراف الوقت و تحليل استخدام المنفذ.

  • راجع انحراف البيانات و انحراف الوقت و تحليل استخدام المنفذ عن طريق تحديد علامات التبويب على التوالي.

    The Data Skew tab within the Diagnosis tab.

انحراف البيانات

حدد علامة التبويب انحراف البيانات. يتم عرض المهام المنحرفة المقابلة بناءً على المعلمات المحددة.

حدد المعلمات

قسم تحديد المعلمات يعرض المعلمات التي تُستخدم لاكتشاف انحراف البيانات. القاعدة الافتراضية هي: قراءة بيانات المهمة أكبر من ثلاث مرات من متوسط ​​بيانات المهمة المقروءة، وبيانات المهمة المقروءة أكثر من 10 ميغا بايت. إذا كنت تريد تحديد القاعدة الخاصة بك للمهام المنحرفة، فيمكنك اختيار المعلمات الخاصة بك. سيتم تحديث قسمي منحرفة ومخطط منحرف وفقاً لذلك.

مرحلة منحرفة

يعرض قسم منحرفة المرحلة المراحل التي تحتوي على مهام منحرفة تفي بالمعايير المحددة. في حالة وجود أكثر من مهمة منحرفة في إحدى المراحل، يعرض قسم المرحلة المنحرفة فقط المهمة الأكثر انحرافاً (أي أكبر البيانات لانحراف البيانات).

Larger view of the Data Skew tab within the Diagnosis tab.

مخطط انحراف

عندما تحدد صفاً في الجدول مرحلة الانحراف، يعرض مخطط الانحراف مزيداً من تفاصيل توزيع المهام بناءً على قراءة البيانات ووقت التنفيذ. يتم تمييز المهام المنحرفة باللون الأحمر، ويتم تمييز المهام العادية باللون الأزرق. للنظر في الأداء، يعرض المخطط ما يصل إلى 100 نموذج مهمة. يتم عرض تفاصيل المهمة في اللوحة اليمنى السفلية.

The Skew Chart for Stage 10 in the Spark UI.

انحراف الوقت

تعرض علامة التبويب انحراف الوقت المهام المنحرفة بناءً على وقت تنفيذ المهمة.

حدد المعلمات

قسم تحديد المعلمات يعرض المعلمات التي تُستخدم لاكتشاف انحراف الوقت. القاعدة الافتراضية هي: وقت تنفيذ المهمة أكبر من ثلاث مرات من متوسط ​​وقت التنفيذ، ووقت تنفيذ المهمة أكبر من 30 ثانية. يمكنك تغيير المعلمات بناءً على احتياجاتك. يعرض كل من منحرف المرحلة ومخطط منحرف المراحل المقابلة ومعلومات المهام، تماماً كما هو الحال في علامة التبويب انحراف البيانات .

عند تحديد انحراف الوقت، يتم عرض النتيجة المصفاة في قسم مرحلة منحرفة، وفقاً للمعلمات التي تم تعيينها في قسم تحديد المعلمات . عندما تحدد عنصراً واحداً في قسم مرحلة منحرفة، تتم صياغة المخطط المقابل في القسم الثالث، ويتم عرض تفاصيل المهمة في اللوحة اليمنى السفلية.

The Time skew tab within the Diagnosis tab.

الرسوم البيانية لتحليل استخدام المنفذ

يعرض الرسم البياني لاستخدام المنفذ تخصيص المنفذ الفعلي للوظيفة وحالة التشغيل.

عند تحديد تحليل استخدام المنفذ، تتم صياغة أربعة منحنيات مختلفة حول استخدام المنفذ: المنفذون المخصصون و المنفذون قيد التشغيل و المنفذون الخاملون و الحد الأقصى لمثيلات Executor. كل حدث تمت إضافة المنفذ أو تمت إزالة المنفذ سيزيد أو ينقص عدد المنفذين المخصصين. يمكنك التحقق من المخطط الزمني للحدث في علامة التبويب الوظائف لمزيد من المقارنات.

The Executor Usage Analysis tab within the Diagnosis tab.

حدد رمز اللون لتحديد أو إلغاء تحديد المحتوى المقابل في جميع المسودات.

Select the chart in the Executor Usage Analysis tab.

الأسئلة المتداولة

كيف أعود إلى إصدار المجتمع؟

للرجوع إلى إصدار المجتمع، قم بالخطوات التالية.

  1. افتح الكتلة في Ambari.

  2. انتقل إلى Spark2>Configs.

  3. حدد افتراضيات شرارة 2 مخصصة.

  4. حدد إضافة خاصية ....

  5. أضف spark.ui.enhancement.enabled = false، ثم احفظه.

  6. يتم تعيين الخاصية على false الآن.

  7. حدد حفظ لحفظ التكوين.

    Turn off a feature in Apache Ambari.

  8. حدد Spark2 في اللوحة اليمنى. بعد ذلك، في علامة التبويب الملخص، حدد Spark2 History Server.

    The summary view in Apache Ambari.

  9. لإعادة تشغيل Spark History Server، حدد الزر تم البدء على يمين Spark2 History Server، ثم حدد إعادة التشغيل من القائمة المنسدلة.

    Restart the Spark History Server in Apache Ambari.

  10. قم بتحديث واجهة مستخدم الويب لخادم Spark History. سيعود إلى إصدار المجتمع.

كيف يمكنني تحميل حدث Spark History Server للإبلاغ عنه كمشكلة؟

إذا واجهت خطأ في Spark History Server، فقم بالخطوات التالية للإبلاغ عن الحدث.

  1. قم بتنزيل الحدث عن طريق تحديد تنزيل في واجهة مستخدم الويب لخادم Spark History.

    Download the event in the Spark History Server UI.

  2. حدد Provide us feedback من صفحة Graph & تطبيقSpark.

    Provide feedback on the Spark Application & Job Graph page.

  3. قم بتوفير العنوان ووصف الخطأ. بعد ذلك، اسحب ملف .zip إلى حقل التعديل وحدد إرسال إصدار جديد.

    Upload and submit a new issue.

كيف أقوم بترقية ملف .jar في سيناريو الإصلاح العاجل؟

إذا كنت تريد الترقية باستخدام إصلاح عاجل، فاستخدم البرنامج النصي التالي، والذي سيقوم بترقية spark-enhancement.jar*.

upgrade_spark_enhancement.sh:

 #!/usr/bin/env bash

 # Copyright (C) Microsoft Corporation. All rights reserved.

 # Arguments:
 # $1 Enhancement jar path

 if [ "$#" -ne 1 ]; then
     >&2 echo "Please provide the upgrade jar path."
     exit 1
 fi

 install_jar() {
     tmp_jar_path="/tmp/spark-enhancement-hotfix-$( date +%s )"

     if wget -O "$tmp_jar_path" "$2"; then
         for FILE in "$1"/spark-enhancement*.jar
         do
             back_up_path="$FILE.original.$( date +%s )"
             echo "Back up $FILE to $back_up_path"
             mv "$FILE" "$back_up_path"
             echo "Copy the hotfix jar file from $tmp_jar_path   to $FILE"
             cp "$tmp_jar_path" "$FILE"

             "Hotfix done."
             break
         done
     else    
         >&2 echo "Download jar file failed."
         exit 1
     fi
 }

 jars_folder="/usr/hdp/current/spark2-client/jars"
 jar_path=$1

 if ls ${jars_folder}/spark-enhancement*.jar 1>/dev/null 2>&1;   then
     install_jar "$jars_folder" "$jar_path"
 else
     >&2 echo "There is no target jar on this node. Exit with no action."
     exit 0
 fi

الاستخدام

upgrade_spark_enhancement.sh https://${jar_path}

مثال

upgrade_spark_enhancement.sh https://${account_name}.blob.core.windows.net/packages/jars/spark-enhancement-${version}.jar

استخدم ملف bash من بوابة Microsoft Azure

  1. قم بتشغيل مدخل Azure، ثم حدد المجموعة الخاصة بك.

  2. أكمل إجراء البرنامج النصي بالمعلمات التالية.

    الخاصية القيمة
    نوع البرنامج النصي - مخصص
    الاسم UpgradeJar
    عنوان URI النصي Bash https://hdinsighttoolingstorage.blob.core.windows.net/shsscriptactions/upgrade_spark_enhancement.sh
    نوع العقدة (العقدات) رئيس، عامل
    المعلمات https://${account_name}.blob.core.windows.net/packages/jars/spark-enhancement-${version}.jar

    Azure portal submit script action.

مشكلات معروفة

  • حالياً، يعمل خادم Spark History فقط مع Spark 2.3 و2.4.

  • لن يتم عرض بيانات الإدخال والإخراج التي تستخدم RDD في علامة التبويب البيانات .

الخطوات التالية

الاقتراحات

إذا كانت لديك أي ملاحظات أو واجهتك أي مشكلات عند استخدام هذه الأداة، فأرسل بريداً إلكترونياً إلى (hdivstool@microsoft.com).