Hadoop Nedir?
Günümüzde bilgisayar sistemleri oldukça genişlemekte olup insanların da yine ihtiyaçlarını karşılayacak biçimde daha da faaliyetleri büyük alanlara yayılmaktadır. Bu anlamda veri bileşenlerinin de yine son derece kaliteli ve bir o kadar da iyi biçimde saklanması adına büyük veri tabanları geliştirilmiştir. Bu kapsamda Hadoop da önemli bir yere sahip olan bir kütüphanedir. Nitekim Hadoop, büyük bilgi bileşenleri ile birlikte birden çok mekanizma tarafından eş zamanlı olacak biçimde işlem yapmasına imkan vermekte olan Java ile yazılmış açık kaynak kodlu bir kütüphanedir. Buna göre Apache Hadoop çok büyük oranda verileri ve bu veri hesaplamalarını içerisinde kapsayan sorunları çözüme kavuşturmaları açısından birden fazla bilgisayar ağı vasıtasıyla kullanılabilmesini basitleştirmekte olan bir programdır. Mapreduce programlama şekli ile kullanılmakta olan büyük verilerin dağıtılmış bir model üzerinde depolanmasının sağlanması ve işlenmesi amacıyla bir yazılım kapsamında uzlaşma sağlamaktadır. Bu ortak hareket neticesinde ise veri bazlı işlemleri çok kolay biçimde yapılmaktadır. Sistemin en avantajlı ve güzel yönlerinden biri ise bu tarz işlemin çok zor olmadan basit bir şekilde gerçekleştirilmesidir.
Veriler Hadoop’ta Nasıl Saklanıyor?
En çok merak edilen sorular arasında ise verilerin Hadoop sistemde nasıl saklanmasıdır. Hadoop bünyesi kapsamında büyük verilerin tutulup saklandığı bileşene HDFS(Hadoop Distributed File System) ismi verilmektedir. Bu gibi büyük veriler HDFS sistemine yüklenildiğinde, Hadoop elde etmiş olduğu bu gibi verileri bazı parçalara ayırmaktadır. Farklı parçalara bölünmekte olan veriler Hadoop Cluster üzerinde değişik düğümlere (node) de gidiyor. Bu kısımda nodelerin her biri ise ayrı makineye benzetilmektedir. Input File içerisinde yer almakta olan bölümler birbirinden farklı nodelere dağıtılmaktadır. Bu kapsamda dikkat edilmesi gereken en gerekli konulardan biri de her bölümün artırılarak kaydedilme olayıdır.
Örnek olarak; 2 numaralı bölüm üzerinde 3 değişik (Node A, Node B, Node C) node üzerine dağıtılmaktadır. Bunun asıl nedeni ise nodelerden bir tanesi hasar gördüğü zaman ya da sistem tarafından uzaklaştırıldığı zaman veri kaybının oluşmasına da engel olmak olarak açıklanabilir. Genel olarak ele alındığında bu kısımdaki en önemli detayın verilerin saklanma olayının iyi biçimde gerçekleşmesi olarak da gösterilmektedir.
Hadoop Nasıl Çalışıyor?
Bu denli önemli sistemin nasıl biçimde çalıştığı da merak konuları arasındadır. Bu anlamda Hadoop’u 6 aşamalı bir sistem olarak ele almak mümkündür.
1- Input : Verilerin girildiği alandır.
2- Splitting : Tüm veriler zamanında işlenmesi daha basit olması adına parçalara ayrılmasıdır.
3- Mapping : Veriler bu aşamada gerekli olan düğüm noktalarına gönderilmekte ve yedeğinin adeti de yine bu kısımda belirlenmektedir. Arından ise bu veriler alakalı düğümlerde işlenmektedir.
4- Shuffling : Bu aşamada yine bu düğümlerin içerisinde yer almakta olan verilerin sayma işlemini yapmaktadır. Örneğin bir raw bir datayı input olarak verdiysek ve hangi sözcüğün ne kadar kullanıldığı gibi bir bilgi aranıyorsa bu aşamada kelime sayıları nodelarda belirlenir.
5- Reducing : Nodelar üzerindeki sonuçların toplandığı alandır.
6- Final Result : Sonuçların tutulduğu alandır.
Hadoop Neden Kullanılır?
Hadoop’un bu denli fazla kullanılmasındaki en büyük sebeplerden biri ise büyük verilerin gün geçtikçe fazlalaşarak geniş sahalara yayılmasıdır. Bu kapsamda mevcut verinin sadece bir bilgisayar içerisinde RDBMS yöntemi sayesinde tutulması da mümkün değildir. Neticesinde verinin tutulması için de HDFS sistemine gerek duyulmaktadır.
Günümüzde bilgiler gittikçe çoğalmaya ve büyümeye de başlamıştır. Bu anlamda özellikle de bilgi kirliliğini ve çöplüğünü de engellemek amacı ile kullanılmakta ola Hadoop son derece önemli bir sistemdir. Bu kapsamda HDFS aracılığı ile verilerin yedeklenip saklanması çözülürken büyük bilginin işleme sorunu da yine ortaya çıkmıştır. Bu durumun çözülmesi için de yine Hadoop ekosistemi ile HDFS için bazı araçlar oluşturulmuştur. Böyle bir ihtiyaç mevcut durumda olmasaydı Hadoop için belki de hiç ihtiyaç olmayacaktı.
Hadoop Dezavantajları Nedir
Hadoop bu kadar çok büyük veriyi saklayabilecek ve işleyebilecek özelliklere ve avantajlara sahip olmanın yanı sıra çeşitli dezavantajları da beraberinde getirmektedir. Bu anlamda ana Hadoop bileşenlerinin sahip olduğu klasik SQL yöntemlerinin Hadoop kapsamında yer almaması büyük bir eksiklik olarak gösterilmektedir. Bu da veriyi saklarken oluşabilecek bazı açıkların sebebidir. Ağ üzerinden de bir şifreleme sistemi olmadığı için güvenlik açısından da yine bir yetersizlik durumu mevcuttur. Dezavantaj noktası bununla da sınırlı değildir. Hadoop’un alan açısından da bir olumsuz özelliği mevcuttur. Hadoop sistemi veriyi kopyala biçiminde yedekleme işlemine tabi tuttuğu için verinin ihtiyaç duyduğu alan da haliyle artmış olur. Ayrıca yine Hadoop’un temel bileşenleri olarak gösterilmekte olan YARN, HDFS ve Map-Reduce de yeterli değillerdir. Bu yetersizlik durumu da yine dezavantajlar arasında biraz daha farklı yoldan ön plana çıkmaktadır.
Genel olarak Hadoop sistemine bakıldığında avantajlar kadar dezavantajlar da mevcuttur. Avantajlardan sebep ile kullanılan Hadoop sistemlerde sonradan yaşanabilecek sorunlar da yine kullanıcılara olumsuz birçok sorunu daha yaşatabilir.
Hadoop Bileşenleri
Hadoop bileşenlerini çeşitli kullanım alanlarına göre sıralayacak olursak;
- Data access: pig, hive, data storage için HBase, cassandra, interecation, visualization, execution
- Development: HCatalog, lucene, hama, crunch
- Data serialization: avro, thrift
- Data intelligence: drill ve mohout
- Data integration: sqoop, flume ve chuwka
- Management: ambari (Portal)
- Monitoring: zookeeper
- Orchestration: oozie
biçiminde bir sıralamadan bahsetmek mümkün olacaktır.
Bu gibi eşleştirmeler her ne kadar düzgün yapılırsa bu bileşenlerin kullanımlarının düzgün biçimde olması da mümkündür. Bu anlamda eşleştirmelerin son derece doğru biçimde yapılması gerekmektedir. Doğru yapılamaması durumunda ise sistem üzerinde çeşitli aksaklıklar meydana gelmekte ve bir işleyiş bozukluğu da görülmektedir.
Genel Olarak
Sonuç olarak çok yoğun bir veri trafiği içerisindeyseniz bu trafiği en kapsamlı biçimde yönetebilecek sistemlere gerek duymalısınız. Bu anlamda bu gibi verileri HDFS yardımı ile saklamak ve MapReduce aracılığıyla da verilerin analizini gerçekleştirmek gerekmektedir. Bunun bir alternatifi olarak da NOSQL (ElasticSearch, Mongo) koruma yöntemlerini ya da Apache Spark gibi eş değer olacak özellikteki veri işleme yolları da tercih edilmektedir. Bu gibi durumlar karşısında da ihtiyaçların ne olacağına göre karar vermek daha doğru bir yaklaşım türü olacaktır. Sebebi ise tüm sistemler belli kurallara göre bir zincirin halkaları gibi düzen içerisinde çalışmasıdır. Bu gibi durum sonucunda çeşitli sistemsel avantaj ve dezavantaj durumları da ortaya çıkmaktadır.