get free quote

Hadoop Nedir?

hadoop

Hadoop , büyük bilgi birleşenleriyle birlikte birden fazla mekanizmada eş olarak işlem yapılmasına imkan veren Java ile birlikte yazılmış açık kaynağa sahip kodlu bir kütüphane olarak ifade edilebilir. Apache Hadoop’un büyük oranda veri ve hesaplamalarını içinde barındıran sorunları çözüme kavuşturabilmek amacıyla birden çok bilgisayar ağı vasıtasıyla kullanılmasını basitleştiren bir program olduğundan da söz edilebilir. MapReduce programlama şekliyle kullanılan büyük verilerin dağıtılmış bir modelde depolanmasının yapılması ve işlenmesi amacı ile bir yazılım çerçevesinde bir uzlaşma sağlıyor Hadoop. Bu ortak hareket sonucu da veri bazlı işlemler kolayca yapılabiliyor. Sistemin en güzel yönü de bu işlemin zor olmadan basit bir şekilde gerçekleşiyor olması.

Bu Veriler Nasıl Saklanıyor?

Hadoop bünyesinde büyük verilerin tutulup saklandığı bileşene HDFS (Hadoop Distributed File System)adı veriliyor. Bu büyük veriler HDFS sistemine yüklenildiği vakit, Hadoop elde ettiği bu verileri bazı parçalara ayırıyor. Farklı parçalara bölünen veriler Hadoop Cluster üzerinde değişik nodelara gidiyor. Şu aşamada nodeların her birini ayrı bir makinaya benzetilebilir. Input Fileiçerisinde yer alan bölümler birbirinden farklı nodelara dağıtılıyor. Bu noktada dikkate alınması gerekli en elzem hususlardan herhangi bir tanesi her bir bölümün arttırılarakkaydediliyor olması. Örnek vermek gerekirse; 2 numaralı bölüm 3 değişik (Node A , Node B , Node D) node üzerine dağıtılıyor. Bunun gerçek sebebi ise nodelardan bir tanesi hasar gördüğü zaman ya da sistemden çıktığı zaman veri kaybının oluşmasına engel olmak olarak açıklanabilir. Belli bir mantık çerçevesinde de bakıldığı vakit buradaki önemli detayın verilerin saklanma olayının düzgün bir şekilde gerçekleşmesi olarak gösterilebilir.

Nasıl Çalışıyor?

6 aşamalı bir sistemden söz etmek mümkün. İlk aşama input aşaması bu kısım veri girişlerinin yapıldığı ilk adım olarak açıklanabilir. Bundan sonraki ikinci adım olan splitting aşamasındagelmiş olan veriler, zamanında işlenmesi daha basit olabilmesi adına parçalara ayrılıyor. Bu ayrılan parçalar üçüncü aşamada alakalı olduğu düğüm noktalarına gönderiliyor ve yedeğinin adeti bu adımda belirleniyor. Daha sonra da bu veriler alakalı düğümlerde işleniyor. Shuffling ise düğümlerin içerisinde yer alan bu verilerin muhasebe işlemini yapıyor. Mesela bir metin dosyası input göreviyle oradaysa ve bu noktada hangi sözcüğün kaç defa kullanıldığı bilgisi aranıyorsa bu bölüm için kelime adetleri nodelerde belirleniyor. Nodelerin tümünden gelen sonuçlar da reducing aşamasında toplanıyor.

6. ve son aşama ise raporlama işleminin yapılması için bütün verilerin bütün açılarıyla elde edildiği sonuç aşaması. Bu sonuçlar doğrultusunda daha sağlıklı çıkarımlar yapılabilir. Bu sağlıklı çıkarım da sonuçta ulaşılması istenilen mevcut bir hedef olduğu için son derece önemli bir konumda yer alıyor.

Hadoop Kullanılma Sebepleri 

Verilerin çok fazla oluşu bunun en önemli sebebi. Eldeki verininsadece tek bir bilgisayar içerisinde RDBMS yöntemi vasıtasıyla tutulması mümkün değil. Bu veriyi işlemeyi bir köşeye koymak lazım çünkü bu verinin elde tutulması için olsa bile HDFS dosyalama sistemine ihtiyaç duyuluyor.
HDFS aracılığıyla verinin yedeklenip saklanması çözülürken büyük bilgiyi işleme sorununu ortaya çıkardı. Bu durumu çözmek için de Hadoop ekosistemi ile HDFS için bazı araçlar oluşturuldu. Eğer böyle bir ihtiyaç olmasaydı belki de Hadoop hiç olmayacaktı. 

