Data Engineering

Apache Hadoop için Kesin Rehber: Mimari, Ekosistem ve Modern Önem

Apache Hadoop, yeni akış işleme çerçeveleri popülerlik kazanırken bile büyük veri manzarasının bir temel taşı olmaya devam ediyor. Veri mühendisleri için Hadoop'u anlamak, sadece eski sistemlerin bakımını yapmakla ilgili değil; dağıtık depolama ve işleme sistemlerinin petabaytlar düzeyinde veriyi nasıl ele aldığını kavramak için temel bir öneme sahiptir. Bu yazıda Hadoop'un temel mimarisi incelenmekte, ekosistemi keşfedilmekte ve Hadoop'un modern alternatiflere göre ne zaman kullanılması gerektiği açıklanmaktadır.

Temel Mimari: HDFS ve YARN

Hadoop'un gücü, iki temel bileşeninde yatar: Hadoop Dağıtık Dosya Sistemi (HDFS) ve YARN (Yet Another Resource Negotiator) kaynak yöneticisi. Geleneksel tek düğüm veritabanlarının aksine, HDFS uygulama verilerine yüksek verimli erişim için tasarlanmıştır ve büyük veri setlerini hata toleransı ile işlemek üzere inşa edilmiştir.

HDFS, bir ana-bağıl (master-slave) mimarisi kullanır. NameNode dosya sistemi ad alanını yönetir ve dosyalara erişimi kontrol ederken, birden fazla DataNode gerçek veri bloklarını depolar. Varsayılan olarak, HDFS donanım arızalarına karşı dayanıklılığı sağlamak amacıyla veri bloklarını farklı düğümlerde çoğaltır (genellikle 3x).

YARN, kaynak yönetimini veri işlemeden ayırır. Bu durum, Hadoop'un MapReduce, Apache Spark, Apache Flink ve daha fazlası gibi çeşitli işleme motorlarını desteklemesini sağlar; hepsi aynı küme üzerinde çalışır. Bu modülerlik, Hadoop'un monolitik büyük veri sistemlerine karşı en önemli mimari avantajıdır.

MapReduce: Orijinal İşleme Modeli

MapReduce, bir küme üzerinde paralel, dağıtık bir algoritma kullanarak büyük veri setlerini işlemek için bir programlama modelidir. İki aşamada çalışır:

  1. Map (Haritalama): Bir veri kümesini alır ve onu, bireysel öğeler anahtar/değer çiftlerine ayrıştırılan başka bir veri kümesine dönüştürür.
  2. Reduce (Azaltma): Map aşamasından çıkan çıktıyı girdi olarak alır ve bu veri demetlerini daha küçük bir demet kümesine birleştirir.

MapReduce güçlü olsa da, çoğunlukla sözlüğü ve map ile reduce aşamaları arasındaki disk G/Ç'sinin yarattığı yük nedeniyle eleştirilir. Ancak, birçok Hadoop uyumlu sistem için referans uygulama olmaya devam etmektedir.

Örnek: Sahte-MapReduce Mantığında Kelime Sayımı

// Mapper Mantığı
function map(key, value):
    // Girdi: key=belge adı, value=belge metni
    words = value.split(" ")
    for word in words:
        emit(word, 1)

// Reducer Mantığı
function reduce(key, values):
    sum = 0
    for v in values:
        sum += v
    emit(key, sum)

Çekirdek Dışındaki Hadoop Ekosistemi

Hadoop nadiren yalnız başına kullanılır. Gerçek gücü, belirli veri mühendisliği sorunlarını çözen çevresindeki ekosistem araçları aracılığıyla ortaya çıkar:

  • Hive: HDFS'de depolanan verileri sorgulamak için SQL benzeri bir arayüz (HiveQL) sağlar; toplu analizler için idealdir.
  • Pig: Pig Latin adlı bir dil kullanarak MapReduce programları oluşturmak için yüksek seviyeli bir platformdur.
  • HBase: HDFS üzerinde çalışan, büyük verilere gerçek zamanlı okuma/yazma erişimi sunan NoSQL, sütun yönelimli bir veritabanıdır.
  • ZooKeeper: Yapılandırma bilgilerini koruma, adlandırma ve dağıtık eşzamanlama sağlama amacıyla kullanılan merkezi bir hizmettir.

Modern Çağda Hadoop: Hâlâ İlgili mi?

Amazon S3 ve AWS EMR veya Google Cloud Dataproc gibi yönetilen hizmetler gibi bulut-native çözümlerin ortaya çıkmasıyla, yerel (on-premise) Hadoop kümelerinin yönetilmesine olan ihtiyaç azalmıştır. Ancak, Hadoop'un ilkeleri devam etmektedir:

  1. Depolama Ayrımı: Modern veri göllerinde depolama (S3/ADLS) ile işlem (Spark/Snowflake) ayrılır; bu da HDFS'in ayırma felsefesini yansıtır.
  2. Okuma-Zamanında Şema (Schema-on-Read): Hadoop, ham verileri depolayıp yapıyı yalnızca okuma sırasında uygulamayı popüler hale getirmiştir; bu uygulama artık veri göllerinde standarttır.
  3. Hata Toleransı: HDFS'te geliştirilen çoğaltma stratejileri, dağıtık sistemlerde veri dayanıklılığını sağlamak için hâlâ geçerlidir.

Veri mühendisleri için Hadoop'u ustalaşmak, dağıtık sistemlerde tutarlılık, kullanılabilirlik ve bölüm toleransı (CAP teoremi) arasındaki ödünleşimleri anlamak demektir. Günümüzde nadiren ham MapReduce kodu yazıyor olsanız bile, dağıtık karıştırma, bölütleme ve hata toleransının temel kavramları, her ortamda sağlam ve ölçeklenebilir veri boru hatları oluşturmak için kritik önem taşımaya devam etmektedir.

Sonuç

Apache Hadoop, büyük verileri depolama ve işleme biçimimizi devrim niteliğinde değiştirdi. Doğrudan kullanımı bulut-native yönetilen hizmetlere doğru evrilse de, mimari katkılarları modern veri mühendisliği yığınını tanımlamaktadır. HDFS ve YARN'ı anlamak, mühendisleri modern veri zorluklarının hacmi, hızı ve çeşitliliğini ele alan ölçeklenebilir sistemler tasarlamak için daha donanımlı hale getirir.

Share: