Modern veri mühendisliği alanında, Apache Hadoop kadar derin izler bırakmış birkaç teknoloji vardır. Yıllardır büyük veri işleme için temel taşı görevi görerek, kuruluşların ticari donanımlı küme üzerinde petabaytlarca bilgiyi depolamasını ve analiz etmesini sağlamıştır. Spark ve Flink gibi yeni araçlar belirli kullanım senaryoları için ortaya çıksa da, dağıtık sistemlerde uzmanlaşmayı hedefleyen her geliştirici için Hadoop’ın temel mimarisini anlamak kritik önem taşır. Bu yazıda Hadoop ekosisteminin üç temel direği olan HDFS, MapReduce ve YARN incelenecektir.
Hadoop Dağıtık Dosya Sistemi (HDFS): Depolama Omurgası
Veri işlenmeden önce, verimli bir şekilde depolanmalıdır. HDFS, yüksek hata toleransına sahip devasa veri setlerini işlemek üzere tasarlanmış dağıtık bir dosya sistemidir. Geleneksel dosya sistemlerinin aksine, HDFS büyük dosyaları bloklara (genellikle 128MB veya 256MB) böler ve bunları bir makine kümesine dağıtır.
HDFS’in güvenilirliğinin anahtarı çoğaltmadır. Varsayılan olarak, her blok farklı düğümlerde (ve genellikle farklı raf gruplarında) üç kez çoğaltılır; bu sayede bir düğüm arızalandığında veriye erişim devam eder. Bu mimari, HDFS’in doğrusal olarak ölçeklenebilmesini sağlar; daha fazla düğüm ekledikçe hem depolama kapasitesi hem de veri aktarım hızı orantılı olarak artar.
```xml
fs.defaultFShdfs://namenode:9000dfs.replication3
```
MapReduce: İşleme Motoru
Veri depolandıktan sonra, analiz edilmesi gerekir. MapReduce, Google tarafından tanıtılan ve Hadoop tarafından benimsenen orijinal işleme paradigmasydır. "Veriyi işlemeye taşımak" yerine "işlemeyi veriye taşımak" ilkesi üzerine çalışarak ağ trafiğini en aza indirger.
MapReduce işi iki aşamadan oluşur: Map (Eşleme) ve Reduce (Azaltma). Map aşaması, girdi verisini işleyerek ara anahtar-değer çiftleri oluşturur. Reduce aşaması ise bu ara sonuçları birleştirerek nihai çıktıyı üretir. Güçlü bir yapıya sahip olsa da, MapReduce karmaşık sorgular için yinelenen ve yavaş bir yapıdadır çünkü ara sonuçları diske yazar.
```java
// Basitleştirilmiş MapReduce Mantığı
public class WordCountMapper extends Mapper