Apache Spark Streaming Giriş

Bu yazımızda Apache Spark Streaming ne olduğunu ve işleyişini incelemeye çalışacağız.

Apache Spark Streaming Nedir ?

Spark Streaming, Apache Spark projesinin bir alt-projesidir. Apache Spark engine üzerinde çalışır ve gerçek zamanlı işlem (real-time processing) yapmamıza olanak sağlayan bir araçtır.

Not: Apache Spark, batch processing platformudur. Apache Hadoop’un alternatifidir diyebiliriz.

Spark Streaming ile olay bazlı, asenkron, ölçeklenebilir, tip güvenli ve hata tolerans’lı uygulamalar geliştirebiliriz. Farklı event stream’lerden(Kafka, Twitter, TCP socket) gelen gerçek zamanlı datayı kolaylıkla Spark Streaming‘e entegre edebiliriz. Gerçek zamanlı datayı yüksek seviye(high-level) fonksiyonlarla(map, reduce, join, window) işleyebilir ve işlenen datayı veritabanı, live dashboard ve file stream’lere yazabiliriz.

spark-in-out

Spark Streaming ile çeşitli alanlarda yüksek hacimli, ölçeklenebilir, güvenilir, güçlü uygulamalar geliştirebiliriz. Aşağıdaki gösterimde Spark Streaming’in bazı uygulama alanlarını görebiliriz.

streaming-use-cases

Apache Spark Streaming’in Çalışma Mantığı

Spark Streaming, event stream’lerdan aldığı live datayı mikro batchlere ayırır, bu mikro data batchler Spark Engine tarafından işlenir. Ve son olarak işlenen data yine mikro batchler olarak çıktıya yönlendirilir.

streaming-flow

Her bir data stream için bir tane DStream oluşturulur. Ham data DStream üzerinde tutulur. DStream‘i (Discretized Stream), mikro batch’lerin bir serisi gibi düşünebiliriz. Her bir mikro batch, RDD(Resilient Distributed Dataset) olarak ifade edilir. Her bir RDD, hata toleranslı bir element dizisi tutar. RDD, immutable, read-only ve paralel olarak işlenebilen objedir. Aşağıdaki şekilde de  görüleceği gibi bir RDDDStream üzerinde belli bir zaman aralığındaki datayı tutar.

streaming-dstream

DStream üzerinden yapılan her bir işlem(map, reduce, window) bu DStream altında bulunan RDD‘ler üzerinde yapılır. Aşağıdaki şekilde basit bir flatMap operasyonun gösterimi mevcuttur.

streaming-dstream-ops

Bir data kaynağından (Kafka, Twitter) ham datayı DStream ile okuruz. Bu tip DStream’ler input DStream olarak isimlendirilir. Her bir input DStream, bir Receiver ile ilişkilendirilir. Receiver, data kaynağından datayı alır ve daha sonra işlenebilmesi için Spark’ın hafızasında tutar.

Not : Data kaynağı file stream olan DStream’ler için Receiver kullanılmıyor.

Spark Streaming kavramları üzerinde biraz bilgi sahibi olduk. Sonraki yazımızda Spark Stream kullanarak TCP socket üzerinden datayı okuyup, bazı map reduce işlemleri yapacağız.

EOF

Kaynakça :
https://spark.apache.org/docs/latest/streaming-programming-guide.html#
http://planetcassandra.org/apache-spark-streaming/

Reklamlar

Apache Spark Streaming Giriş” üzerine bir düşünce

  1. Geri bildirim: Machine Learning Uygulaması: Giriş | Bahadır AKIN

Bir Cevap Yazın

Aşağıya bilgilerinizi girin veya oturum açmak için bir simgeye tıklayın:

WordPress.com Logosu

WordPress.com hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Google+ fotoğrafı

Google+ hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Twitter resmi

Twitter hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Facebook fotoğrafı

Facebook hesabınızı kullanarak yorum yapıyorsunuz. Çıkış  Yap /  Değiştir )

Connecting to %s