Avantajları Bir Yana Peki Dezavantajları Neler?

Ana Hadoop bileşenlerinin sahip olduğu klasik SQL yöntemlerine sahip olmaması bir noksanlık olarak gösterilebilirken bu veriyi saklarken oluşan bazı açıklar söz konusu. Ağ üstünde bir şifreleme yapılmadığı için güvenlik bakamından bir yetersizden bahsedilebilir. Dezavantajlar sadece bununla da sınırlı değil. Alan açısından da bir dezavantajı mevcut Hadoop’un. Hadoop veriyi kopyalama yaparak yedeklemeye yaptığından dolayı verinin ihtiyaç duyduğu alan artmış oluyor. Ayrıca Hadoop’un sahip olduğu temel bileşenleri olarak örnek verilebilecek YARN, Map-Reduce ve HDFS son derece yeterli değil. Bu yetersizlik de bu dezavantajlar arasında biraz daha farklı bir koldan öne çıkıyor. Aslında doğru bir olan bir şey varsa o da avantajların olduğu kadar dezavantajların da bilinmesi. Avantajın baz alınarak yapıldığı kullanımlarda sonradan yaşanan sorunlar son derece can sıkıcı olabiliyor.

Hadoop Bileşenleri Neler?

Bu bileşenleri kullanım alanlarına göre daha doğru olacak ki bu eşleştirmeler: 

  • Data access için pig, hive, data storage için HBase, cassandra, interecation, visualization, execution,
  • Development için  HCatalog, lucene, hama, crunch 
  • Data serialization için avro, thrift,
  • Data intelligence için drill ve mohout, 
  • Data integration için sqoop, flume ve chuwka,
  • Management için ambari (Portal), 
  • Monitoring için zookeeper, 
  • Orchestration için ise oozie şeklinde yapılabilir. 

Bu eşleştirmelerin düzgün şekilde yapılması bu bileşenlerin kullanımlarının düzgün bir şekilde yapılması için gerekli. Bu eşleştirmelerin doğru yapılmaması durumunda da sistemde aksaklıklar meydana geliyor ve bir işleyiş bozukluğu baş gösteriyor. Bu bileşenlere de kısa kısa değinmek mümkün. Hive HQL olarak tanınan bir SQL’e aşırı benziyor ve bir dil yardımıyla da Hadoop sistemlerinde bu verilere ulaşım ve sorgulama benzeri işlemleri gerçekleştiriyor. Gerçek vakitli bir sorgulama yapamadığını da belirtmek lazım. 

Pig için de HDFS üzerinde bulunan veri ya da verilerin işlenmesinden mesul olduğu söylenebilir. Kompleks veri biçim değiştirme işlemlerini Java’ya ihtiyacı olmadan Latin benzeri betik/script dili aracılığıyla gerçekleştirilmesi sağlanan bir Hadoop bileşeni olduğu söylenebilir. Bu örnekler hBasenin HDFS üstünde işlem yapan bir NoSQL veriağı yönetim sistemi olduğundan sqoopun bu yapısal bilgilerin ve verilerin ETL(Extract/Transform/Load) vasıtasıyla Hadoop’a aktarımının kullanılıp bir komut satırı arayüzüne de sahip olduğundan bahsedilerek çoğaltılabilir.

Sonuç

Genel bir şekilde bu anlatılanları özetlemek lazımsa çok yoğun trafik ağında akan bir veri ağına sahipseniz (Örnek günlük 110 milyon +) bu verileri HDFS vasıtasıyla saklayabilirsiniz ve MapReduce aracılığıyla da verilerin analizi yapılabilir. Buna alternatif yol olarak bir diğer NoSQL (Mongo, ElasticSearch) muhafaza etme yöntemlerini veya Apache Spark benzeri eş değer olabilecek nitelikteki veri işleme yolları tercih edilebilir. Tabii ki bu durumda da ihtiyaçlara göre karar vermek de daha doğru bir yaklaşım.  Çünkü her sistem belli kurallara göre bir zincirin halkaları gibi bir düzen içerisinde çalışıyor ve bu durum sonucu da ortaya sistemsel avantajlar ve dezavantajlar oluşuyor. Bunun çıkarımın iyi yapılması elde edilecek sonuç için son derece pozitif tabi ki...