Apache Spark Nedir? Apache Hadoop’tan Farkları Nelerdir?

Apache Spark Nedir? Apache Hadoop’tan Farkları Nelerdir?

Apache Spark ve Apache Hadoop, teknolojilerinin her ikisi de büyük veri frameworkleridir.

Hadoop bildiğiniz üzere büyük verileri birden fazla makinede paralel biçimde işlemeyi, kaydetmeyi ve yönetmeyi sağlayan bir teknolojidir. Hadoop verilerin saklanması için HDFS (Hadoop Distributed File System) kullanır.  Verileri işlemek için de Map-Reduce yönetmini kullanır.

“Madem Hadoop ile büyük verileri hem işleyip hem kaydedebiliyoruz, öyleyse Spark’a niye ihtiyacımız var?”

Teknolojik gelişmelerin geneli ihtiyaçtan doğar. Spark’ta tıpkı Hadoop gibi ihtiyaçtan doğdu. İkisi de büyük veriler için kullanılıyor fakat aynı amaçlara hizmet etmiyorlar. Bu sebeple birbirlerinden ayrıldıkları yerler bir hayli fazla.

Gelin Apache Spark’ın Hadoop’tan ayrıldığı yerleri inceleyelim;

Spark, veriyi işlemek için kullanılır, kendi dosya yönetim sistemi ve veri depolama aracı yoktur. Bu yüzden HDFS veya başka bir bulut tabanlı veri platformuyla entegre edilmesi gerekiyor.

Hadoop ise veri işlediği gibi dağıtık veri depolamayı da sağlar. Pahalı ve özel makinelere gerek kalmaksızın büyük verilerini saklayabileceğiniz HDFS yapısına sahiptir.


Spark, in-memory çalışır. Yani veriyi RAM’de işler.

Hadoop ise Map-Reduce yapısı ile veriyi diskte tutarak işler.

Bu sebeple Spark’ın Map-Reduce yönteminden 100 kat daha hızlı olduğu iddiaları vardır. Evet, Spark Map-Reduce yönteminden hiç şüphesiz çok daha hızlıdır. Ancak bunun 100 kat şeklinde ifade edilmesi “duruma göre” değişiklik göstereceği gözden kaçırılmamalıdır.

Çünkü Spark, belleğe sığmayan verileri işlemek için diskte kullanabilir. Elde edilen veri kümesinin mevcut RAM’den daha büyük olması durumunda, —Hadoop MapReduce Spark’den daha iyi performans gösterebilir.


Spark, içersinde Spark Streaming’i barındırdığı için yakın gerçek zamanlı (Near Real Time) veri işleme için de kullanılır.
Makine öğrenimi, IOT sensörleri, günlük log’lar, güvenlik analizleri ve sosyal medya sitelerinden elde edilen veriler için gerçek zamanlı analitiği sunar.

Hadoop Map-Reduce, ise çıkış noktası olarak batch processing(var olan verileri işlemek)  için ortaya çıkarılmıştır. Web sitelerinden sürekli bilgi toplamak için kurulmuştu ve bu aşamada gerçek zamanlı veri işleme ihtiyacı söz konusu değildi. Dolayısıyla gerçek zamanlı veri işleyen bir teknoloji ile kıyaslandığında bu çıkış noktası ihmal edilmemelidir.


Spark, RDD (Resilent Distributed Dataset) isimli yüksek seviyeli bir operatöre sahiptir. (Bir nevi collection objesi gibi çalışır.)
RDD kullanarak yapısal olmayan(unstructure) datalar ile -özellikle tekrar eden- işlemleri yapmak oldukça kolay ve hızlıdır.

Map-Reduce ise RDD’nin aksine geliştiricinin işini zorlaştıran bir yapıya sahiptir, her işlemin elle kodlanması gerekir ve diske ara sonuçları yazması gerektiğinden dolayı daha yavaştır.


Spark, Java, Scala, Python  ve R dilleri ile geliştirilebilir.

Ek bilgi: Scala programlama dili için Spark’ın ana dili tanımlaması yapılır ancak Python da kütüphane zenginliğinden ve syntax kolaylığından dolayı Spark ile birlikte sıkça kullanılan popüler bir dildir.

Hadoop, Java yerel dilidir fakat diğer betik dillerle de programlanabilir. (Popüler olanlar; Java, Python, Scala)


