HDTeknoHaber.com Ekibi olarak Hadoop ile ilgili bu yazı serisini hazırladık.
Hadoop nedir? Hadoop hangi alanlarda kullanılır? Hadoop kullanımına örnek? Hadoop’ u hangi firmalar kullanıyor?
Tüm bu sorularınızına cevap bulacağınız yazı serisini okuyabilirsiniz. Yorumlarınızı – sorularınızı yorum kısmında belirtmenizi rica ederiz.


HADOOP


MapReduce ve HDFS mimarilerini kullanarak bir işi birden fazla makinaya dağıtarak en kısa sürede tamamlamayı hedefleyen Java ile geliştirilmiş açık kaynak kodlu bir kütüphanedir. En önemli özelliklerinden biri herhangi bir sunucu da çalışabilmesidir. Aynı zamanda herhangi bir sunucu da problem olduğunda işi başka bir sunucuya yönlendirerek sorunsuz tamamlanmasını sağlar.
Kısaca açıklamak gerekirse; sıradan sunuculardan oluşan bir Cluster üzerinde Big Data işlemek için HDFS dağıtık dosya sistemini ve MapReduce özelliklerini bir araya getiren yazılımdır. Üzerinde tutarlı, ölçeklenebilir ve dağıtık çalışan projeler geliştirmeye imkan sağlayacak bir mimaridir. Hadoop un güçlü mimarisinin temelinde işlenen dosyaların her zaman ilgili Node dan okunması sayesinde trafik yaratmaması ve birden fazla işi aynı anda işleyerek doğrusal ölçeklendirme yapması yatar. Hadoop Cluster ındaki Node sayısı arttıkça performansı da paralelinde artar, doğrusal bir ilişki vardır.
Aşağıda MapReduce ve HDFS den başlıklar altında ayrıntılı şekilde bahsedilecek.


MAPREDUCE


Dağıtık mimari üzerinde çok büyük verilerin kolay bir şekilde analiz edilebilmesini sağlayan sistemlerden biridir. 2004 yılında Google tarafından duyurulan bu sistem, 1960?lı yıllarda geliştirilen fonksiyonel programlamadaki MAP ve REDUCE fonksiyonlarını kullanarak verileri işler.
Map aşamasında analiz edilen veri içerisinden almak istediğimiz veriler çekilir, Reduce aşamasında ise bu çektiğimiz veri üzerinde istediğimiz analiz gerçekleşir.
Daha iyi anlayabilmek için aşina olduğumuz RDBMS ile karşılaştırmamız gerekirse, Map aşaması SELECT cümlesi ile ilgili alanları seçmemize ve WHERE ile gerekli sınırlamaları yapmaya, Reduce aşaması ise COUNT, SUM, HAVING gibi veriler üzerinde hesaplama yapmamıza benzetilebilir.
Map aşamasında Master Node verileri alıp daha ufak parçalara ayırarak Worker lara dağıtır. Worker lar bu işleri tamamladıkça sonucunu Master Node lara döner.
Reduce aşamasında ise tamamlanan işler işin mantığına göre birleştirilerek sonuç elde edilir.
Map aşamasındaki işlemler birbirinden bağımsız olarak gerçekleşebildiği için paralel olarak çalışabilir. Bu sayede büyük miktardaki veri Cluster içerisindeki Node lar tarafından hızlı bir şekilde okunabilir. Cluster da yer alan Node sayısı arttıkça işlemlerde hızlanır. Reduce aşamasında ise aynı Key e sahip veriler paralel olarak işlenebilir.
Kısaca, çok büyük verileri işleyebilmek için yüksek donanıma sahip sunucular kullanmaya alternatif olarak, sıradan sunucularla (Commodity Hardware) oluşturulan bir Cluster üzerinde MapReduce yardımıyla aynı işlem hatta daha etkin biçimde işleyebilir. Google ?ın diğer arama motorlarına fark atmasını sağlayan etkenlerden biride MapReduce algoritmasıdır. Sosyal medyanın vazgeçilmez olduğu bu dönemlerde Facebook, Twitter, Linkedin gibi şirketlerde topladıkları Big Data yı işlemek için bu sistemi kullanmaktadırlar.
Son iki yılda web üzerinde üretilen verilerin geçen on yıldan çok daha fazla olduğunu düşünürsek ilerleyen zamanlarda MapReduce sisteminin daha çok değerleneceğini kestirebiliriz. Bilindik veritabanı sistemleriyle Petabyte seviyesindeki verilerin işlenebilmesi milyon dolarlık donanım ve yazılımla mümkün iken MapReduce sistemi buna ucuz yollu ciddi alternatif oluşturuyor.
Hadoop MapReduce ; JobTracker ve TaskTracker süreçlerinden oluşur. JobTracker yazılan MapReduce programının küme üzerinde dağıtılarak çalıştırılmasından sorumludur. Ayrıca dağıtılan iş parçacıklarının çalışması sırasında oluşabilecek herhangi bir problemde o iş parçacığının sonlandırılması ya da yeniden başlatılması da JobTracker ın sorumluluğundadır.
TaskTracker, DataNode ların bulunduğu sunucularda çalışır ve JobTracker dan tamamlanmak üzere iş parçacığı talep eder. JobTracker, NameNode un yardımıyla DataNode un lokal diskindeki veriye göre en uygun Map işini TaskTracker?a verir. Bu şekilde verilen iş parçacıkları tamamlanır ve sonuç çıktısı yine HDFS üzerinde bir dosya olarak yazılarak program sonlanır.
Aşağıda MapReduce ve HDFS başlıklar altında incelenmiştir.


JOB TRACKER


  •   MapReduce işlerini takip eder.
  •   NameNode gibi tektir.
  •   İşlemciler MapReduce işlerini JobTracker a gönderir.
  •   İşleri diğer düğümlere dağıtır.
  •   İş parçacıklarının durumunu takip eder.
  •   Bir iş parçacığında sorun olursa onu sonlandırıp yeni bir tanesini çalıştırır.
  •   Gerekli durumlarda aynı işi yapan birden fazla iş parçacığı çalıştırabilir.

TASK TRACER


  •   MapReduce işlemlerini çalıştırır.
  • DataNode ile aynı düğümde bulunur.
  •   JobTracker tarafından gönderilen iş parçacıklarından sorumludur.
  •   Map ve Reduce işlemlerini yapıp sonucu Job Tracker a iletir.

HADOOP DISTRIBUTED FILE SYSTEM (HDFS)


Bilindik dosya sistemlerdeki en büyük sorun veriye erişim hızıdır.
Geçtiğimiz yıllarda veriyi sakladığımız disklerin boyutlarının artmasına rağmen; transfer hızlarında aynı oranda artışlar olmadı. Terabyte boyutundaki diskler standart haline gelirken transfer hızları da 100MB/s seviyesinde kaldı. Bu da TB boyutundaki bir diskten veri okumamızın saatler sürebileceğini gösterir.
Buna çözüm olarak aynı anda birden fazla diskten okumanın işe yarayacağı düşünülebilir. 10 diskimizin olduğunu düşünürsek ve verilerimizi bu 10 diske paylaştırırsak; her disk toplam verimizin %10 unu tutmuş olur. Bütün diskleri aynı anda okursak da toplam geçecek zamanın 1/10 u kadar sürede işimizi tamamlarız. HDFS de bu mantıkla çalışarak birden fazla büyük boyutlu dosya üzerinde okuma imkanı sağlar.
HDFS; dağıtık yani birden fazla bilgisayar üzerinde çalışan bir dosya sistemidir ve amacı uygulama verilerinin kaydedilmesidir.
Birden fazla sunucu üzerindeki dosya sistemlerini birbirine bağlayarak büyük boyutlara sahip tek bir sanal dosya oluşturur. Yapısı gereği performans ve yüksek erişilebilirlik konusunda gelişmiş özelliklere sahiptir.
HDFS NameNode ve DataNode‘lardan oluşmaktadır ve Node ların her zaman %100 çalışamayacağını kabul ederek ve kesinti anında veri güvenliğini sağlayabilmek için verileri birden fazla Node üzerine kopyalar.
NameNode master işlem olarak veri gruplarının sunucular üzerindeki dağılımından, kaydedilmesinden, silinmesinden, sorun meydana geldiğinde yeniden oluşturulmasından ve her türlü dosya erişiminden sorumludur.
HDFS üzerindeki tüm dosyalar hakkındaki bilgiler NameNode tarafından saklanır ve yönetilir. Her kümede yalnızca bir adet NameNode olabilir.


