Yeni Başlayanlar İçin Apache Spark Akış Eğitimi: Çalışma, Mimari ve Özellikler
Yayınlanan: 2020-02-27Şu anda her saniye çok büyük miktarda verinin hızlı bir şekilde üretildiği bir dünyada yaşıyoruz. Bu veriler doğru bir şekilde analiz edilirse anlamlı ve faydalı sonuçlar sağlayabilir. Ayrıca birçok sektöre doğru zamanda çözümler sunabilmektedir.
Bunlar Seyahat Hizmetleri, Perakende, Medya, Finans ve Sağlık Hizmetleri gibi sektörlerde çok faydalıdır. Diğer birçok önde gelen şirket, platformunda Amazon tarafından gerçekleştirilen farklı türdeki ürünlerle Müşteri etkileşiminin İzlenmesi veya Netflix tarafından sağlanan gerçek zamanlı olarak kişiselleştirilmiş öneriler alan İzleyiciler gibi Veri Analizini benimsemiştir.
Büyük miktarda veri kullanan herhangi bir işletme tarafından kullanılabilir ve işlerindeki genel süreci iyileştirmek ve müşteri memnuniyetini ve kullanıcı deneyimlerini artırmak için kendi yararları için analiz edebilirler. Daha iyi Kullanıcı deneyimleri ve müşteri memnuniyeti, kuruluşa uzun vadede işi büyütmek ve kar elde etmek için fayda sağlar.
İçindekiler
Akış nedir?
Veri akışı, bilginin sürekli ve sabit bir akış olarak aktarıldığı bir yöntemdir. İnternet büyüdükçe, akış teknolojileri de artıyor.
Spark Akışı nedir?
Veriler sürekli olarak bağlanmamış bir dizide geldiğinde, buna veri akışı denir. Girdi verileri sabit bir şekilde akıyor ve akışa bölünüyor. Verilerin daha fazla işlenmesi, ayrı birimlere bölündükten sonra yapılır. Verilerin analiz edilmesi ve verilerin düşük gecikmeyle işlenmesi akış işleme olarak adlandırılır.
2013 yılında, Spark Streaming ile Apache Spark eklendi. TCP Sockets, Amazon Kinesis, Apache Flume ve Kafka gibi Veri alımının gerçekleşebileceği birçok kaynak vardır. Sofistike algoritmalar yardımıyla verilerin işlenmesi yapılır. İşlemi ifade etmek için pencere, birleştirme, küçültme ve harita gibi üst düzey bir işlev kullanılır. İşlenen verileri dosya sistemlerine göndermek için Canlı Gösterge Tabloları, Veritabanları ve dosya sistemleri kullanılır.

