تحسين أداء أحمال عمل Apache Spark باستخدام ذاكرة التخزين المؤقت Azure HDInsight IO

إشعار

  • تم دعم ذاكرة التخزين المؤقت IO حتى Spark 2.3 ولن يتم دعمها في Spark 2.4 (HDInsight 4.0) وSpark 3.1.2 (HDInsight 5.0)

ذاكرة التخزين المؤقت IO هي خدمة تخزين البيانات المؤقت لـ Azure HDInsight التي تحسن أداء وظائف Apache Spark. ذاكرة التخزين المؤقت IO تعمل أيضًا مع أحمال عمل Apache TEZ و Apache Hive التي يمكن تشغيلها على نظم مجموعات Apache Spark. تستخدم ذاكرة التخزين المؤقت IO مكون تخزين مؤقت مفتوح المصدر يسمى RubiX. RubiX هي ذاكرة التخزين المؤقت للقرص المحلي للاستخدام مع محركات تحليلات البيانات الكبيرة التي تصل إلى البيانات من أنظمة التخزين السحابية. تعتبر RubiX فريدة بين أنظمة التخزين المؤقت، لأنها تستخدم محركات الأقراص ذات الحالة الصلبة (SSDs) بدلًا من حجز ذاكرة التشغيل لأغراض التخزين المؤقت. تشغيل خدمة التخزين المؤقت IO وإدارة "خوادم بيانات التعريف RubiX" على كل عقدة عامل من نظام المجموعة. كما يكون كل خدمات نظام المجموعة للاستخدام الشفاف لذاكرة التخزين المؤقت RubiX.

توفر معظم محركات الأقراص ذات الحالة الصلبة SSDs أكثر من 1 جيجا بايت في الثانية من النطاق الترددي. يوفر هذا النطاق الترددي الذي يكمله ذاكرة التخزين المؤقت لملف الذاكرة في نظام التشغيل ما يكفي من النطاق الترددي لتحميل محركات معالجة حوسبة البيانات الضخمة مثل Apache Spark. تترك ذاكرة التشغيل متوفرة لـ Apache Spark لمعالجة المهام التي تعتمد بشكل كبير على الذاكرة، مثل المراوغات. يسمح وجود استخدام حصري لذاكرة التشغيل يسمح لـ Apache Spark بتحقيق الاستخدام الأمثل للموارد.

إشعار

تستخدم ذاكرة التخزين المؤقت IO حاليا RubiX كمكون تخزين مؤقت، لكن قد يتغير هذا في الإصدارات المستقبلية من الخدمة. الرجاء استخدام واجهات ذاكرة التخزين المؤقت IO ولا تأخذ أي تبعيات مباشرة لتطبيق RubiX. تُدعم ذاكرة التخزين المؤقت IO فقط مع موقع تخزين الكائن الثنائي كبير الحجم لـ AZURE في هذا الوقت.

فوائد ذاكرة التخزين المؤقت Azure HDInsight IO

يوفر استخدام ذاكرة التخزين المؤقت IO زيادة أداء للوظائف التي تقرأ البيانات من موقع تخزين الكائن الثنائي كبير الحجم لـ Azure.

ليس عليك إجراء أية تغييرات على وظائف Spark لرؤية زيادة الأداء عند استخدام ذاكرة التخزين المؤقت IO. عند تعطيل ذاكرة التخزين المؤقت IO، فإن التعليمة البرمجية Spark هذه ستقرأ البيانات عن بعد من موقع تخزين الكائن الثنائي كبير الحجم Azure: spark.read.load('wasbs:///myfolder/data.parquet').count(). عند تنشيط ذاكرة التخزين المؤقت IO يتسبب نفس سطر التعليمة البرمجية إلى قراءة مخزنة مؤقتًا من خلال ذاكرة التخزين المؤقت IO. تبعًا للقراءات التالية، فإن هذه البيانات تُقرأ محليًا من محرك أقراص ذو الحالة الصلبة. جُهزت العقد العاملة على نظام المجموعة HDInsight مع محركات أقراص صلبة مخصصة ومرفقة محليًا. تستخدم ذاكرة التخزين المؤقت IO لـ HDInsight هذه المحركات الصلبة SSD المحلية للتخزين المؤقت التي توفر أدنى مستوى من زمن الوصول وتزيد من النطاق الترددي.