NAME NODE


  •   Master düğümdür
  •   Her türlü dosya işleminden sorumludur.
  •   Veri değil sadece metadata saklar
  •   Her zaman ayakta olmak zorundadır
  •   Name node çalışmazsa ise tüm küme çalışmaz hale gelir.
  •   Hızlı erişim açısından verileri hafızada tutar.
  •   Çökmeye karşı diske bilgileri senkronize eder.

DataNode un görevi verileri saklamaktır.
Her DataNode kendi yerel diskindeki veriden sorumludur. Ayrıca diğer DataNode lardaki verilerin yedeklerini de saklar. DataNode lar küme içerisinde birden fazla olabilir.


DATA NODE


  •   Verilerin bulunduğu düğümdür.
  •   Blok halinde dosyaları saklar.
  •   Yedekli olduğu için kapanması halinde veri kaybı yaşanmaz.
  •   Veriler bu düğümlerde olduğu için analiz işlemleri de bu düğümlerde çalışır.
  •   Küme içerisinde birden fazla olmalıdır.
  •   4000+ düğüme kadar büyüyebilir.
  •   Sayıları arttıkça performansı da lineer olarak artar.

Hadoop un çalışmasını bir örnekle açıklayacak olursak:


Elimizde bir dosya olsun. Dosyanın her satırında bir araba markası ismi, ve o markadan kaç adet olduğu yazılı olsun . Amacımız her araba için toplam sayıyı bulmak.

  • Opel : 5
  • Fiat: 3
  • Porsche : 9
  • Opel : 10
  • Fiat: 9
  • Opel : 15
  • Volkswagen: 13
  • Porsche: 1
  • Mercedes : 16
  • Volkswagen: 8

Burada key değerleri model isimleri olacak. Diyelim ki Hadoop kümemizde 2 Node var, ve üstteki dosyayı Hadoop?a verdik.
Hadoop bu dosyayı iki eşit parçaya bölecektir (Key değerlerine hiç bakmadan) HDFS sistemi sayesinde iki farklı diske yazacaktır. Diyelim ki bölünme tam ortadan yapıldı:

  • Opel : 5
  • Fiat: 3
  • Porsche : 9
  • Opel : 10
  • Fiat: 9
  • Opel : 15
  • Volkswagen: 13
  • Porsche: 1
  • Mercedes : 16
  • Volkswagen: 8

Her node, kendi içinde Map yaparken, benzer key değerlerini aynı toplama yazacak.
1. Bölüm

  • Opel : 15
  • Fiat : 12
  • Porsche : 9

2. Bölüm

  • 2. Bölüm
  • Opel : 15
  • Volkswagen : 21
  • Porsche : 1
  • Mercedes: 16

Bundan sonra Reduce kısmında her bölümdeki key ler bir de kendi aralarında toplanıyorlar. Böylece sonuç:

  • Opel: 30
  • Volkswagen: 21
  • Porsche:10
  • Fiat: 12
  • Mercedes: 16

Hadoop giderek bir endüstri standardı olmaya başlıyor.
Mesela Facebook Hadoop kullanarak kullanıcı davranışlarının analizini yapıyor (50 milyon kişi ve ilişkileri) ve sosyal reklamların etkisini ölçüyor.
Geçtiğimiz aylarda New York Times bilgi işlem ekibi Hadoop kullanarak 150 yıllık arşivindeki 11 milyon makaleyi dijitalleştirdi ve aranabilir hale getirdi.
Normalde aylar sürebilecek bilgi işleme bir kaç günde bitirildi. Amazon ile Hadoop kullanarak EC2 (dağııtmlı işlemci) ve S3 (dağıtımlı depolama) servislerinden faydalanabilirsiniz.


Hadoop Kullanan Firmalara örnekler:


  •   EBay
  •   ARA.COM.TR
  •   Facebook
  •   Last.fm
  •   Also used for large scale audio feature analysis over millions of tracks
    Yahoo!
Not: Bu yazı serisi hazırlanırken devveri.com’ dan faydalanılmıştır. 

1 YORUM

CEVAP VER

Lütfen yorum giriniz!
Lütfen isminizi giriniz