Akışın Çalışması
Aşağıdakiler dahili çalışmadır. Spark akışı, canlı giriş veri akışlarını gruplara böler. Spark Engine, sonuç olarak son akış grupları oluşturmak için bu grupları işlemek için kullanılır.
Akıştaki veriler küçük gruplara bölünür ve Apache Spark Ayrıklaştırılmış Akış (Spark DStream) ile temsil edilir. Spark RDD'leri, DStream'leri oluşturmak için kullanılır ve bu, Spark'ın temel veri soyutlamasıdır. Spark SQL ve Spark MLib gibi Apache Spark'ın herhangi bir bileşeni, Spark Streaming ile sorunsuz bir şekilde kolayca entegre edilebilir.
Spark Akışı, canlı veri akışlarının ölçeklenmesine yardımcı olur. Çekirdek Spark API'sinin uzantılarından biridir. Ayrıca, hataya dayanıklı akış ve yüksek verimin işlenmesini sağlar. Spark Streaming kullanımı, canlı verilerin Gerçek zamanlı işlenmesini ve akışını sağlar. Dünyanın En Büyük Şirketleri Pinterest, Netflix ve Uber gibi Spark Streaming hizmetini kullanıyor.
Spark Streaming ayrıca verilerin gerçek zamanlı olarak analizini sağlar. Verilerin Canlı ve Hızlı işlenmesi, Spark Streaming'in tek platformunda gerçekleştirilir.
Ayrıca Apache Spark Mimarisini okuyun
Neden Spark Akışı?
Spark Streaming, Facebook, Borsa ve Coğrafi Sistemler gibi farklı kaynaklardan gerçek zamanlı veri akışı sağlamak ve işletmeleri teşvik etmek için güçlü analizler yapmak için kullanılabilir.
Spark Streaming'i benzersiz kılan beş önemli yönü vardır ve bunlar:
1. Entegrasyon
Grafik işleme, makine öğrenimi, SQL gibi Gelişmiş Kitaplıklar onunla kolayca entegre edilebilir.
2. Kombinasyon
Akışa alınan veriler, etkileşimli sorgular ve ayrıca statik veri kümeleri ile birlikte yapılabilir.
3. Yük Dengeleme
Spark Streaming, onu çok özel kılan mükemmel bir yük dengesine sahiptir.
4. Kaynak kullanımı
Spark Streaming, mevcut kaynağı çok optimum bir şekilde kullanır.
5. Geride kalanlardan ve başarısızlıklardan kurtulma
Spark Streaming, her türlü arızadan veya gecikmeden hızla kurtulabilir.
Apache Spark'ta Akış Gereksinimi
Verileri işlemek için geleneksel olarak akışları işlemek için sistem tasarlanırken sürekli operatör modeli kullanılır. Sistemin çalışması şu şekildedir:
- Veri kaynakları, verileri akışa almak için kullanılır. Farklı Veri kaynakları türleri; IoT cihazı, sistem telemetri verileri, canlı günlükler ve çok daha fazlasıdır. Bu akış verileri, Amazon Kinesis, Apache Kafka ve çok daha fazlası gibi veri alma sistemlerine alınır.
- Bir kümede, veriler üzerinde paralel işleme yapılır.
- Sonuçları iletmek için Kafka, Cassandra, HBase gibi aşağı akış sistemleri kullanılır.
Bir dizi çalışan düğüm, bazı sürekli operatörleri çalıştırır. Akış verilerinin kayıtlarının işlenmesi birer birer yapılır. Belgeler daha sonra boru hattındaki sonraki operatörlere iletilir.
Kaynak Operatörleri, alım sistemlerinden Veri almak için kullanılır. Sink Operatörleri, aşağı akış sistemine çıkış vermek için kullanılır.
Bazı operatörler süreklidir. Bunlar doğal ve basit bir modeldir. Büyük ölçekte yapılan gerçek zamanlı karmaşık verilerin Analitiği söz konusu olduğunda, geleneksel mimari modern dünyada bazı zorluklarla karşı karşıyadır ve bunlar:
Hızlı arıza kurtarma
Günümüzün sistem arızalarında, paralel düğümlerde eksik bilgileri hesaplayarak kaybolan bilgileri kurtararak hızlı bir şekilde eşlik eder ve uyum sağlar. Böylece geleneksel sistemlere kıyasla kurtarma işlemini daha da hızlı hale getirir.
Yük dengeleyici
Yük dengeleyici, kaynağın ve verilerin düğümler arasında daha verimli bir şekilde tahsis edilmesine yardımcı olur, böylece hiçbir kaynak beklemez veya hiçbir şey yapmaz, ancak veriler düğümler arasında eşit olarak dağıtılır.
Etkileşimli, Toplu İş ve Akış İş Yüklerinin Birleştirilmesi
Akış verilerine sorgular yaparak akış verileriyle de etkileşime girilebilir. Ayrıca statik veri kümeleriyle birleştirilebilir. Sürekli operatörler için tasarlanmadığı için yeni operatörler kullanılarak geçici sorgular yapılamaz. Etkileşimli, akışlı ve toplu sorgular tek bir motor kullanılarak birleştirilebilir.
ML ile SQL sorguları ve analizleri
Ortak veritabanı komutuyla sistemler geliştirmek, geliştiricinin yaşamını diğer sistemlerle işbirliği içinde çalışmayı kolaylaştırdı. Topluluk, SQL sorgularını yaygın olarak kabul eder. Sistemin, ileri analitik amaç için kullanılabilecek makine öğrenimi için modül ve kitaplıklar sağladığı yer.
Spark Akışına Genel Bakış
Spark Streaming, gerçek zamanlı verileri işlemek için kullanılan bir dizi RDD kullanır. Bu nedenle, Spark Akışı genellikle gerçek zamanlı veri akışını işlemek için yaygın olarak kullanılır. Spark Streaming, canlı veri akışlarının hataya dayanıklı ve yüksek verimli işlenmesini sağlar. Core Spark API ile gelen ekstra bir özelliktir.
Spark Akış Özellikleri
- İş Analizi : Spark Streaming kullanımı ile izleyicilerin davranışları da öğrenilebilir. Bu öğrenme daha sonra işletmelerin karar verme süreçlerinde kullanılabilir.
- Entegrasyon: Gerçek zamanlı ve Toplu işleme, Spark ile entegre edilmiştir
- Hata Toleransı – Spark'ın benzersiz yeteneği, arızadan verimli bir şekilde kurtulabilmesidir.
- Hız: Düşük Gecikme, Spark ile elde edilir
- Ölçekleme: Düğümler, Spark tarafından yüzlerce adede kadar kolayca ölçeklenebilir.
Spark Akış Temelleri
1. Akış İçeriği
Spark'ta veri akışı, Akış Bağlamı tarafından tüketilir ve yönetilir. Bir Giriş akışını kaydederek üretilen bir Alıcı nesnesi oluşturur. Bu nedenle, Akka Actor, Twitter ve ZeroMQ gibi farklı kaynaklar için varsayılan bir iş akışı sağlayan birçok bağlam sağladığı için sisteme kritik bir giriş noktası haline gelen ana Spark işlevidir.

