في مجال هندسة البيانات الحديثة، قلما شكلت التقنيات المشهد بقدر ما فعلته أباتشي هادوب. لسنوات، خدمت كحجر الزاوية لمعالجة البيانات الضخمة، مما مكن المنظمات من تخزين وتحليل بيتابايتات من المعلومات عبر عناقيد من الأجهزة التجارية. بينما ظهرت أدوات جديدة مثل سبارك وفلينك لحالات استخدام محددة، يظل فهم البنية الأساسية لهادوب أمراً حاسماً لأي مطور يهدف إلى إتقان الأنظمة الموزعة. تفصل هذه المقالة الأعمدة الثلاثة للنظام البيئي لهادوب: HDFS و MapReduce و YARN.
نظام الملفات الموزع لهادوب (HDFS): العمود الفقري للتخزين
قبل معالجة البيانات، يجب تخزينها بكفاءة. يُعد HDFS نظام ملفات موزع مصمم للتعامل مع مجموعات بيانات ضخمة مع تحمل عالٍ للأعطال. وعلى عكس أنظمة الملفات التقليدية، يقوم HDFS بتقسيم الملفات الكبيرة إلى كتل (عادةً 128 ميجابايت أو 256 ميجابايت) وتوزيعها عبر عناقيد من الآلات.
يكمن مفتاح موثوقية HDFS في النسخ المتماثل. بشكل افتراضي، يتم نسخ كل كتلة ثلاث مرات عبر عقد مختلفة (وغالباً عبر رفوف مختلفة) لضمان بقاء البيانات متاحة في حال فشل عقدة واحدة. يسمح هذا الهيكل لـ HDFS بالتوسع بشكل خطي؛ فكلما أضفت المزيد من العقد، زادت سعة التخزين ومعدل الإرسال (throughput) بشكل متناسب.
```xml
fs.defaultFShdfs://namenode:9000dfs.replication3
```
MapReduce: محرك المعالجة
بمجرد تخزين البيانات، تحتاج إلى تحليلها. يُعد MapReduce نموذج المعالجة الأصلي الذي قدمته جوجل وتبنته هادوب. يعمل على مبدأ "نقل الحساب إلى البيانات" بدلاً من "نقل البيانات إلى الحساب"، مما يقلل من حركة مرور الشبكة.
يتكون مهمة MapReduce من مرحلتين: Map و Reduce. تعالج مرحلة Map البيانات المدخلة لتوليد أزواج مفتاح-قيمة وسيطة. تجمع مرحلة Reduce هذه النتائج الوسيطة لإنتاج المخرجات النهائية. وعلى الرغم من قوتها، فإن MapReduce تكراري وبطيء للاستعلامات المعقدة لأنه يكتب النتائج الوسيطة على القرص.
```java
// منطق MapReduce مبسط
public class WordCountMapper extends Mapper