Apache Spark nedir ve ne işe yarar?
Apache Spark nedir? Büyük veriyi kümeler üzerinde dağıtık işleyen bu motorun işleyişini, bileşenlerini ve PySpark ile ilişkisini öğrenin.
Apache Spark nedir?
Apache Spark, büyük veri kümelerini bir bilgisayar kümesi üzerinde paralel işleyerek veri mühendisliği, analiz ve makine öğrenmesi işlerini yürüten açık kaynaklı, çok dilli bir veri işleme motorudur. Resmî tanıma göre Spark, veri mühendisliği, veri bilimi ve makine öğrenmesini tek makinede ya da kümelerde yürütebilen çok dilli bir motordur.
Tek bilgisayarın belleğine ve işlemcisine sığmayan veri kümelerinde, işi parçalara bölüp birçok makineye dağıtmak gerekir. Spark bu dağıtımı, birleştirmeyi ve hata durumunu yönetir; geliştirici işini tek bir program gibi yazar.
Nasıl çalışır?
Bir Spark uygulaması bir sürücü (driver) ve birden çok yürütücüden (executor) oluşur. Sürücü işi görevlere böler, yürütücüler bu görevleri kümedeki makinelerde paralel çalıştırır.
Spark'ın önemli bir özelliği tembel değerlendirmedir: yazdığınız dönüşümler hemen çalışmaz, bir sonuç istendiğinde (örneğin sonucu yazmak ya da saymak) bütün plan optimize edilerek yürütülür. Verinin bellekte tutulması, ara sonuçları sürekli diske yazan eski yaklaşımlara göre özellikle tekrarlı işlemlerde belirgin hız avantajı sağlar. Çalışırken bir makine çökerse kayıp parça yeniden hesaplanabilir.
Başlıca bileşenler ve diller
- Spark SQL ve DataFrame: Tablo benzeri verilerde sorgu ve dönüşüm.
- Yapılandırılmış akış (Structured Streaming): Sürekli gelen veriyi işleme.
- MLlib: Dağıtık makine öğrenmesi kitaplığı.
- pandas on Spark: Tanıdık pandas arayüzüyle dağıtık çalışma.
Resmî sayfaya göre Python, SQL, Scala, Java ve R dillerinde kullanılabilir. Python arayüzüne PySpark denir; veri ekiplerinde en yaygın giriş yoludur.
Küçük bir örnek
Örneğin bir perakende şirketinin yıllarca biriken satış kayıtları tek bir makinede işlenemeyecek kadar büyük. Veri mühendisi PySpark ile kayıtları okur, hatalı satırları temizler, mağaza ve ürün bazında toplar ve sonucu analiz ekibinin kullanacağı bir tabloya yazar. Aynı kod küçük bir örnek veriyle bilgisayarda denenir, sonra bir kümede büyük veriyle çalıştırılır. Akış yönteminde ise yeni gelen satışlar sürekli aynı mantıkla işlenir.
Ne zaman kullanılır, ne zaman gerekmez?
Spark; büyük veri dönüşümleri, ETL boru hatları, veri ambarı ve veri gölü işleri, akış verisi ve büyük ölçekli makine öğrenmesi için uygundur. Veri tek bir makineye rahatça sığıyorsa pandas ya da bir veri tabanı sorgusu çok daha basit ve çoğu zaman yeterlidir. Küme kurmanın ve ayarlamanın bir maliyeti vardır. Bulutta yönetilen hizmetler (örneğin Azure Synapse'in Spark havuzları) bu kurulum yükünü azaltır.
Benzer araçlarla farkı
Hadoop MapReduce ara sonuçları diske yazarak çalıştığından tekrarlı işlerde yavaştır; Spark bellek odaklı çalışır. Pandas tek makinede çalışır, Spark dağıtık. Bir veri ambarı ise sorgu odaklı bir depolama ve işleme sistemidir; Spark genellikle bu ambara veriyi hazırlayan işleme katmanı olarak devreye girer.
Mindset programlarında nerede işlenir?
Temel PySpark Eğitimi programı PySpark DataFrame API, veri temizleme, Spark SQL ve MLlib konularını işler. Spark Structured Streaming ile Akış İşleme programı akış modelini ve üretime almayı, Azure Synapse Analytics programı Apache Spark Pool ile büyük veri modülünü, Veri Mühendisi Programı (Yapay Zeka Odaklı) ise büyük ölçekli veri işleme ve Spark modülünü içerir.
İlgili Mindset programı
Temel PySpark Eğitimi
Sık sorulan sorular
Spark ile PySpark aynı şey mi?
Değil. Spark işleme motorunun kendisidir; PySpark ise bu motoru Python diliyle kullanmanızı sağlayan arayüzdür. PySpark'ta yazdığınız kod Spark motoru tarafından dağıtık olarak yürütülür. PySpark'ta yazdığınız dönüşümler ve sorgular kümeye dağıtılır; bu yüzden Python bilen biri büyük veriyle çalışmaya, motorun iç ayrıntılarını bilmeden de başlayabilir.
Spark Hadoop'un yerini mi aldı?
Büyük ölçüde işleme katmanında Spark, Hadoop MapReduce'un yerini almıştır. Ancak Hadoop ekosisteminin dosya sistemi gibi parçaları hâlâ kullanılabilir, Spark da bu depolamalar üzerinde çalışabilir. Yine de Hadoop'un depolama bileşenleri bazı kurumlarda kullanılmaya devam eder; Spark bu depolamalarla çalışabildiği için iki dünya birbirini tamamlar.
Spark öğrenmek için Scala bilmek gerekir mi?
Hayır. Spark'a Python, SQL, Scala, Java ve R üzerinden erişilebilir. Çoğu veri ekibi Python ve SQL ile başlar. Python ve SQL bilgisi, Spark'a giriş için pratik bir temeldir. Dil tercihi ekibin mevcut becerilerine ve kod tabanına göre yapılır; kavramlar diller arasında büyük ölçüde aynıdır, bu yüzden bir dildeki bilgi diğerine taşınabilir.
Spark yalnızca toplu işlemler için mi?
Hayır. Toplu işlemenin yanında sürekli gelen veriyi işleyen akış modunu da destekler. Toplu ve akış işlemede benzer arayüzler kullanıldığı için aynı mantık iki alanda da yeniden kullanılabilir. Akış modunda veri küçük parçalar hâlinde sürekli işlenir; zaman penceresi, geç gelen veri ve hata toleransı gibi konular ayrıca ele alınması gereken konulardır.