Apache Spark Nedir?

Spark, farklı koşullarda kullanıma uygun bir veri işleme motorudur. Spark çekirdek veri işleme motorunun üstünde;

·         Bir uygulamada birlikte kullanılabilen SQL,

·         Makine öğrenimi,

·         Grafik hesaplama,

·         Akış işleme için kütüphaneler,

bulunmaktadır.

Spark tarafından desteklenen programlama dilleri şunları içerir: Java, Python, Scala ve R.

Uygulama geliştiricileri ve veri bilimciler, verileri hızlı bir şekilde sorgulamak, analiz etmek ve dönüştürmek için Spark'ı kullanırlar. Spark ile en sık ilişkilendirilen görevler arasında;

·         Büyük veri kümelerinde ETL (Extract Transform Load) ve SQL (Structured Query Language) toplu işleri,

·         Sensörlerden, IoT (Internet of Things) veya finansal sistemlerden gelen akış verilerinin işlenmesi,

·         Makine öğrenme görevleri,

bulunur.

Apache Spark’ın Tarihi

Spark'dan önce, Google'ın genişleyen emtia sunucu kümeleri arasında web üzerindeki artan içeriğin dizine eklemesini sağlayan MapReduce vardı.

Google stratejisinde 3 temel kavram bulunuyordu:

1. Verileri dağıtma: Bir veri dosyası kümeye yüklendiğinde, veri blokları olarak adlandırılır, veri düğümleri arasında dağıtılır ve küme boyunca çoğaltılır.

2. Hesaplamayı dağıtma: Kullanıcılar, bir dizi anahtar / değer çifti oluşturmak için bir anahtar / değer çiftini işleyen bir eşleme fonksiyonu ve aynı ara anahtara ilişkili tüm ara değerleri birleştiren bir indirgeme fonksiyonu belirlerler.

- Eşleme işlemi, atanmış her veri düğümünde çalışır ve yalnızca dağıtılmış bir dosyadaki veri bloğu üzerinde çalışır.

- Eşleme işlemlerinden elde edilen sonuçlar, "karıştır ve sırala" (shuffle and sort) adı verilen bir işlemde indirgeyicilere (reducer) gönderilir: eşleştiricilerin anahtar / değer çiftleri, anahtarlara göre sıralanır, reducer’ların sayısına bölünür ve sonra ağ üzerinden gönderilir ve reducer düğümlerinde anahtar dizili "dizi dosyaları"na  yazılır.

İndirgeme işlemi atanmış düğümde yürütülür ve yalnızca verilerin alt kümesinde çalışır. İndirgeme işleminden elde edilen veri bir output dosyasına yazılır.

3. Hataları tolere etmek: Data ve hesaplama, veri veya işleme için başka bir düğüme geçerek hataları tolere edebilir.

MapReduce kelime sayısı yürütme örneği:

Google'ın web sitelerini arama motoru sonuçlarında sıralamak için kullandığı PageRank gibi bazı Yineleme algoritmalar, birden çok MapReduce işinin birlikte zincirlenmesini gerektirir. Birden fazla MapReduce işi birlikte zincirlendiğinde, her MapReduce işi için veriler dağıtılmış bir dosya bloğundan bir eşleme işlemine okunur, aradaki bir SequenceFile'a yazılır ve ondan okunur ve daha sonra bir reducer işleminden bir output dosyasına yazılır.

Apache Spark, 2009 yılında Berkeley'deki California Üniversitesi'ndeki AMPLab içinde bir proje olarak hayata başladı. Spark şu anda Apache Yazılım Vakfı tarafından yönetilen en aktif projelerden biri ve proje etrafında büyüyen topluluk içinde hem üretken bireysel katkıları hem de Databricks, IBM ve Çin’in Huawei gibi iyi finanse edilen kurumsal destekçilerini barındırıyor.

Spark projesinin amacı, MapReduce’un ölçeklenebilir, dağıtılmış, hataya dayanıklı işleme çerçevesinin avantajlarını korumak ve daha verimli ve kullanımı kolaylaştırmaktı.

