Big Data ve Hadoop
Büyük Veri (Big Data): Toplumsal medya paylaşımları, ağ günlükleri, bloklar, fotoğraf, video, log dosyaları gibi değişik kaynaklardan toparlanan, tek bir sunucuya depolanamayan, dinamik ve yapılandırılmamış veridir. Bu verileri toplayarak bunlardan anlamlı bir bütün oluşturmak ve bu verilere göre bir karar vermektir. Günümüz veri tabanlarından farkı ise çok daha çeşitli veriye anında ulaşıp çok daha hızlı analizler yapmaktır.
Büyük veri kavramındaki en büyük zorluk ve vakit alan kısım, verinin büyük olmasından çok, veri kaynaklarını tespit edip yapılandırılmamış veriyi belli bir forma sokma, ön işlemden geçirme işlemidir.
Veriler yapılandırılmış (Structured) ve yapılandırılmamış (Unstructured) olarak 2’ye ayrılır:
Yapılandırılmış Veri: Bir veri modelini baz alan, veri türleri kesin olan, kısıt ve kurallara sahip, genelde ilişkisel veri tabanları veya çalışma sayfalarını (Spreadsheets) örnek olarak gösterebileceğimiz verilerdir. (Fatura, sınav sonuçları vs.)
Yapılandırılmamış Veri: Veri ise fotoğraflar, videolar, Word veya PDF dosyaları, e-mailler, blog, tweet, Facebook gönderileri gibi çok çeşitli ve tek bir sınıflandırma yapılamayacak çeşitlilikteki verilerdir. Büyük veri, büyük çoğunlukla yapılandırılmamış veriden oluşur.
Büyük Veri Teknolojisi: Büyük veri teknolojisinde çoklu paralel sunucular üzerinde dağıtık olarak büyük veriyi işleyen yazılıma Hadoop denir. Hadoop, Java dili ile geliştirilmiş açık kaynak kodlu bir yazılımdır. Hadoop’un gücü hesaplama işlemini birden çok sunucuya dağıtıp aynı anda hepsinde işlem yaparak süreyi büyük ölçüde azaltmasından kaynaklanır.
Dağıtık Sistemler: Hafıza ve saati paylaşmayan işlemciler kümesidir. Her işlemci kendisine ait yerel hafızaya sahiptir ve işlemciler birbirleriyle iletişim ağları ile haberleşirler. Dağıtık sistemler genelde merkezi sistemlere göre daha karmaşıktırlar ve sistem yönetimi için daha fazla uğraş gerekir. Çoklu işlemci mimarileri en basit dağıtık sistem modelidir.
* Dağıtık sistem bir ağ üzerine kuruludur ve ağ üzerinde gerçekleşen işlemler tek ve bütünleşmiş bir yapı olarak görülmektedir (Transparency).
* Dağıtık sistemlere, sunucu-istemci, peer-to-peer (noktadan noktaya) modelleri örnek gösterilebilir.
Hadoop: Sıradan sunuculardan oluşturulan kümeler üzerinde büyük hacimli verilerin dağıtık dosya sistemi ile incelenmesine olanak sağlayan açık kaynaklı bir yapı. Üzerinde tutarlı, ölçeklenebilir ve dağıtık çalışan projeler geliştirmeye imkan sağlayacak bir çatı. Hadoop kümesindeki düğüm sayısı arttıkça performans da artmaktadır.
Hadoop, HDFS ve Map-Reduce olmak üzere iki temel kısımdan oluşur.
Hadoop mimarisinin en alt katmanında HDFS (Hadoop Distributed File System) dosya sistemi bulunur. HDFS, hadoop kümesinde verileri düğümler boyunca kaydetmektedir.
HDFS Özellikleri
HDFS, çok büyük boyutlu dosyalar üzerinde okuma işlemi (streaming) imkanı sağlar, ancak rastlantısal erişim (random access) özelliği bulunmaz.
HDFS mimarisi özel düğümlerden oluşmaktadır.
Bunlar;
1-) NameNode: Süreç olarak blokların sunucular üzerindeki dağılımından, oluşturulmasından, silinmesinden, bir blokta sorun meydana geldiğinde yeniden oluşturulmasından ve her türlü dosya erişiminden sorumludur.
2-) DataNode: HDFS için depolama blokları sunar.
Splitting: Veriler 64 MB’lık bloklara ayrılır. Bu değer değişebilir. Mapping: Burada her bir kelime key (Word) ve value (1) şeklinde bölümlere ayrılır.
Shuffling: Map işleminden çıkan sonuçları Reducer’a yönlendirir.
Reducing: Gelen sonuçlar üzerinden toplama işlemi yapılır ve sonuçlar istenilen kaynaklara yazılır.
MapReduce: HDFS üzerindeki büyük dosyaları verileri işleyebilmek amacıyla kullanılan bir yöntemdir.
MapReduce, JobTracker ve TaskTracker süreçlerinden oluşur.
JobTracker: MapReduce işlerinin küme üzerinde dağıtılıp ç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: Job’lardan iş parçacığı talep eder. JobTracker ile iletişim kurarak verinin lokasyonunu öğrenir. DataNode’un lokal diskindeki veriye göre uygun map işini TaskTracker’a verir. İş parçacıklarını tamamladıktan sonra JobTracker’a iletir. Bu şekilde iş parçacıkları tamamlanır ve sonuç çıktısı HDFS üzerinde bir dosyaya yazılarak işlem sonlanır.