در عرصه مهندسی دادههای مدرن، فناوریهای اندکی به اندازه آپاچی هادوپی بر این منظره تأثیر گذاشتهاند. این سیستم سالهاست که به عنوان سنگ بنای پردازش دادههای کلان عمل میکند و به سازمانها امکان ذخیره و تحلیل پتابایتها اطلاعات را در خوشههایی از سختافزارهای معمولی میدهد. اگرچه ابزارهای جدیدی مانند اسپارک و فلینک برای موارد استفاده خاص ظهور کردهاند، درک معماری بنیادین هادوپی همچنان برای هر توسعهدهندهای که هدفش تسلط بر سیستمهای توزیعشده است، حیاتی باقی میماند. این پست سه ستون اصلی اکوسیستم هادوپی را بررسی میکند: HDFS، MapReduce و YARN.
سیستم فایل توزیعشده هادوپی (HDFS): ستون فقرات ذخیرهسازی
قبل از اینکه دادهها قابل پردازش باشند، باید به طور کارآمد ذخیره شوند. HDFS یک سیستم فایل توزیعشده است که برای مدیریت مجموعههای داده عظیم با تحمل خطای بالا طراحی شده است. برخلاف سیستمهای فایل سنتی، HDFS فایلهای بزرگ را به بلوکها (معمولاً ۱۲۸ مگابایت یا ۲۵۶ مگابایت) تقسیم کرده و آنها را در سراسر یک خوشه از ماشینها توزیع میکند.
کلید قابلیت اطمینان HDFS، تکثیر (Replication) است. به طور پیشفرض، هر بلوک سه بار در گرههای مختلف (و اغلب در رکهای مختلف) تکثیر میشود تا اطمینان حاصل شود که در صورت خرابی یک گره، دادهها همچنان قابل دسترسی باشند. این معماری به HDFS اجازه میدهد تا به صورت خطی مقیاسپذیر باشد؛ با افزودن گرههای بیشتر، هم ظرفیت ذخیرهسازی و هم پهنای باند به نسبت افزایش مییابد.
```xml
fs.defaultFShdfs://namenode:9000dfs.replication3
```
MapReduce: موتور پردازش
پس از ذخیره دادهها، نیاز به تحلیل آنها وجود دارد. MapReduce پارادایم پردازش اولیهای است که توسط گوگل معرفی شد و توسط هادوپی پذیرفته گردید. این سیستم بر اصل «انتقال محاسبات به سمت داده» به جای «انتقال داده به سمت محاسبات» عمل میکند که این امر ترافیک شبکه را به حداقل میرساند.
کار MapReduce از دو فاز تشکیل شده است: Map و Reduce. فاز Map دادههای ورودی را پردازش میکند تا جفتهای کلید-مقدار میانی را تولید کند. فاز Reduce این نتایج میانی را تجمیع میکند تا خروجی نهایی را تولید نماید. اگرچه قدرتمند است، اما MapReduce برای کوئریهای پیچیده تکرارشونده و کند است زیرا نتایج میانی را روی دیسک مینویسد.
```java
// منطق سادهشده MapReduce
public class WordCountMapper extends Mapper