Büyük veri dünyasının küçük sarı fili: Hadoop

Büyük veri dünyasının küçük sarı fili: Hadoop

Bu yazıda büyük veri dünyasındaki o küçük sarı fili yakından tanımaya çalışıyor ve Hadoop'a giriş yapıyoruz.
Oğuz Erdoğan27 Eyl 2021

2000'li yıllarla birlikte internet gelişiyor ve kullanıcıların aradıkları metin içeriklerini bulmalarına yardımcı olmak için arama motorları ortaya çıkıyordu. Düzinelerce sayfadan milyonlarca sayfaya çıkan içerik hacmi otomasyon ihtiyacını beraberinde getirdi. Bu nedenle internet tarayıcıları ve arama motoru start-up'ları ortaya çıkmaya başlamıştı bile.

Kaynak: SAS

Doug Cutting ve Mike Cafarella, oluşturdukları Nutch adındaki arama motorunda arama sonuçlarını daha hızlı döndürmek için verileri ve hesaplamaları farklı bilgisayarlar arasında dağıtmak istediler.

Bu sırada Google'ın arama motoru projesi devam ediyordu ve istenen şey benzer şekilde ilgili web arama sonuçlarının daha hızlı döndürülebilmesi için verileri dağıtılmış, otomatik bir şekilde depolamak ve işlemekti. Google, MapReduce ile Google File System başlıklarında iki makale yayınladı.

2006'da Doug Cutting, Yahoo'ya katıldı ve Nutch projesi ile Google'ın dağıtılmış veri depolama ve işlemeyi otomatikleştirme konusundaki ilk çalışmalarına dayanan fikirleri de beraberinde götürdü. Nutch projesi bölündü: Web tarayıcı kısmı Nutch olarak kaldı ve dağıtılmış bilgi işleme kısmı Hadoop oldu. Hadoop adını Cutting'in oğlunun oyuncak filinden alıyordu.

2008'de Yahoo, Hadoop'u açık kaynaklı bir proje olarak yayınladı. Bugün, Hadoop'un teknoloji çerçevesi ve ekosistemi, küresel bir yazılım geliştiricileri ve katkıda bulunanlar topluluğu olan kar amacı gütmeyen Apache Software Foundation (ASF) tarafından yönetilmekte ve sürdürülmekte.

Hadoop'un geçmişine kısa bir bakış attık. Peki ama nedir bu büyük veri dünyasının küçük sarı oyuncak fili?

 

Kısaca geleneksel teknoloji, işleme yöntemleri, mimari yapı ve çerçevede işlenmesi, saklanması ve yönetilmesi mümkün olmayan veriye big data yani büyük veri diyoruz. Hadoop ise temelinde dağıtık bir dosya sistemidir ve çok büyük hacimli veri setlerinin, sunucu kümeleri (clusters) üzerinde basit programlama modelleriyle dağıtık şekilde işlenmesine imkan verir. Hadoop, kullanıcıların çok büyük boyutlardaki birden fazla dosyayı depolamasını ve bu dosyaları işlemesini mümkün kılan bir framework olarak düşünülebilir.

Geçmişte şirketler yüksek kullanılabilirlik elde etmek için pahalı donanımlar satın almak zorundaydı. Hadoop ise donanıma dayanmayarak yüksek kullanılabilirlik sağladığı ve hata noktalarına dayanıklılığı ile bu bağımlılığın üstesinden geliyor. Kısaca Hadoop bir donanım değil, yazılım ve bu yazılımın bazı temel bileşenlerini tanımak gerekiyor.

Hadoop Common: Tüm modüllerde kullanılabilen ortak yardımcı programlar sağlar.

Hadoop MapReduce: Dağıtık haldeki büyük verileri işlemek için kullanılır. Verilerin işlenmesinde map ve reduce isimli iki fonksiyon kullanılır. 2004 yılında Google tarafından duyurulan bu sistemde aslen 1960'lı yıllarda geliştirilen fonksiyonel programlamadaki map ve reduce fonksiyonlarından esinlenmiştir.

  • Map: Master node (ana düğüm) verileri alıp daha ufak parçalara ayırarak worker node (işçi düğüm) yapılarına dağıtır. İşleMLER tamamlandıkça worker nodelar aldıkları sonuçları master node yapısına gönderir.
  • Reduce: Tamamlanan işler birleştirilerek sonuç elde edilir.

