Spark#2-Apache Spark Bileşenleri
Bir önceki notumuzda Apache Spark nedir, ne işe yarar konularını yazmıştık. Bu yazıda ise Spark platformunu oluşturan bileşenleri anlatmaya çalışacağım. Başlamadan önce önemli bir not: Spark platformu yeni bileşenler ile gelişmeye devam ediyor, bu notu eklediğimiz zaman diliminde Spark 1.4.0 versiyonuna SparkR desteği de eklenmişti. Siz bu notu okuduğunuz da aşağıda anlatacağımız temel bileşenlere yeni eklentiler yapılmış olma ihtimalini dikkate almanızı öneririm.
Spark küme hesaplama platformu aşağıdaki ana bileşenlerden oluşur.
Spark Core: Hafıza yönetimi işlerin dağıtılması, hata kurtarma, saklama ve dosya sistemlerine erişim gibi temel bileşenleri Spark Core içerisindedir. 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 Spark bileşenidir. Spark Core RDD’ lerin oluşturulması ve yönetilmesi için gerekli API’ yi sunar. RDD ler üzerinde gerçekleştirilen işlemler (action) hesaplama noktalarında paralel olarak çalıştırılır.
Spark SQL: Yapısal veriler ile çalışmak için kullanılan Spark bileşenidir. Standard SQL ve Apache Hive dili (HQL: SQL’ a benzer sorgu 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 kompleks analitik uygulamaları geliştirmek kolaylaşır. Spark SQL, Spark 1.0 ve üzeri versiyonlara eklenen bir özelliktir. Aslında eski Shark (SQL on Spark) projesi, şimdiki adıyla Spark SQL olarak değiştirilmiştir. (Apache Hive’ ın Spark üzerinde çalışacak biçimde değiştirilmiş versiyonu)
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.
MLib: Sınıflandırma, kümeleme, regresyon, filtreleme gibi makine öğrenmesi algoritmaları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. Eğer gradient desent gibi optimizasyon yöntemleri seviyesinde çalışmak ister ve yöntemlere katkı sunmak isterseniz, bu da Mlib ile mümkündür. Mlib içerisindeki tüm makine öğrenme algoritmaları tıpkı diğer Spark bileşenleri gibi dağıtık çalışabilecek biçimde planlanmış ve optimize edilmiştir.
GraphX: RDD’ lerin yönlü graphlara dönüştürülüp (directed graph) 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. Graph temelli algoritmalar bazı problemlerin çözümü için çok daha hızlı çalışırlar ve kolay anlaşılırlar. GraphX kütüphanesi ile alt graph’ lar oluşturulması, kenarların eşlenmesi gibi operasyonları yönetmek, PageRank, üçgen sayma (triangle count) gibi graph algoritmalarını uygulamak kolaylaşır.
Cluster Managers: Spark, Hadoop, Yarn, Apache Mesos gibi küme yönetim (cluster management) sistemleri ile entegre çalışabilir. Spark dağıtımı ile Standalone Scheduler adı verilen bir entegre cluster manager’ da sunulur. Eğer sıfırdan bir sistem kuruluyor ise Standalone Scheduler hızlı ve kolay başlangıç için idealdir. Eğer Hadoop, Yarn veya Mesos gibi bir cluster manager zaten mevcut ise Spark bu cluster manager’ ların kontrolünde çalışacak biçimde konfigure edilebilir. Spark çalışmak için Hadoop’ a ihtiyaç duymaz fakat Hadoop Api kullanarak çalışan HDFS, yerel dosyalar, Amazon S3, Cassandra, Hive, Hbase gibi saklama sistemlerinden veri çekip RDD’ leri oluşturmakta kullanır.
Bir sonraki yazımız için tek node Spark kurulumu notunu düşelim. Bu kurulumda Hadoop olmayan durumlar için ortaya çıkabilecek kurulum sorunları ve çözümlerinde sizlerle paylaşıyor olacağım.
Kolay Gelsin.














