Apache Spark / المتوسط: التوزيع وأدلة التنفيذ / الدرس 8
الأقسام والتبادل وتوازن العمل
افصل التوزيع وتنظيم الملفات ومفاتيح الأعمال عند تحليل التفاوت واكتمال المراحل.
في هذه الصفحة
أهداف الدرس
- اشرح الاعتماديات الضيقة وحدود shuffle.
- اختر repartition أوcoalesce وفق حاجة مرصودة.
تختلف التحويلات المحلية عن إعادة توزيع المفاتيح
يمكن للتصفية أوالاختيار معالجة الأقسام مستقلة غالباً. ويحتاج تجميع الموقع اجتماع المفاتيح المرتبطة، ما قد يضيف Exchange وshuffle. قد تستفيد الخطة من توزيع قائم أوتحسينات، فلا تفترض تبادلاً إلزامياً لكل استدعاء. تستهلك الشبكة والتسلسل والملفات والفرز موارد. احسب البايتات وتوزيع المفاتيح العابرة، لا عدد عبارات Python؛ فقد يكلف groupBy قصير أكثر من سلسلة اختيارات انتقائية طويلة.
تعبر repartition عن توزيع مطلوب
يطلب المقطع أربعة أقسام حسب site_id. الرقم خاص بالسيناريو لا توصية. يجمع التوزيع بالتجزئة المفتاح نفسه للعملية، لكنه لا يعد بأعداد متساوية أوبرقم قسم عام معين. ويظل الموقع الغالب مركزاً. قد تضيف repartition تبادلاً لتغيير التوزيع، بينما تقلل coalesce الأقسام عادة باعتمادية أضيق ولا تعيد التوازن عموماً. افحص الخطة والحمل ولا تفترض أن الأقل أسرع دائماً. لم تُنفذ العملية هنا.
by_site = readings.repartition(4, 'site_id')
smaller = by_site.coalesce(2)
يفترض DataFrame اصطناعياً موجوداً. لا تضمن الطلبات توازن البايتات أوملفَي مخرج أوسرعة أعلى.
يحدد أبطأ قسم لازم ذيل المرحلة
تخيل وحدات عمل10 و10 و10 و70. المجموع100 لكن أكبر قسم70 لا25 في توازن مثالي. هذا نموذج محلي لا مدة مهام مقاسة؛ فالتنفيذ يعتمد على الأنوية والجدولة والإدخال والإخراج والتنافس. لا تقسّم زيادة المنفذين مهمة متحيزة واحدة تلقائياً لكل عملية. افحص المفاتيح الساخنة والسجلات الضخمة ومضاعفة الربط قبل الموارد. قد يترافق الذيل الطويل مع متوسط استخدام منخفض يخفي المهام القليلة المكلفة.
{"work_units":[10,10,10,70],"total":100,"largest":70,"balanced_ideal":25,"scope":"local arithmetic model"}
يُتحقق محلياً من المجموع والأقصى والمتوسط المثالي فقط. الوحدات ليست مللي ثانية أوقياسات Spark.
يجب فصل ثلاثة معانٍ للقسم
تحدد أقسام المسح قراءة الملفات، وتنظم أقسام shuffle التنفيذ المعاد توزيعه، وتنشئ partitionBy في الكاتب مجلدات حسب قيم الأعمدة. تؤثر ببعضها ولا تتساوى أعدادها. قد يحوي مجلد يوم ملفات كثيرة ويسهم ملف بعدة تقسيمات مسح. وقد ينتج التقسيم لكل عداد مجلدات وملفات صغيرة مفرطة. اختر التنظيم من التصفية ودورة الحياة، والتوزيع التنفيذي من التوازن؛ ولا تجعل تسمية المجلدات تحمل كل قرار توازٍ.
غيّر التوزيع بعد تحديد الاختناق
قارن مدد المهام وبايتات المدخل والتبادل والسكب والأعداد وتواتر المفاتيح المصرح بها. تختلف مهام صغيرة كثيرة عن مهمة ضخمة. قد يدمج التنفيذ المتكيف العمل المؤهل بعد التبادل أو يقسمه، لكنه لا يعيد تعريف التجميع ولا يصلح كل تفاوت. يحتاج salting تجميعاً ثانياً صحيحاً ودلالات ربط دقيقة؛ فالمفاتيح العشوائية بلا إعادة بناء تغير النتيجة. لا تشغّل الدورة عنقوداً أوحملاً، وتتحقق من الحساب المذكور فقط وتبقي المقاطع غير قابلة للتشغيل.
الأخطاء الشائعة وإصلاحها
يُتوقع من coalesce توزيع المفتاح الساخن بالتساوي
- لماذا يحدث؟
- اختلط تقليل الأقسام بإعادة توازن المفاتيح.
- كيف تصلحه؟
- افحص التفاوت واختر توزيعاً صالحاً دلالياً.
- كيف تتجنب تكراره؟
- قارن توزيع كل مهمة لا العدد فقط.
يُفترض أن مجلد المخرج يعني مهمة واحدة
- لماذا يحدث؟
- اختلط تقسيم الملفات بالتنفيذ.
- كيف تصلحه؟
- سجّل قرارات المسح والتبادل والكاتب مستقلة.
- كيف تتجنب تكراره؟
- اختبر جرد الملفات مع قياسات التشغيل.
تغير إضافة أملاح عشوائية إجمالي الطاقة
- لماذا يحدث؟
- لم تحفظ إعادة البناء عقد التجميع الأصلي.
- كيف تصلحه؟
- أثبت التجميع الجزئي والنهائي بمثال دقيق صغير.
- كيف تتجنب تكراره؟
- راجع الصحة قبل تحسين التفاوت.
اختبر فهمك
1. ما المجموع والمتوسط المتوازن لوحدات10 و10 و10 و70؟
اعرض الحل المشروح
المجموع100 والمتوسط المثالي25 لأربعة أقسام. يكشف الأقصى70 عدم التوازن ولا يتنبأ بالزمن دون نموذج تشغيل. افحص قياسات المهام قبل نسب البطء لعدد المنفذين وحده.
2. هل تضمن repartition(4,"site_id") أربع مجموعات مواقع متساوية الحجم؟
اعرض الحل المشروح
لا؛ يحدد التواتر وعرض الصف التوزيع وقد يهيمن موقع على قسم. أربعة عدد مطلوب للسيناريو فقط. تحقق من الخطة واستخدم استراتيجية صحيحة تراعي المجال إذا استمر التفاوت.
أهم ما تعلمته
- التوزيع وتنظيم الملفات والتفصيل المنطقي عقود مختلفة.
- يحتاج ذيل المرحلة دليلاً لكل مهمة لا المتوسط وحده.