Görselde bir word count uygulaması için yapılan MapReduce işleminin aşamaları yer alıyor.


Kaynak

Hadoop Dağıtılmış Dosya Sistemi (HDFS): Hadoop’un dosya sistemidir. Sıradan sunuculardan oluşan kümeler üzerinde büyük verileri işlemek amaçlı kullanılan java tabanlı dağıtık bir dosya sistemidir. Sıradan sunucu disklerini bir araya getirir ve büyük sanal bir disk oluşturur. Bu da çok büyük boyutlardaki dosyaların saklanmasını ve işlenmesini mümkün kılar. Hataya karşı dayanıklıdır.

HDFS, name node ve data nodelardan oluşur.


Kaynak
 

  • Name node: Master sunucularda veri depolama ile ilgili işlemlerin hesabını tutar. Veriye müdahale etmez, sadece data nodeları yönetir. Bunların yanı sıra HDFS üzerindeki dosyaların meta verilerini (kaydedilen blokların konumu, dosyaların boyutu, izinler, hiyerarşiler vb.) kaydeder ve HDFS'teki tüm blokların ve bu blokların bulunduğu nodeların kaydını tutar. Ek olarak dosya sistemi meta verilerinde gerçekleşen her değişikliği kaydeder. Örneğin HDFS'te bir dosya silinirse, name node bunu hemen EditLog dosyasına işler.
  • Data node: İşçi ya da köle düğümler olarak da adlandırılır. Veriler esas olarak data nodelar üzerinde tutulur. İstemciden gelen düşük seviyeli okuma ve yazma işlemleri burada gerçekleştirilir.

HDFS ile ilgili bilinmesi gereken birkaç yapı daha bulunmaktadır.

  • Bloklar: Hadoop, verileri HDFS üzerinde varsayılan değeri 128mb olan bloklar halinde tutar.
  • Replikasyon faktörü: Veriler dağıtılmış ortamlarda veri blokları halinde saklanır ve bu blokların kopyaları da oluşturulur. Varsayılan replikasyon faktörü üçtür. Bir data node arızalandığında name node, yeni replikalar için yeni data nodelar seçer, disk kullanımını dengeler ve data nodelara giden iletişim trafiğini yönetir.
  • Secondary name node: Ana name node yapısının çökmesi durumunda devreye girer. Name nodeun başına bir şey gelmesi durumunda secondary yapının bu görevi devralması biraz zaman alabilir. Transferin anlık gerçekleşebilmesi için HDFS'in High Availablity modu bulunmaktadır. Bu mod kapsamında name node görevini yaparken eş zamanlı olarak meta datasını da journal node ile paylaşıyor ve böylelikle name nodeun iptal olması durumunda secondary name node görevi anlık olarak devralabiliyor.

Kaynak: O'reilly

Hadoop YARN: Hadoop'un bir diğer temel bileşeni YARN, küme genelinde iş ve kaynak planlamasını düzenler. Eğer YARN olmasaydı, kaynak ihtiyacı olan çalışanlar ya da sunucular arasındaki öncelikler belirlenemez ve bu sebeple kaynakları kullananların ihtiyacı kadarını mı kullandıkları yoksa gerekenden çok daha fazla mı kaynak kullanıldığı takip edilemezdi. YARN bu anlamda kaynak tasarrufu sağlamaktadır.

YARN aynı zamanda Hadoop'a çeşitlilik de getirmiştir. Başlarda hem veriyi işleyen hem de kaynakları yönetmeye çalışan MapReduce varken, ikinci versiyonu ile birlikte MapReduce'dan bu işlemler ayırılıp kaynak yönetimi için YARN ortaya çıkmıştır. Bu sayede MapReduce sadece YARN'ı kullanarak verileri HDFS üzerinde dağıtık işleyen bir data processing framework olarak kalmıştır. YARN temel bileşenlerini listelemek gerekirse: 

  • Resource Manager - RM: Tüm uygulamalar arasındaki kaynak ataması ve yönetiminden sorumludur. İstemciden bir işleme talebi aldığında bunu bunu ilgili node managera iletir ve talebin gerçekleşmesi için kaynakları tahsil eder.
  • Node Manager - NM: Resource Manager ile iletişim kurar. Cluster üzerindeki işçi sunucuları çalıştırır ve her bir işçi sunucu üzerinde nabız, kaynak takibi, hata raporu gibi konuların takibini sağlar.
  • Application Master - AM: Her uygulamaya özel bir application master bulunur. İşçi sunucuda çalışır. Kalıcı değildir, geçici bir konteynır içinde çalışır. Uygulamanın çalışması için kaynakları node manager ve resource manager ile koordine eder.