Spark'ın MapReduce'a göre avantajları:

·         Spark, verileri birden çok paralel işlemde önbelleğe alarak çok daha hızlı yürütürken, MapReduce diskten daha fazla okuma ve yazma içerir.

·         Spark, JVM (Java Virtual Machine) süreçlerinde çoklu iş parçacıklı görevler yürütürken, MapReduce daha ağır JVM süreçleri olarak çalışır. Bu, Spark'a daha hızlı başlatma, daha iyi paralellik ve daha iyi CPU kullanımı sağlar.

·         Spark, MapReduce'dan daha zengin bir işlevsel programlama modeli sunar.

·         Spark özellikle dağıtılmış verilerin Yineleme algoritmalarla paralel işlenmesi için daha kullanışlıdır.

Spark Uygulaması Sürücü (Server) Kümelerinde Nasıl Çalışır?

• Bir Spark uygulaması, sürücü programındaki SparkSession nesnesi tarafından koordine edilen bağımsız işlemler olarak çalışır.

• Kaynak veya küme yöneticisi, bölümlere bir görev olacak şekilde görev atar.

• Görev, kendi iş birimini kendi bölümündeki veri kümesine uygular ve yeni bir bölüm veri kümesi verir. Yineleme algoritmaları, işlemleri verilere art arda uyguladığından, veri kümelerini tekrarlar arasında önbelleğe almanın avantajlarından yararlanır.

• Sonuçlar sürücü uygulamasına geri gönderilir veya diske kaydedilebilir.

Spark aşağıdaki kaynak / küme yöneticilerini destekler:

• Spark Standalone : Spark ile gelen basit bir küme yöneticisi,

• Apache Mesos : Hadoop uygulamalarını da çalıştırabilen genel bir küme yöneticisi,

• Apache Hadoop YARN : Hadoop 2'deki kaynak yöneticisi,

• Kubernetes : Kapsayıcı uygulamaların dağıtımını, ölçeklendirilmesini ve yönetimini otomatikleştirmek için açık kaynaklı bir sistem.

Spark ayrıca, sürücülerin ve kullanıcıların, kişisel bir bilgisayardan uygulamalarınızı geliştirmek için yararlı olan ve bir küme yerine bilgisayarınızda iş parçacığı olarak çalıştığı yerel bir moda da sahiptir.

Spark Ne Yapar?

Spark, işbirliği halindeki binlerce fiziksel veya sanal sunucu kümesinde dağıtılan, aynı anda birkaç petabayt (1 PB = 1024 TB) veriyi işleyebilir. Geniş bir geliştirici kitaplığı ve API (Application Programming Interface) setine sahiptir. Java, Python, R ve Scala gibi dilleri destekler; esnekliği onu çeşitli kullanım durumları için uygun hale getirir. Spark genellikle MapR XD, Hadoop HDFS ve Amazon'un S3 gibi dağıtılmış veri depolarında, MapR Veritabanı, Apache HBase, Apache Cassandra ve MongoDB gibi popüler NoSQL veritabanlarıyla ve MapR Event Store ve Apache Kafka gibi dağıtılmış mesajlaşma mağazalarında kullanılır.

Tipik kullanım durumları şunları içerir:

·        Akış işleme: Log dosyalarından sensör verilerine kadar, uygulama geliştiricileri iderek daha fazla veri akışı ile baş etmek zorunda kalmaktadır. Bu veriler, genellikle aynı anda birden fazla kaynaktan düzenli bir akışa ulaşır. Bu veri akışlarını diskte saklamak ve geriye dönük olarak analiz etmek mümkün olsa da, veri geldikçe işlemek ve bunlara göre hareket etmek daha mantıklıdır.