Okuyun: Büyük Veride Apache Spark'ın Rolü ve Neden Benzersiz
Bir kıvılcım bağlam nesnesi, bir kıvılcım kümesiyle olan bağlantıyı temsil eder. Spark Streaming nesnesinin bir StreamingContext nesnesi tarafından oluşturulduğu yerde, akümülatörler, RDD'ler ve yayın değişkenleri de bir SparkContex nesnesi oluşturulabilir.
2. Kontrol Noktaları, Yayın Değişkenleri ve Akümülatörler
kontrol noktaları
Checkpoint, sistemlerin durumunu oyunlarda olduğu gibi depolayan Checkpoint'lere benzer şekilde çalışır. Bu durumda, Kontrol Noktalarının kaynak kaybını azaltmaya ve sistemi sistem arızalarına karşı daha dayanıklı hale getirmeye yardımcı olduğu durumlarda. Bir kontrol noktası metodolojisi, sistemin durumlarını takip etmenin ve kaydetmenin daha iyi bir yoludur, böylece kurtarma sırasında kolayca geri çekilebilir.
Yayın Değişkenleri
Ağ Düğümlerine görevlerin tam kopyasını sağlamak yerine, her zaman mevcut farklı görevlerin düğümlerini kabul etmekten ve böylece bireysel düğümler tarafından aktarım ve hesaplama maliyetini azaltmaktan sorumlu olan salt okunur bir değişkeni yakalar. Böylece önemli bir girdi kümesini daha verimli bir şekilde sağlayabilir. Ayrıca, yayın değişkenini ağdaki farklı düğümlere dağıtmak için gelişmiş algoritmalar kullanır; böylece iletişim maliyeti azalır.
akümülatörler
Akümülatörler, farklı amaçlar için özelleştirilebilen değişkenlerdir. Ancak sayaç ve toplam Akümülatörleri gibi önceden tanımlanmış Akümülatörler de vardır. Ayrıca her bir düğümün kaydını tutan izleme Akümülatörleri vardır ve buna bazı ekstra özellikler de eklenebilir. Sayısal Akümülatörler, Spark tarafından da desteklenen birçok dijital işlevi destekler. Kullanıcı tarafından talep edilen özel tanımlı Akümülatörler de oluşturulabilir.
DStream
DStream, Ayrıklaştırılmış Akış anlamına gelir. Spark Streaming, Ayrıklaştırılmış Akış (DStream) adı verilen gerekli soyutlamayı sunar. DStream, sürekli akan bir veridir. Bir veri kaynağından DStream alınır. Ayrıca işlenmiş veri akışından da elde edilebilir. Giriş akışının dönüştürülmesi, işlenmiş veri akışını oluşturur.
Belirli bir aralıktan sonra veriler bir RDD'de bulunur. Sonsuz RDD serisi bir DStream'i temsil eder.
Önbelleğe almak
Geliştiriciler, akışın verilerini bellekte önbelleğe almak için DStream'i kullanabilir. Bu, veriler DStream'de birden çok kez hesaplanıyorsa kullanışlıdır. Bir DStream'de persist() yöntemi kullanılarak elde edilebilir.
Verilerin çoğaltılması, sistemdeki arızalara karşı direnç gösterebilen ve sistemdeki arızaları tolere edebilen (Kafka, Soketler, Flume vb.)
Spark Akış Avantajı ve Mimarisi
Bir seferde bir veri akışının işlenmesi bazen zahmetli olabilir; bu nedenle Spark Streaming, verileri kolayca yönetilebilen küçük alt gruplara ayırır. Bunun nedeni, Spark çalışanlarının Spark Streaming alıcısı tarafından kabul edilen paralel veri arabelleklerini almasıdır. Ve bu nedenle tüm sistem partileri paralel olarak çalıştırır ve ardından nihai sonuçları biriktirir. Daha sonra bu kısa görevler Spark motoru tarafından gruplar halinde işlenir ve sonuçları diğer sistemlere sunulur.
Spark Streaming mimarisinde, hesaplama bir düğüme statik olarak atanmaz ve yüklenmez, ancak veri konumu ve kaynakların kullanılabilirliği temel alınır. Böylece önceki geleneksel sistemlere kıyasla yükleme süresini kısaltıyor. Bu nedenle veri yerelliği ilkesinin kullanılması, arıza tespiti ve giderilmesi için de daha kolaydır.
Spark'taki veri düğümleri genellikle Esnek Dağıtım Veri Kümesi olan RDD tarafından temsil edilir.
Spark Streaming'in Hedefleri
Spark mimarisinin ulaştığı Hedefler aşağıdadır.
1. Dinamik yük dengeleme
Bu, veri akışlarının yük dengeleyici tarafından dinamik olarak tahsis edildiği, verinin tahsisinden ve içinde tanımlanan belirli kuralları kullanarak kaynakların hesaplanmasından sorumlu olan Spark Streaming'in temel özelliklerinden biridir. Yük dengelemenin temel amacı, iş yükünü işçiler arasında verimli bir şekilde dengelemek ve her şeyi mevcut kaynak israfı olmayacak şekilde paralel bir şekilde koymaktır. Ayrıca sistemdeki çalışan düğümlere dinamik olarak kaynak tahsis etmekten de sorumludur.
2. Arıza ve Kurtarma
Geleneksel sistemde olduğu gibi, bir işlem hatası meydana geldiğinde, tüm sistem, kaybolan bilgiyi geri almak için o kısmı yeniden hesaplamak zorundadır. Ancak sorun, bir düğüm tüm bu kurtarma işlemlerini gerçekleştirirken ve tüm sistemin tamamlanmasını beklemesini sağladığında ortaya çıkar. Spark'ta ise kaybolan bilgiler diğer serbest düğümler tarafından hesaplanır ve geleneksel yöntemlerde olduğu gibi ekstra beklemeye gerek kalmadan sistemi izlemeye geri getirir.
Ayrıca, başarısız olan görev, geleneksel yöntemden daha hızlı bir şekilde yeniden hesaplamak ve hatadan geri getirmek için sistemdeki tüm düğümlere eşit olarak dağıtılır.
3. Partiler ve Etkileşimli sorgu
Spark'taki RDD kümesi, Akış iş yükleri ve toplu işler arasında bir ilişki sağlayan Spark'ta DStream olarak adlandırılır. Bu yığınlar Spark'ın belleğinde depolanır ve bu, içinde bulunan verileri sorgulamak için verimli bir yol sağlar.
Spark'ın en iyi yanı, kıvılcım sistemi tarafından gerektiğinde kullanılabilecek çok çeşitli kitaplıkları içermesidir. Kitaplıkların birkaç adı makine öğrenmesi için MLlib, veri sorgulaması için SQL, GraphX ve Data Frame'dir, oysa Dataframe ve sorular DStreams tarafından eşdeğer SQL ifadelerine dönüştürülebilir.
4. Performans
Kıvılcım sistemi, üretim kapasitesini artıran ve böylece birkaç 100 milisaniyeye kadar düşük gecikme süresi elde edebilen kıvılcım motorundan yararlanan görevin paralel dağıtımlarını kullandığından.
Spark Akışı nasıl çalışır?
Akıştaki veriler, Spark Akışında DStreams olarak adlandırılan küçük gruplara bölünür. Dahili olarak bir RDD dizisidir. Spark API'leri, verileri işlemek için RDDS tarafından kullanılır ve sonuç olarak gönderiler iade edilir. Spark Streaming API'si Python, Java ve Scala'da mevcuttur. Spark 1.2'de yakın zamanda tanıtılan Python API'sinde birçok özellik eksik.
Durum bilgisi olan hesaplamalar, akıştaki gelen verilere dayalı olarak Spark Akışı tarafından sürdürülen bir durum olarak adlandırılır. Akışta akan veriler bir zaman çerçevesi içinde işlenir. Bu zaman çerçevesi geliştirici tarafından belirlenecek ve Spark Streaming tarafından izin verilecektir. Zaman penceresi, işin tamamlanması gereken zaman çerçevesidir. Zaman penceresi, pencerede kayan aralık olarak da bilinen bir zaman aralığı içinde güncellenir.
Spark Akış Kaynakları
Bir giriş DStream ile ilgili olan alıcı nesnesi, alınan verileri işlenmek üzere Sparks Belleğinde saklar.
Yerleşik akışın iki kategorisi vardır:
1. Temel kaynak
Akış API'sinde bulunan kaynaklar, örneğin Soket Bağlantısı ve Dosya Sistemi.
2. Gelişmiş kaynak
Kaynakların ileri seviyesi Kinesis, Flume & Kafka vb.
Akış İşlemleri
Spark RDDS tarafından desteklenen iki tür işlem vardır ve bunlar:-
1. Apache Spark'ta Çıktı İşlemleri
Çıktı İşlemleri, DStream verilerini dosya sistemi veya veritabanı gibi harici bir sisteme göndermek için kullanılır. Çıktı İşlemleri, dönüştürülmüş verilerin harici sistemler tarafından tüketilmesine izin verir. Tüm DStreams Dönüşümü, aslında harici sistemler tarafından yapılan tetikleme tarafından yürütülür.
Bunlar mevcut Çıktı işlemleridir:
foreachRDD(işlev), [sonek]), saveAsHadoopFiles(önek, [sonek]), saveAsObjectFiles(önek, [sonek])”prefix-TIME_IN_MS[.suffix]”, saveAsTextFiles(prefix, print()
RDD'ler tembelce çıktı İşlemlerini yürütür. Çıktı DStream İşlemleri içinde, alınan verilerin işlenmesi için zorla RDD Eylemleri yapılır. Çıktı İşlemlerinin yürütülmesi birer birer yapılır. Spark uygulamaları, çıktı işlemlerinin performans sırasını tanımlar.
2. Kıvılcım Dönüşümü
Spark dönüşümü, RDD'ler Spark'ta desteklediği için DStream'deki verileri de değiştirir. Spark RDD'ler gibi, birçok değişiklik DStream tarafından desteklenir.

Aşağıdakiler en yaygın Dönüşüm işlemleridir:
Window(), updateStateByKey(), transform(), [numTasks]), cogroup(otherStream, [numTasks]), join(otherStream, ReduceByKey(func, [numTasks]), countByValue(), Reduce(), union(otherStream) ), count(), repartition(numPartitions), filter(), flatMap(), map().
Çözüm
Günümüzün veri odaklı dünyasında, verileri depolamak ve analiz etmek için kullanılan araçlar, iş analitiği ve büyümede kilit faktör olduğunu kanıtlamıştır. Büyük Veri ve ilgili araçlar ve teknolojilerin artan bir talep üzerinde olduğu kanıtlanmıştır. Bu nedenle Apache Spark harika bir pazara sahiptir ve müşterilere ve işletmelere harika özellikler sunar.
Büyük Veri hakkında daha fazla bilgi edinmek istiyorsanız, çalışan profesyoneller için tasarlanmış ve 7+ vaka çalışması ve proje sağlayan, 14 programlama dili ve aracını kapsayan, pratik uygulamalı Büyük Veride Yazılım Geliştirme Uzmanlığı programında PG Diplomamıza göz atın çalıştaylar, en iyi firmalarla 400 saatten fazla titiz öğrenim ve işe yerleştirme yardımı.
Dünyanın En İyi Üniversitelerinden Online Yazılım Geliştirme Kursları öğrenin . Kariyerinizi hızlandırmak için Yönetici PG Programları, Gelişmiş Sertifika Programları veya Yüksek Lisans Programları kazanın.