Miuul 101

Büyük Veri Dünyasının Küçük Sarı Fili: Hadoop

Büyük veri dünyasındaki o küçük sarı fili yakından tanıyor ve Hadoop'a giriş yapıyoruz.

“In pioneer days they used oxen for heavy pulling, and when one ox couldn’t budge a log, they didn’t try to grow a larger ox. We shouldn’t be trying for bigger computers, but for more systems of computers.” — Grace Hopper, a popular American Computer Scientist. (In reference to Big Data)

Artist: Ryan Hawthorne 

İnternet ortamı milenyum ile birlikte büyüdükçe, insanların aradıkları metin içeriklerini bulmalarına yardımcı olmak için arama motorları ve indexleri ortaya çıktı. Düzinelerce sayfadan milyonlarca sayfaya çıkan içerik hacmi de otomasyon ihtiyacını beraberinde getirdi. Bu sebeple web tarayıcıları ve arama motoru start-up'ları ortaya çıkmaya başladı.
Kaynak: SAS

Doug Cutting ve Mike Cafarella Nutch adında oluşturdukları web 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üre içerisinde 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 ve Google MapReduce ile Google File System adında iki makale çıkardı.

2006'da Cutting, Yahoo'ya katıldı ve Nutch projesini ve 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 (adını Cutting'in oğlunun oyuncak filinden almıştır).

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ülmektedir.


-
 

Tarihini öğrendiğimize göre tam olarak nedir bu büyük veri dünyasının küçük sarı fil oyuncağı?

Big Data ve Hadoop
Boyutu sistemimizin toplam depolama kapasitesinden daha büyük bir dosyamız olduğunu düşünürsek, bu dosyayı tek depolama alanında saklamamız mümkün olmazdı.

Basit bir şekilde Big Data tanımını da burada verebiliriz aslında: 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 diyebiliriz.
 

Peki ya Hadoop, Hadoop'un buradaki rolü nedir?
Hadoop 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. Kullanıcıların çok büyük boyutta (bir bilgisayarın kapasitesinden daha büyük) birden fazla dosyayı depolamasına ve bunları işlemesini mümkün kılan bir frameworktur.

Daha önceleri, kuruluşlar yüksek kullanılabilirlik elde etmek için pahalı donanımlar satın almak zorundaydı. Hadoop, donanıma dayanmadığı, bunun yerine yüksek kullanılabilirlik sağladığı ve hata noktalarına dayanıklılığı ile bu bağımlılığın üstesinden gelmiştir. Yani Hadoop bir donanım değil bir yazılımdır.
 

Hadoop Temel Bileşenleri

  • 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 bu iki fonksiyon kullanılır. (Map - Reduce) 2004 yılında Google tarafından duyurulan bu sistem 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 nodelara (işçi düğüm) dağıtır. Bu işler tamamlandıkça tekrar worker nodelar sonuçlarını master node'a gönderir.
    Reduce: Tamamlanan işler birleştirilerek sonuç elde edilir.

Aşağıdaki görselde bir Word Count için MapReduce aşamalarını gözlemleyebiliriz.


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 Node'lardan oluşur:


Kaynak

 

Name Node
- Master sunucularda veri depolama ile ilgili işlemlerin hesabını tutar.
- Veriye müdahale etmez, sadece Data Node'ları yönetir.
- HDFS üzerindeki dosyaların meta verilerini kaydeder, Örneğin: Kaydedilen blokların konumu, dosyaların boyutu, izinler, hiyerarşiler vb.
- HDFS'deki tüm blokların ve bu blokların bulunduğu nodeların kaydını tutar.
- Dosya sistemi meta verilerinde gerçekleşen her değişikliği kaydeder. Örneğin, HDFS'de bir dosya silinirse, Name Node bunu hemen EditLog'a kaydeder.

Data Node
- İşçi ya da köle düğümler de denilebilir.
- Veriler Data Nodelar üzerinde tutulur.
- İstemciden gelen düşük seviyeli okuma ve yazma işlemlerini gerçekleştirirler.

Bloklar
- Hadoop verileri HDFS üzerinde varsayılan değeri 128mb olan bloklar halinde tutar.

Replikasyon Faktörü
- HDFS verileri dağıtılmış ortamlarda veri blokları halinde saklar ve bu blokların kopyalarını da oluşturur. Varsayılan replikasyon faktörü 3'tür.

Bir Data Node arızalandığında Name Node, yeni replikalar için yeni Data Node'lar seçer, disk kullanımını dengeler ve Data Node'lara giden iletişim trafiğini yönetir.

Secondary Name Node
- Ana Name Node'un çökmesi durumunda devreye girer.

HDFS - High Available Mode
- Name Node'un başına bir şey gelmesi durumunda Secondary'nin bu görevi devralması biraz zaman alan bir olay. Bu transferin anlık olabilmesi için High Available Modu var.

Kaynak: Oreilly

Name Node görevini yaparken eş zamanlı olarak metadatasını da Journal Node ile paylaşıyor ve Name Node'un iptal olması durumunda Secondary Name Node görevi anlık devralabiliyor.

 

  • Hadoop 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 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, Versiyon 2'den sonra 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 Manager'a 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ı NodeManager(lar) ve ResourceManager ile koordine eder.

--


Hadoop'un Avantajları
Hadoop avantajlarını özetlemek gerekirse:

  • Dağıtık İşleme
    Günümüzde çok yoğun şekilde artan veri miktarı bu özelliği çok mühim kılmakta. Burada veri kodun ayağına gelmez, aksine kod verinin ayağına gider ve sonuçları alır.
     
  • İşlem gücü
    Hadoop'un dağıtılmış bilgi işlem modeli, büyük verileri hızlı bir şekilde işler. Ne kadar fazla bilgi işlem düğümü kullanılırsa performans o kadar artar.
     
  • Hataya karşı dayanıklı
    Veri 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 ihtimalini ortadan kaldırır.
     
  • Esneklik
    Geleneksel ilişkisel veritabanları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.
     
  • Düşük maliyetl
    Açık kaynak framework'u ü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.
     
  • Ölçeklenebilirlik
    Sisteme yeni node'lar ekleyerek performans artırmak ve daha hızlı veri işleyebilmek mümkündür.

     

Hadoop zorlukları nelerdir?

  • İteratif işlemler
    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.
     
  • MapReduce yazımı
    MapReduce çok komplike ve yazması zor bir dil. Basit bir word count işlemi için bile 100lerce 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.
     
  • 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 çok yavaşlatır. Hadoop, Spark ve Flink'e kıyasla çok yavaştır.
     
  • 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 önerilmez.
     
  • Gerçek Zamanlı veriyi işleyemez.
    Hadoop Map-Reduce 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örleri göz önüne aldığımızda büyük veri problemleri olan çoğu firmada iyisiyle kötüsüyle Hadoop tüm bu problemlere çare oldu ve olmaya da devam ediyor, fakat Object Storage'ların ortaya çıkması ile birlikte başlangıçtaki görkeminin azalmaya başladığını da belirtmemizde fayda var.

Bu yazımda büyük veri dünyasının o küçük sarı fil oyuncağını ve bileşenlerini yakından tanıdık, sırada ise ekosistemin diğer üyeleri var.

Başka yazılarda görüşmek üzere!
 

Kaynaklar: I, II, III

Parametre optimizasyonuna pratik bir çözüm: Optuna

Cem İstanbullu

Herkes Ona Bağlanır, Ondan Enerji Alır, Büyük Ağaç: LightGBM

Cem İstanbullu

Matrisler

Nehir Günce Daşcı

SON 101'LER

GİRİŞ

Aşağıya kaydolduğunuz e-postayı girin. Şifrenizi sıfırlamanız için size bir bağlantı göndereceğiz.

Giriş Ekranına Dön
Şifre sıfırlama talimatları
adresine gönderildi.