·        Makine öğrenimi: Veri hacimleri büyüdükçe, makine öğrenimi yaklaşımı daha uygulanabilir hale gelmektedir. Yazılım, aynı çözümleri yeni ve bilinmeyen verilere uygulamadan önce iyi anlaşılmış veri kümelerindeki tetikleyicileri tanımlamak ve bunlara göre hareket etmek üzere eğitilebilir. Spark’ın verileri bellekte saklama ve hızlı bir şekilde tekrarlanan sorgular yürütme yeteneği, onu makine öğrenme algoritmaları geliştirmek için iyi bir seçenek haline getirir. Geniş çapta benzer sorguları tekrar tekrar çalıştırmak, en verimli algoritmaları bulmak için bir dizi olası çözümden geçmek için gereken süreyi önemli ölçüde azaltır.

·        Etkileşimli analitik: Satış veya üretim hattı üretkenliği veya hisse senedi fiyatlarının statik gösterge tablolarını oluşturmak için önceden tanımlanmış sorgular çalıştırmak yerine, iş analistleri ve veri bilimcileri bir soru sorarak, sonucu görüntüleyerek ve ardından ilk soruyu değiştirerek verilerini derinlemesine araştırmak isterler. Bu etkileşimli sorgu işlemi, Spark gibi hızlı yanıt verebilen ve uyarlanabilen sistemler gerektirir.

·        Veri entegrasyonu: Bir işletme genelinde farklı sistemler tarafından üretilen veriler, raporlama veya analiz için basit ve kolay bir şekilde birleştirilecek kadar nadiren temiz veya tutarlıdır. ETL işlemleri genellikle farklı sistemlerden veri çekmek, temizlemek ve standartlaştırmak ve daha sonra analiz için ayrı bir sisteme yüklemek maksadıyla kullanılır. Spark (ve Hadoop) bu ETL işlemini yapmak için gerekli maliyeti ve zamanı azaltmak maksadıyla giderek daha fazla kullanılmaktadır.

Spark'ı Farklı Kılan Nedir?

Spark'ı seçmek için birçok neden var, aşağıda bunlardan en önemli üç tanesi verilmiştir:

1. Basitlik: Spark’ın özelliklerine, tümü ölçeklendirilmiş verilerle hızlı ve kolay bir şekilde etkileşim kurmak için özel olarak tasarlanmış bir dizi zengin API aracılığıyla erişilebilir. Bu API'ler, veri bilimcilerinin ve uygulama geliştiricilerinin Spark'ı hızlı bir şekilde çalıştırmasını kolaylaştıracak şekilde iyi yapılandırılmıştır.

2. Hız: Spark hem bellekte hem de diskte hızlı çalışması için tasarlanmıştır. Bellekte saklanan verilerin etkileşimli sorgulamasında Spark daha da iyi performans göstermektedir. Bu durumlarda, Spark'ın Hadoop’un MapReduce ürününden 100 kat daha hızlı olduğu iddia edilmektedir.

3. Destek: Spark, Java, Python, R ve Scala gibi bir dizi programlama dilini destekler. Spark, Hadoop’dan daha iyi bir depolama çözümüyle sıkı entegrasyon desteği içerir; bunlara MapR (dosya sistemi, veritabanı ve etkinlik deposu), Apache Hadoop (HDFS), Apache HBase ve Apache Cassandra dahildir.

Veri Boru Hatlarının (Data Pipeline) Gücü

Spark'ın gücünün çoğu, çok farklı teknikleri ve süreçleri tek, tutarlı bir bütün halinde birleştirme yeteneğinde yatmaktadır. Spark dışında, veri seçme, bu verileri çeşitli şekillerde dönüştürme ve dönüştürülen sonuçları analiz etme, Apache Oozie gibi bir dizi ayrı işleme çerçevesini gerektirebilir. Öte yandan Spark, bunları bir araya getirme, batch, streaming ve etkileşimli iş akışları arasındaki sınırı geçerek kullanıcıyı daha üretken hale getirme olanağı sunar.

Spark; art arda, bellekte birden çok işlem gerçekleştirir ve yalnızca bellek sınırlamaları gerektirdiğinde diske dökülür. Spark, bu farklı süreçlerin yönetimini basitleştirir, yapılandırılması daha kolay, çalıştırılması daha kolay ve bakımı daha kolay bir veri hattı olan entegre bir bütünlük sunar.


Paylaş

Makale.biz.tr whatsapp numarası