Kadriye Aksakal
3 min readNov 23, 2019

Apache Spark Nedir?

Öncelikle Apache Nedir? Bu sorunun yanıtına bakalım. Apache: Açık kaynak kodlu bir web sunucusu programıdır.Peki bu web sunucuları ne iş yapar? Web sunucuları internet tarayıcılarıyla bağlanan kullanıcıların isteklerine cevap verir. Apache birçok işletim sistamiyle çalışabilir örneğin; Unix, GNU, Linux, Microsoft Windows, Novell Natware vb. işletim sistemleriyle çalışır. Apache’nin kendi bünyesi altında bir çok da ürünü vardır bunlar;

Apache Spark, Hadoop, Storm, Apache Pig, Oozie, Apache Kafka, Hıve.

Peki nedir bu Apache Spark?
Apache Spark ilk olarak 2009 yılında UC Berkeley tarafından geliştirilmiştir. Daha sonra 2010 da açık kaynak kodlu bir Apache projesi haline gelmiştir. Açık kaynaklı bir dağıtık hesalama sistemidir. Scala dili ile yazılmıştır. Hızlı ve in-memory çalışır.

Apache Spark Mimarisi

1.Veri Depolama
Apache Spark hdfs dosya sistemini kullanır. Hadoop ile uyumlu olan HDFS, HBase, Cassandra vb sistemleri içeren herhangi bir yapıyla çalışıyor.

2.API
Geliştiricilerin standart arayüzleri kullanarak Spark tabanlı uygulamalar geliştirmesine olanak tanır. Scala,java ve phyton için api sağlar.

3.Yönetim
Spark Stand-alone sunucu olarak kurulabildiği gibi başka dağıtık sistemlerin(mesos,YARN) üzerine de kurulabilir.RDD(Resilient Distributed Datasets) Spark’ın temel konseptidir. RDD her tipte veriyi tutabilir.Spark farklı partitionlardaki veriyi RDD içinde tutar.

4.RDD(Resilient Distributed Datasets)
RDD hesaplamaları yeniden düzenlemeye ve veri işlemeyi optimize etmeye yardımcı olur. RDD aynı zamanda hata toleransı da sağlar. Çünkü RDD kendi nasıl yeniden oluşturacağını ve verileri nasıl yeniden işleyeceğini bilir.RDD iki tip operasyon destekler.
a.Transformasyon:
Yeni bir RDD oluşturur ve tek bir değer dönmez oluşturduğu yeni RDD yi döner. Transformasyon metotları herhangi bir aksiyon methodu çağrılmadığı sürece bir işlem yapmaz sadece bir RDD alır ve geriye yeni bir RDD döndürür. En çok kullanılan fonksiyonları map, filter, flatMap, groupByKey, reduceByKey, aggregateByKey,
pipe ve coalesce.
b.Aksiyon:
İşlemleri değerlendirip geriye yeni bir değer döner. RDD objesinin üstünde bir aksiyon fonksiyonu çağrıldığında tüm veri işleme sorguları çalıştırılır ve
geriye bir sonuç değeri döndürür. En çok kullanılan fonksiyonları reduce, collect, count, first, take, countByKey ve foreach.

Apache Spark Ekosistemi

1.Spark Core:
Hafıza yönetimi işlerin dağıtılması, hata kurtarma, saklama ve dosya sistemlerine erişim gibi temel bileşenleri içerir. Resilient Distributed DataSets (RDDs, Hata Durumunda yeniden oluşturulabilen (Resilient) dağıtık veri kümeleri) Spark hesaplamalarında kullanılan, hesaplama düğümlerine dağıtılmış en temel bileşenidir. RDD’lerin oluşturulması ve yönetilmesi için gerekli API’yi sağlar.
=>RDD(Resilient Distributed Dataset): RDD’ler oluşturulduktan sonra durumu güncellenemeyen(immutable) dağıtık nesneler koleksiyonudur.
-Paralel işletilirler
-Resilient: Eğer veri kaybolursa yeniden yarat.
-Distributed: Dağıtık.
-Dataset: Veri manuel yaratabileceği gibi otomatik olarak da yaratılabilir.
-RDD’ler read-only ve immutable’dır. Yani işleyebilirsin ama değiştiremezsin, okuyabilirsin ama yazamazsın.

2.Spark SQL:
Yapısal veriler ile çalışmak için kullanılan Spark bileşenidir. Standart SQL ve Apache Hive dili ile Json, Parquet(kolon temelli saklama formatı). Hive tabloları vb. gibi kaynaklar sorgulanabilir. Bu SQL bileşeni ve RDD’ler tarafından desteklenen operasyonlar ile komples analitik uygulamaları geliştirmek kolaylaşır.

3.Spark Streaming:
Bir web sunucusuna ait loğları veya anlık kullanıcı yorumları gibi sürekli akan canlı verileri işlemek için Spark Stream bileşeni kullanılır. Bu bileşen, tıpkı Spark Core içerisindeki API’lere benzer şekilde RDD’leri canlı veriler için işlemeyi sağlar. Disk, hafıza, gerçek zamanlı akış gibi tüm veriler birlikte işlenebilir.

4.MLib:
Sınıflandırma, kümeleme, regresyon, filtreleme gibi makine öğrenmesi algoritmlarını içeren Spark kütüphanesidir. Kurulan modelin doğruluğunu test etmek veya dış kaynaklardan veri transfer etmek için gereken yardımcı bileşenler MLib kütüphanesine dahil edilmiştir.

5.GraphX:
RDD’lerin yönlü graphlara dönüştürülüp(directed direct) paralel olarak işlenmesini sağlayan bileşendir. Graph’ı oluşturan her noktaya (Vertex) ve ara bağlantılara(edge) farklı özellikler tanımlamak,böylece sosyal paylaşım sistemlerin de sıklıkla kullanılan arkadaş networkü gibi bir yapıyı,paralel graph algoritmaları ile yönetmek mümkündür. Bazı problemlerin çözümü için çok daha hızlı çalışırlar ve kolay anlaşılırlar.

Desteklediği diller;
Scala
Java
Python
Clojure
R

No responses yet