Büyük veri altyapısı manzarasında, Apache Hadoop kadar derin bir etkiye sahip birkaç çerçeve vardır. Modern mimariler genellikle bunun üzerine daha yeni araçlar eklerken, Hadoop dağıtılmış depolama ve toplu işleme için temel taşı olmaya devam eder. Orta ve ileri düzey geliştiriciler için Hadoop'un iç mekaniklerini—özellikle HDFS, MapReduce ve YARN'in nasıl etkileşime girdiğini—anlamak, ölçeklenebilir ve dayanıklı veri boru hatları tasarlamak için hayati önem taşır.
HDFS ile Dağıtılmış Depolama
Hadoop Dağıtılmış Dosya Sistemi (HDFS), büyük bir kümedeki makinelerde çok büyük dosyaları depolamak için tasarlanmıştır ve yine de hata toleranslı bir şekilde çalışır. Düşük gecikme süresi erişimini optimize eden geleneksel dosya sistemlerinin aksine, HDFS veri erişiminde yüksek veri akışını (throughput) önceliklendirir ve bu da onu büyük veri uygulamaları için ideal kılar.
HDFS, dosya sistemi ad alanını yöneten ve dosyalara erişimi düzenleyen bir NameNode (master) ile asıl veri bloklarını depolayan DataNodes'ları (slaves) içeren bir master/slave mimarisi kullanır. HDFS'teki temel kavramlardan biri çoğaltmadır (replication). Varsayılan olarak HDFS, her veri bloğunu farklı DataNodes'lar üzerinde üç kez çoğaltır. Bu, bir düğüm arızalanması durumunda verinin kaybolmamasını ve sistemin kopyaları barındıran diğer düğümlerden okuma isteklerini sunmaya devam etmesini sağlar.
# HDFS'te bir dizin oluşturma
hdfs dfs -mkdir /user/data/raw_logs
# Yerel bir dosyayı HDFS'e yükleme
hdfs dfs -put ./local_logs.txt /user/data/raw_logs/
# Blok çoğaltmasını doğrulama
hdfs fsck /user/data/raw_logs/local_logs.txt
MapReduce'dan YARN'e Geçiş
Tarihsel olarak MapReduce, Hadoop 1.x'te hem işleme motoru hem de kaynak yöneticisiydi. Ancak, çeşitli işleme modellerine duyulan ihtiyaç (Storm ile gerçek zamanlı akış işleme veya Hive ile etkileşimli sorgular gibi) ortaya çıktıkça, bu sıkı bağlantı bir darboğaza dönüştü. Hadoop 2.x, kaynak yönetimini veri işlemeden ayıran YARN'i (Yet Another Resource Negotiator) tanıttı.
YARN, bir ResourceManager (global zamanlayıcı), NodeManagers (her düğümdeki ajanlar) ve ApplicationMasters (uygulama başına) içermektedir. Bu mimari, Hadoop'un aynı küme üzerinde birden fazla işleme çerçevesini desteklemesini sağlayarak donanım kullanımını ve esnekliği önemli ölçüde artırır.
MapReduce Mantığını Anlamak
MapReduce, paralel ve dağıtılmış bir algoritma kullanarak büyük veri kümelerini işlemek ve oluşturmak için bir programlama modelidir. İki aşamada çalışır: Map (Haritalama) ve Reduce (Azaltma). Map aşaması bir veri kümesi alır ve bunu, bireysel öğeler anahtar/değer çiftlerine ayrıştırılan başka bir veri kümesine dönüştürür. Reduce aşaması, Map aşamasının çıktısını özetler.
// Kavramsal MapReduce İş Akışı
// 1. Input Split: "Hello World" -> ("Hello", 1), ("World", 1)
// 2. Shuffle & Sort: Anahtarları gruplar
// 3. Reduce: ("Hello", 2), ("World", 2)
// Gerçek bir senaryoda, bir Mapper sınıfı tanımlarsınız
public class WordCountMapper extends Mapper
Daha Geniş Ekosistem
Hadoop nadiren yalnız kullanılır. Gerçek gücü ekosistemindedir. Apache Hive gibi araçlar, veri ambarı işlemleri için SQL benzeri arayüzler sağlarken, Apache Pig yüksek seviyeli bir veri akış dili sunar. Etkileşimli sorgulama için Apache Impala ve Spark SQL, geleneksel MapReduce'a göre daha hızlı alternatifler sağlar. Ayrıca, HBase, doğrudan HDFS'in üzerinde yer alarak büyük veri kümelerine rastgele okuma/yazma erişimi için NoSQL yetenekleri sağlar.
Sonuç
Apache Hadoop, dağıtılmış depolama ve işleme için güvenilir ve ölçeklenebilir bir yaklaşım sunarak büyük veriyi nasıl ele aldığımızı devrim niteliğinde değiştirdi. Belirli gecikme ve etkileşim ihtiyaçlarını karşılamak için yeni teknolojiler ortaya çıksa da, HDFS ve YARN'in ilkeleri modern veri yığınlarının ayrılmaz bir parçası olmaya devam etmektedir. Bu temel bileşenlerde ustalaşarak geliştiriciler, yatay olarak ölçeklenen ve veri büyümesinin asla bir içgörü darboğazına dönüşmediğini güvence altına alan sağlam sistemler oluşturabilir.