Spark,

  • Makine öğrenmesi uygulamaları geliştirebilmek için MLib kütüphanesi sunar.
  • Ayrıca GraphX kütüphanesi ile graph tabanlı hesaplamalar yapmaya imkan sağlar. Hadoop bu özellikler için farklı eklentilere ihtiyaç duymaktadır.

Spark, Spark SQL isminde SQL diline çok benzeyen bir sorgu diline sahiptir.

Hadoop,  Map-Reduce ise Hive ve Pig, Impala gibi dağıtık SQL sorgu teknolojilerini kullanarak sorgu işlemlerini gerçekleştirebilirsiniz.


Spark, kendi içinde MLib, Spark SQL, Graphx, Spark Streaming gibi özellikleri barındırdığı için bunların yönetimi de Hadoop’a kıyasla daha kolaydır.

Hadoop, Spark’ın içinde tümleşik gelen bu özelliklerin her biri için bünyesine farklı teknolojiler ilave etmek durumunda olduğundan dolayı yönetmek zorlaşacaktır.


Spark, birden fazla veri kümesinin birleştirilmesi gereken yerlerde Hadoop’tan çok daha hızlı biçimde join işlemi gerçekleştirebilir.

 Hadoop Map-Reduce yöntemi, Eğer çok büyük boyuttaki veri setlerini birleştirmek gibi bir işlem yapacaksanız işe yarayacaktır. (Örneğin binlerce sayfalık text dökümanlarının olduğu veri setleri)


Spark, kullanım esnasında herhangi bir hata olduğunda bunu tolare edebilir, olası bir arıza durumunda uygulamayı sıfırdan başlatmanıza gerek yoktur.

Hadoop Map-Reduce  da hataya dayanıklıdır arıza durumunda uygulamayı sıfırdan başlatmak gerekmemektedir.


Spark, Shared Secret (Kimlik doğrulama sistemi her iki tarafında gizliliği korumasıyla sağlanır.) ile kimlik doğrulamayı destekler.

Hadoop Map-Reduce ise Kerberos (Kerberos, TCP/IP yapısının yeterince güvenli bulunmaması sonucu MIT tarafından geliştirilen bir ağ kimlik denetleme protokolüdür.) ve  Access Control Lists (ACL, farklı networkler arasında iletişim kurmayı sağlayan Router üzerine gelen ya da giden iletişim trafiğini kaynak ip bazında ya da port bazında filtreleme yapabilmemizi sağlayan kontrol mekanizmasıdır.) kullanımı sayesinde Spark’tan çok daha güvenli bir ortam sağlar.


Peki hangisini seçmeliyiz?

Her iki büyük veri framework’ü de yukarı da anlattığım üzere ihtiyaca binaen kullanım alanlarında farklılık gösterecektir.

Spark, hızlı performans, tekrarlı işlem de kolaylık, gerçek zamanlı analiz, grafik işleme, makine öğrenimi gibi özellikleri ile kullanım avantajı sağlıyorken,

Eğer projenizde tümleşik bir dosya sistemine ihtiyacımız var ise, büyük boyutlu veri setleri ile çalışıyorsanız, gerçek zamanlı bir uygulama geliştirmeyecekseniz ve veri güvenliği sizin için kritik önceliklerdense Hadoop kullanımı mantıklı hale gelecektir.

Tabi hem gerçek zamanlı işlemler yapayım hem de işlediğim verileri tutmak için HDFS kullanayım derseniz her teknolojiyi hibrit biçimde kullanabilirsiniz.

 

Umarım bu kıyas yazısı yardımcı olmuştur.
Okuduğunuz için teşekkür eder,

İyi çalışmalar dilerim

“Apache Spark Nedir? Apache Hadoop’tan Farkları Nelerdir?” için 2 cevap

  1. Merhaba, öncelikle yazılarınız için çok teşekkür ederiz. Bu yazının mottosu “Öööööööğ, öyle her şeyden kazan kazan olmaz!.” olmalı. Her iki tarafın da kendine göre avantajları ve dezavantajları bulunmaktadır, bir taraf mutlaka kaybedecek; kaçarı yok! Ama önemli noktada şudur; hangisi daha avantajlı? Bunu da yazınızda belirtmişsiniz; “duruma göre değişiklik gösterir” diyerek. Çok teşekkürler.

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir