Hadoop MapReduce Mimarisi

Bu bölümde Hadoop MapReduce  Mimarisi hakkında bilgiler vereceğiz

cloudera
cloudera

Verilerin devasa boyutları ulaşması nedeniyle, verileri saklamak için Hadoop HDFS(Hadoop Distribted File System) geliştirilmiştir.Diğer taraftan veri boyutlarının artması nedeniyle, büyük verileri hızlı bir şekilde analiz etme ihtiyacı doğmuştur

Büyük verileri tek makinede analiz etmeye çalışırsak analiz süresi belirli bir değerin altına inmeyecektir.Makinenin performansını  yükseltmek, kod içerisinde optimizasyonlar yapmak uygulamayı hızlandırsa da istediğimiz sonucu veremez

Bu durumda verileri birden fazla makinede işleyebileceğimiz bir paralel işleme modeli kullanmamız gerekir

paralel-işlem
paralel-işlem

Hadoop projesinde, verileri birden fazla makinede paralel olarak işlememizi sağlayan MapReduce kütüphanesi geliştirilmiştir

Şimdi basit bir veri üzerinde bu işlemlerin nasıl yapıldığını inceleyelim

National Climatic Data Center  üzerinden saatlik olarak toplanan hava durumu verilerini alabiliriz.Sensör sayısı fazla olduğu için toplanan veri miktarı fazladır ve yapacağımız analizler tek makine üzerinde  azımsanamayacak kadar vakit alır

Veri yapısı şu şekildedir.Bu veri içerisinde sıcaklık,tarih,basıç,rüzgar yönü gibi çok farklı ölçümler bulunmaktadır.Şimdilik yıl ve sıcaklık bilgisi üzerinden analizlere devam edeceğiz

data
data

Bu veri üzerinde “yıllara göre en yüksek sıcak” gibi bir analiz için yıl ve sıcaklık bilgisini ayrıştırmamız gerekir

yıl-sıcaklık
yıl-sıcaklık

Şimdi MapReduce işleminin mantığını inceleyelim.Bu örnekte yıllara göre en yüksek hava sıcaklığını bulan bir MapReduce uygulaması üzerinden ilerleyeceğiz

Öncelikle alınan veriler daha küçük bloklara ayrılır. (128 MB , 64 MB). Bu veri blokları farklı makinelerdeki map metodlarına gönderilir.

map-split
map-split

Daha sonra map metodları gelen data üzerinde filtreleme yaparak yalnızca ihtiyacı olan alanları alır.Bu örnekte yıl ve sıcaklık bilgisi oluşturulur

Map metodundan alttaki sonuç üretilir

map-output
map-output

Map işleminden sonra hesaplamanın doğru bir şekilde yapılması için aynı key değerine sahip kayıtlar aynı reducer’lara yönlendirilir.Bu işleme shuffle denir.

map-shuffle
map-shuffle

Daha sonra reducer aldığı kayıtlar üzerinden en yüksek sıcaklığı bulmak için liste içerisinde dolaşır ve en yüksek sıcaklığı bulur

reduce-outout
reduce-outout

Genel resim alttaki gibidir

map-reduce
map-reduce

Şimdi bu işlemleri java ile örneklendirelim .Geliştirdiğimiz kodları Cloudera üzerinde çalıştıracağız


Java ile Maven projesi oluşturalım. pom dosyası şu şekilde olacaktır


Mapper sınıfı aldığı verilerden yıl ve sıcaklık alanlarını filtreleyecektir.


Reducer sınıfı ise gelen değerlerden en yüksek sıcaklığı hesaplayacaktır


Mapper ve Reducer sınıflarını çalıştıran ve çeşitli konfigurasyonları girmemizi sağlayan ana programımız şu şekilde olacaktır

  • inputPath parametresi ile analiz edeceğimiz dosyaların HDFS dizinini veriyoruz
  • outputPath parametresi ile sonuçları yazacağımız HDFS dizinini veriyoruz
  • waitForCompletion metodu ise analiz bitmeden main programının sonlanmaması için çağırılır


Uygulama Maven ile derleyip oluşan map-reduce-1.0.jar dosyasını Cloudera sanal makinası içerisine kopyalayalım

Ayrıca şu adres üzerinden örnek verileri indirelim.Örnek verileri Cloudera sanal makinası içerisine kopyalayalım

cloudera
cloudera

hdfs üzerinde input ve output dosyarının kopyalanacağı 2 adet klasör oluşturalım


Örnek verilerimizi /user/mapreduce_input altına kopyalayalım

map-input
map-input


Uygulamayı çalıştırabiliriz

Burada ilk parametre inputPath ikinci parametre ise outputPath klasörünü belirtmektedir

map-log
map-log

Uygulama çalıştıktan sonra /user/mapreduce-output altından sonuçları görebiliriz

mapreduce-result
mapreduce-result
mapreduce-result-1
mapreduce-result-1

Örnek verilerde sadece 1990 yılının verisini aldığım için sonuç 1990 için 18.4 derece çıktı

Bu bölümde Hadoop MapReduce mimarisi hakkında genel bilgiler verip örnek MapReduce uygulaması geliştirdik.Diğer big data yazıları için sitemizi takip edebilirsiniz


Bizi takip edebileceğiniz sosyal medya platformları

–> Facebook –> Linkedin  -> Twitter

Sorularınız için Big Data grubumuz (-> Facebook group)

Online eğitimler için sitemizi takip edebilirsiniz

 

Please follow and like us:

Yazar: serkan sakınmaz

serkansakinmaz@gmail.com

“Hadoop MapReduce Mimarisi” için 1 yorum

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir