2000'li yıllarla birlikte internet gelişiyor ve kullanıcıların aradıkları metin içeriklerini bulmalarına yardımcı olmak için arama motorları ortaya çıkıyordu. Düzinelerce sayfadan milyonlarca sayfaya çıkan içerik hacmi otomasyon ihtiyacını beraberinde getirdi. Bu nedenle internet tarayıcıları ve arama motoru start-up'ları ortaya çıkmaya başlamıştı bile.
Kaynak: SAS
Doug Cutting ve Mike Cafarella, oluşturdukları Nutch adındaki 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ırada 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. Google, MapReduce ile Google File System başlıklarında iki makale yayınladı.
2006'da Doug Cutting, Yahoo'ya katıldı ve Nutch projesi ile 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. Hadoop adını Cutting'in oğlunun oyuncak filinden alıyordu.
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ülmekte.
Hadoop'un geçmişine kısa bir bakış attık. Peki ama nedir bu büyük veri dünyasının küçük sarı oyuncak fili?
Kısaca 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 diyoruz. Hadoop ise 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. Hadoop, kullanıcıların çok büyük boyutlardaki birden fazla dosyayı depolamasını ve bu dosyaları işlemesini mümkün kılan bir framework olarak düşünülebilir.
Geçmişte şirketler yüksek kullanılabilirlik elde etmek için pahalı donanımlar satın almak zorundaydı. Hadoop ise donanıma dayanmayarak yüksek kullanılabilirlik sağladığı ve hata noktalarına dayanıklılığı ile bu bağımlılığın üstesinden geliyor. Kısaca Hadoop bir donanım değil, yazılım ve bu yazılımın bazı temel bileşenlerini tanımak gerekiyor.
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 map ve reduce isimli iki fonksiyon kullanılır. 2004 yılında Google tarafından duyurulan bu sistemde aslen 1960'lı yıllarda geliştirilen fonksiyonel programlamadaki map ve reduce fonksiyonlarından esinlenmiştir.
Görselde bir word count uygulaması için yapılan MapReduce işleminin aşamaları yer alıyor.
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 nodelardan oluşur.
HDFS ile ilgili bilinmesi gereken birkaç yapı daha bulunmaktadır.
Kaynak: O'reilly
Hadoop YARN: Hadoop'un bir diğer temel bileşeni 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 ve 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, ikinci versiyonu ile birlikte 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:
Hadoop'un avantajları nelerdir?
Hadoop'un sunduğu belli başlı imkanları ve Hadoop'un avantajlarını özetlemek gerekirse:
Hadoop'un yarattığı zorluklar nelerdir?
Tüm bu faktörler göz önüne alındığında büyük veri problemleri olan çoğu firmada iyisiyle kötüsüyle Hadoop, problemlerin önemli bir kısmına çare oldu ve olmaya da devam ediyor. Ancak object storageların ortaya çıkışı ile birlikte başlangıçtaki görkeminin azalmaya başladığını belirtmekte de fayda var.
Büyük Veri hakkında daha geniş kapsamlı bilgiye erişmek ve kariyerinizde bilginizle fark yaratmak isterseniz Miuul'un sunduğu Data Engineer Path eğitimine göz atabilirsiniz.
Kaynaklar