Hadoop Nedir? Bileşenlerini Tanımaya Başlayalım 1 (HDFS,MapReduce)

1.Hadoop Nedir?

Birol EMEKLİ
Devops Türkiye☁️ 🐧 🐳 ☸️
4 min readDec 23, 2020

--

Hadoop, MapReduce programlama modelini kullanan JAVA programlama dili ile geliştirilmiş popüler, açık kaynaklı bir Apache projesidir. Apache açık kaynak lisansı aracılığıyla kullanılabilen bu yazılımın temelinde düşük maaliyet, hata toleransı, yük dengeleme, veri dağıtımı ve işlenmesi gibi yöntemlerden sorumlu olarak güvenli ve ölçeklenebilir bilgi işlemeye olanak sağlar.

1.1. Hadoop Bileşenleri

  • HDFS
  • MapReduce
  • HBase (Başka bir makalede link)
  • Pig (Başka bir makalede link)
  • Hive (Başka bir makalede link)
  • ZooKeeper (Başka bir makalede link)

2. HDFS (Hadoop Distributed File System- Hadoop Dağıtılmış Dosya Sistemi)

Hadoop’un temel yapı taşlarından birisi olan HDFS, hataya dayanıklı, güvenilir ve ölçeklenebilir veri depolama yapabilen, kendi kendini onaran dağıtılmış bir dosya sistemidir. Dağıtık yapıyı desteklemesinden ötürü depolama ve hesaplama ile ilgili işlemlerde MapReduce ile ilişkili olarak çalışmaktadır. Basit sunucuların disklerini bir araya getirerek bile büyük bir disk alanı oluşturabilmektedir ve daha uzun maaliyetli bir çözüm ortaya sunmaktadır.

HDFS her türdeki veriyi kabul etmektedir ve yüksek bant genişliği sağlayarken verileri otomatik olarak optimize etmektedir. HDFS’in en önemli özelliklerinden birisi ise hata toleransıdır. Dağıtılmış dosya sistemindeki düğümlerden herhangi birisinde arıza olması durumunda, verinin aktarımını sağlaması ve hizmetin devam etmesine olanak sağlamaktadır. Bu yapısı Raid yapısına benzerlik göstermektedir ve veri kaybının önüne geçmektedir.

https://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/images/hdfsarchitecture.png

HDFS dosya sistemi meta verilerini ve uygulama verilerini ayrı olarak depolamaktadır. Meta verilerini NameNode olarak adlandırılan özel bir sunucuda, uygulama verilerini ise DataNode olarak adlandırılan diüer sunucularda depolamaktadır. Tüm sunucular birbirine TCP tabanlı protokoller ile iletişim sağlamaktadır.

DHFS’deki DataNode olarak adlandırılan düğümler, Raid yapısı kullanmazlar. Bunun yerine Google Dosya Sistemindeki (GFS) dosya içeriği güvenirliliği için birden çok DataNode içerisinde çoğaltırlar.

2.1. NameNode

NameNode, dosya sistemi hakkındaki meta verilerini fsimage adlı bir dosyada depolar ve yönetir. İstemcilere okuma/yazma isteklerinde daha hızlı erişim sağlamak için ana bellekte alınırlar. NameNode, dosyaların bloklara nasıl bölüneceğini yönetip ve denetler. Dosyanın parçarlarının ve kopyalarının hangi düğümler üzerinde olduğu bilgisi burada barınmaktadır.

2.2. DataNode

NameNode tarafından kontrol edilen, HDFS’nin birincil depolama öğeleridir. Birden çok DataNode olabilmektedir. DataNode’lar üzerinde her blok kopyası, ana bilgisayar üzerinde iki dosyayla temsil edilir. İlk dosya verinin kendisini içermektedir, ikinci dosyada ise blok verilerin sağlama toplamları ve bloğun oluşturma damgası dahil olmak üzere meta verileri içermektedir.

Başlangıçta NameNode bir el sıkışma (handshake) gerçekleştirilir. Bu aşamada DataNode düğümünün ad alan (namespace) kimliği ve yazılım sürümleri kontrol edilir. Kümedeki tüm düğümler aynı ada alanına sahiptir. Farklı ad alanına sahip düğümler kümeye katılamayacaklardır ve böylece dosya sisteminin bütünlüğü korunmuş olacaktır.

NameNode’lar DataNode’lar ile sinyallar aracılığıyla haberleşirler.

2.3 HDFS İstemcisi

Bir uygulama bir dosya okuduğunda, HDFS istemcisi ilk olarak NameNode ile iletişim kurarak, okumak istediği dosya bloğunun kopyalarının barındırıldığı DataNode’ların listesini ister. Daha sonra herhangi bir DataNode ile iletişim kurarak, istenilen bloğun transferini talep eder.

Bir uygulama dosya yazmak istediğinde ise ilk olarak NameNode tarafından ilk bloğun replikalarını barındırmak için bir DataNode seçmesini ister ve istemci verileri gönderir.

3. MapReduce

Google tarafından geliştirilmiş dağıtık programlama modeli olan MapReduce, büyük veri kümelerini performanslı bir şekilde paralel olarak işleyen ve analiz eden uygulamalara için kullanılır.

https://techvidvan.com/tutorials/wp-content/uploads/sites/2/2020/03/apache-hadoop-mapreduce.jpg

İlk olarak Map(haritalama) aşaması gerçekleşir veriler filtrelenir ve sonrasında sonuç elde etme için Recude(indirgeme) işlemine geçiş yapılır.

Bir Map işlemi tamamlandığında Recude işlemine geçiş yapabilabilmektedir. Tüm Map işlemlerinin beklenmesine gerek duyulmamaktadır.

https://cdn.journaldev.com/wp-content/uploads/2015/08/hadoop1.x-components-architecture.png

HDFS’e benzer şekilde MapReduce, JobTracker ana düğümde ve TaskTracker her uç düğümde çalışmaktadır.

3.1. JobTracker

NameNode üzerinde çalışır ve DataNode üzerideki TaskTracker tarafından yürütülen MapReduce görevlerini izler. Ana düğüme istek gönderen uygulama, işi JobTracker’a gönderir ve daha sonra JobTracker işlenecek verilerin HDFS’teki konumunu öğrenmek için NameNode ile iletişime geçer. Konumunu öğrendikten sonra JobTracker, ilgili düğümlerdeki TaskTracker’i bulur ve işleri bağımlı düğümlere iletir. TaskTracker’lar işlemleri yürütürken JobTracker’a periyodik olarak sinyal gönderir ve işin yürütülüp yürütülmediğinden haberdar olmaktadır.

Belirli bir süre uç düğümlerde çalışan TaskTracker tarafından sinyal alınamazsa, iş başka bir TaskTracker tarafından tekrar çalıştırılır. JobTracker çalışmazsa tüm yürütme işlemleri durdurulacaktır. Bu ise Hadoop MapReduce için bir zayıf nokta olarak kabul edilmektedir.

3.2. TaskTracker

DataNode üzerinde çalışırlar. JobTracker tarafından gönderilen işleri kabul ederler ve MapReduce işlemlerini yürütürler. TaskTracker MapReduce işlemi işle alakalı işlemlerin sürekliliğini sağlar ve JobTracker’a hayatta olduğuna dair sinyaller gönderir.

--

--