الشروع في العمل

يلغى تنشيط ذاكرة التخزين المؤقت IO لـ Azure HDInsigh افتراضيًا في المعاينة. تتوفر ذاكرة تخزين مؤقت IO على مجموعات Azure HDInsight 3.6+ Spark، التي تعمل على تشغيل Apache Spark 2.3. لتنشيط ذاكرة التخزين المؤقت IO على HDInsight 4.0، اتبع بالخطوات التالية:

  1. من متصفح ويب، انتقل إلى https://CLUSTERNAME.azurehdinsight.net، حيث CLUSTERNAME هو اسم نظام المجموعة.

  2. حدد خدمة ذاكرة التخزين المؤقت IO يسارًا.

  3. حدد الإجراءات(إجراءات الخدمة في HDI 3.6) و تنشيط.

    Enabling the IO Cache service in Ambari.

  4. تأكيد إعادة تشغيل كل الخدمات المتأثرة على نظام المجموعة.

إشعار

على الرغم من أن شريط التقدم يظهر منشط إلا أن ذاكرة التخزين المؤقت IO لم تُفعل حتى تعيد تشغيل الخدمات المتأثرة الأخرى.

استكشاف الأخطاء وإصلاحها

قد تجد أخطاء في مساحة القرص لتشغيل مهام Spark بعد تمكين ذاكرة التخزين المؤقت IO. تحدث هذه الأخطاء لأن Spark يستخدم أيضًا تخزين القرص المحلي لتخزين البيانات أثناء تبديل العمليات. قد تنفذ مساحة محرك الأقراص ذو الحالة الصلبة من Spark بمجرد تمكين ذاكرة التخزين المؤقت IO وتقليل المساحة لتخزين Spark. مقدار المساحة المستخدمة من قبل ذاكرة التخزين المؤقت IO الافتراضي إلى نصف إجمالي مساحة محرك الأقراص ذو الحالة الصلبة. استخدام مساحة القرص لذاكرة التخزين المؤقت IO قابل للتكوين في Ambari. إذا حدثت أخطاء مساحة القرص، قلل مقدار مساحة محرك الأقراص ذو الحالة الصلبة المستخدم لذاكرة التخزين المؤقت IO ثم أعد تشغيل الخدمة. لتغيير المساحة التي عينتها ل ذاكرة التخزين المؤقت IO، اتبع الخطوات التالية:

  1. في Apache Ambari، حدد خدمة HDFS على اليسار.

  2. حدد علامتي التبويب التكوينات و المتقدمة.

    Edit HDFS Advanced Configuration.

  3. مرر لأسفل ووسع مساحة الموقع الأساسي المخصص.

  4. حدد موقع الخاصيةhadoop.cache.data.fullness.percentage.

  5. غير القيمة في المربع.

    Edit IO Cache Fullness Percentage.

  6. حدد حفظ أعلى اليمين.

  7. حدد إعادة تشغيل>إعادة تشغيل كل العناصر المتأثرة.

    Apache Ambari restarts all affected.

  8. حدد «تأكيد إعادة تشغيل الكل».

إذا لم ينجح ذلك، عطل ذاكرة التخزين المؤقت IO.

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

اقرأ المزيد حول ذاكرة التخزين المؤقت IO، بما في ذلك معايير الأداء في هذه المدونة: تزيد وظائف Apache Spark بسرعة تصل إلى 9 أضعاف مع ذاكرة التخزين المؤقت HDInsight IO