Hadoop'un avantajları nelerdir?
Hadoop'un sunduğu belli başlı imkanları ve Hadoop'un avantajlarını özetlemek gerekirse:

  1. Dağıtık işleme: Günümüzde çok yoğun şekilde artan veri bu özelliği oldukça mühim kılmakta. Hadoop'ta veri kodun ayağına gelmez, aksine kod verinin ayağına gider ve sonuçları alır.
  2. İşlem gücü: Hadoop'un dağıtılmış bilgi işlem modeli ve büyük verileri hızlı bir şekilde işliyor. Ne kadar fazla bilgi işlem düğümü kullanılırsa performans o kadar artar.
  3. Hataya karşı dayanıklılık: Veriler donanım arızasına karşı korunur. Bir node çökerse, işler otomatik olarak diğer nodelara yönlendirilir. Tüm verilerin birden çok kopyası otomatik olarak saklanır ve işlemin başarısız olma ihtimali minimize edilir.
  4. Esneklik: Geleneksel ilişkisel veri tabanlarından farklı olarak, verileri depolamadan önce ön işlemeniz gerekmez. İstediğiniz kadar veri depolayabilir ve daha sonra nasıl kullanacağınıza karar verebilirsiniz. Buna metin, resim ve videolar gibi yapılandırılmamış veriler dahildir.
  5. Düşük maliyet: Açık kaynaklı yapısıyla ücretsizdir ve büyük miktarda veriyi depolamak için sıradan donanımları kullanır. Verileri işlemek için pahalı donanımlara güvenmek yerine, işlem gücünü birden çok makinede dağıtır.
  6. Ölçeklenebilirlik: Sisteme yeni nodelar ekleyerek performans artırmak ve daha hızlı veri işleyebilmek mümkündür.
     

Hadoop'un yarattığı zorluklar nelerdir?

  1. İteratif işlemler: Hadoop basit bilgi talepleri ve bağımsız birimlere ayrılabilen problemler için iyidir, ancak iteratif ve etkileşimli analitik görevler için etkili değildir.
  2. MapReduce yazımı: MapReduce oldukça komplike ve yazımı zor bir dil. Basit bir word count işlemi için bile yüzlerce satır kod yazmanız gerekebilir. Bu ihtiyaçtan dolayı Hive doğmuştur ve kişilerin SQL'e çok benzer sorgular ile veriyi işlemesi mümkün kılınmıştır.
  3. Yavaş işlem hızı: Hadoop'ta MapReduce, tüm işlemler için verileri diskten okur ve diske yazar. Bu disk işlemleri zaman alır ve tüm süreci yavaşlatır. Hadoop, Spark ve Flink'e kıyasla çok yavaştır.
  4. Küçük boyuttaki veriler için ideal değil: Yüksek kapasiteli tasarımı nedeniyle HDFS, küçük dosyaların rastgele okunmasını verimli bir şekilde gerçekleştiremiyor. Bu sebeple az miktarda veriye sahip kuruluşlar için önerilmiyor.
  5. Gerçek zamanlı veriyi işleyemez: Hadoop MapReduce ile gerçek zamanlı verileri işleyemez. Batch processing için uygundur. Spark bu soruna da çözüm getirmiştir ve gerçek zamanlı veriyi işleyebilir.


Tüm bu faktörler göz önüne alındığında büyük veri problemleri olan çoğu firmada iyisiyle kötüsüyle Hadoop, problemlerin önemli bir kısmına çare oldu ve olmaya da devam ediyor. Ancak object storageların ortaya çıkışı ile birlikte başlangıçtaki görkeminin azalmaya başladığını belirtmekte de fayda var. 

 

Büyük Veri hakkında daha geniş kapsamlı bilgiye erişmek ve kariyerinizde bilginizle fark yaratmak isterseniz Miuul'un sunduğu Data Engineer Path eğitimine göz atabilirsiniz.

 

Kaynaklar

Miuul topluluğunun bir parçası ol!

Abone ol butonuna tıklayarak Miuul'dan pazarlama ve haber içerikleri almayı onaylıyorum.