Ana içeriğe atla

Apache Spark ile Apache Kafka entegrasyonu, kısa bir bakış

Günümüzde akan verinin dağıtık işlenmesinde en çok tercih edilen açık kaynak kodlu yazılımlardan olan Apache Spark ile, uzun süre diskte saklanabilen esnek dağıtık kuyruk yapısı sunan Apache Kafka nın entegrasyonu bu yazının konusu. Konu akan veri olunca, bu verinin sistemler arasında akışı ve bu sırada işlenişi ana işlem haline geliyor. Verinin Kafka da bir süre tutulması, Spark da işlenmesi ve sonrasında işlenen verinin saklanması döngüsü süreklilik arz eden ve 7x24 süren bir süreç olduğundan, normal batch veri işleme mantığı ile çözülemeyecek bir problemdir.

Veri okunması

Kafka dan verinin okunması consumers (tüketiciler) aracılığı ile olurken, işlenen verinin Kafka ya yazılması producers (üreticiler) aracılığı ile oluyor. Tüketiciler ile ilgili Spark ın kendi API si içinde
oldukça kullanışlı. Tabii burada eski createStream ile yeni createDirectStream metodları arasındaki farka dikkat edilmeli. Akan verinin işlenmesinde eldeki senaryoya göre, verinin kaybına tahammül olmayan durumlar ile olan durumların geliştirme aşamasına getirdiklerine dikkat etmek gerekiyor. Örnek bir veri akışı başlatıcı örnek bir scala kod satırı şöyle olabiliyor.
val messages = KafkaUtils.createDirectStream[String, Array[Byte],
  StringDecoder,
  DefaultDecoder](ssc,
  kafkaParams,
  kafkaTopics)

Veri yazılması

Fakat, Kafka ya veri yazılmasında bu güzel tablo ortadan kayboluyor. Nedeni ise Spark dan Kafka ya yazma konusunda Spark ın bildiğim kadarı ile bir API sunmaması. Bu konuda yaptığım araştırmada, Spark ın sayfasında output-operations-on-dstreams başlığı altında anlatılanlar dışında, en iyi örnekli anlatım Marcin Kuthan ın Spark and Kafka Integration patterns ile garantisiz, Spark and Kafka Integration patterns 2 ile garantili yada güvenilir (reliable) entegrasyonu konu alan yazılarıdır.
Akan verideki kayıpların tolere edilebildiği durumlarda DStream, RDD, RDDPartition derinliğinde uygun yazmalar yapılarak işlem tamamlanabilir. Bu tür bir senaryoya örnek; trafik akışı yoğunluğu için tarasarlanan bir sistem olarak verilebilir. Burada verideki aşanacak kayıplar istenen amaç açısından sonuca etkisi kısıtlı olacaktır. Verideki kayıpların tolere edilemeyeceği durumlarda ise, örnek; paralı otoyol gişelerinden geçen araçların her birinin ürettiği veri işlenmelidir. Aksi durumda müşteri memnuniyetsizliği veya gelir kaybı olarak sonuçlanır.

Operasyon

Büyük ve akan veri dünyasının geliştirme, üretime alma ve operasyonu (devops) birleştiren doğası burada da geçerlidir. Böyle bir geliştirmeye başlarken ilk adım olan Apache Kafka ve Apache Spark cluster larının kurulumu sırasında, gözden geçirilmesi gereken birçok parametre vardır.

Güncelleme

Entegrasyon işlerinin en zor kısımlarından birisi de, üretime alınan sistemin güncellenmesidir. Yolda 80 km/saat hızla giden bir arabanın yağının değiştirilmesi, silecek suyunun eklenmesi, hatta motorunun da değiştirilmesi gibi birçok işin -araba yolda gitmeye devam ederken- yapılması beklenir. Bu nedenle, akan büyük veri dünyasında öğrenecek çok şey ve gidilecek çok yol vardır her zaman ve kullandığınız yazılımlar seneyi devirmeden eskimeye başlar. :)
Hakan Sarıbıyık

Yorumlar

Bu blogdaki popüler yayınlar

SAS Nedir?

Anthony Barr, James Goodnight, John Sall ve Jane Helwig isimli dört kişi tarafından 1976 yılında Statistical Analysis System i smi ile kurulan fakat yazılım alanında ürettiği ürünlerle bu sınırları aşan SAS (SAS Institute) günümüzde borsaya açık olmayan dünyanın en büyük yazılım şirketlerinin başında geliyor. Hiç kuşkusuz bu dörtlüden en önemlisi, Harvard Business School tarafından* 20 inci yüzyılın en önemli iş liderleri listesinde gösterilen ve aynı zamanda şirketin CEO su olan James "Jim" Goodnight dır. İstatistik alanında doktorası olan Goodnight ayrı bir yazı konusu olmayı hakeden renkli bir kişilik. SAS denince ilk akla gelen öncelikle istatistik ve iş zekası alanlarında marketin önemli oyuncularının başında gelen ve "Bilmenin gücü (Power to know)" nü uzun yıllardır müşterilerinin hizmetine sunan Amerika Kuzey Karolayna merkezli dev bir yazılım şirketi olduğudur. Detaylarda ise genetik, tarım, finans, telekom, uzay, ilaç, kimya, bankacılık gibi birçok farkl

Veri kalitesi işlemlerinde bulanık mantığın (Fuzzy logic) kullanılması

Bulanık mantık (Fuzzy Logic) üzerine 1995 yılında bitirdiğim yüksek lisans tezinde, bulanık mantık ile çalışan bir uzman sistem yapmıştım. O zamanlar bulanık mantık, bilişim teknolojileri alanında yeni yeni emekleme dönemindeydi. Özellikle veritabanlarında bilgi keşfi çalışmaları için kullanılması yönünde oldukça çok akademik çalışma yapılmaktaydı. Günümüzde Bilgi Teknolojileri (BT) sektöründe bulanık mantık dahil diğer bilgi belirsizliği modellerini, BT profesyonelleri "kullanıyor" dememiz zor. Fakat en zor alanlardan biri olan ve gün geçtikçe önemi artan veri kalitesinin arttırılması konusunda yapılan çalışmalarda, bulanık mantık terimi oldukça sık ismi geçen bir terim haline geldi. Bu nedenle yazımızın konusu bu terimin genel anlamından çok veri kalitesinde kullanımı konusunda olacak. Veri kalitesi çalışmalarında fuzzy logic kelimelerini ilk duyduğumda kelimelerin bulanık küme teorisinde kullanılması geldi. Örneğin; çok gürültülü kelimesinin bulanık kümesinin kurulmas

Veriden Bilgiye Dönüşüm Sürecinin Temelleri

Merhaba, Ağırlıklı olarak Telekom sektöründe uzun yıllardır çalışmakta olan birisi olarak, büyük şirketlerdeki verinin ilk çıkış noktalarından, raporlarda yer alması ve karar destek sistemlerinde görünmesine kadar giden süreçler hakkında önemli bir bilgi birikimim oldu. Bu bilgi birikimi farklı noktalardan bakışı gerektirir ve az sayıda profesyonel, bu bakışa sahip olma ayrıcalığını taşır. Sürekli değişen Bilgi Teknolojileri (BT)  araçları ve yüksek rekabet ortamı içinde bu bilgi ve tecrübeyi sürekli güncel tutmakta ayrı bir gayret gerektirir. Tabii ki bu tecrübede kullanılan araçların yeri yadsınamaz. Atalarımız alet işler el övünür derken haklı bir noktaya temas etmişler. Fakat bu bizde, aletin işin en önemli parçası olduğu şeklinde bir yanılsama yaratmasın. Peki, işin en önemli kısmı nedir öyleyse? Bu soruya yanıt vermeden önce sürece biraz yakından bakmakta fayda var. Gerçekte birbirine benzeyen büyük şirket yada kurumlarda (yazının devamında ikisi içinde büyük org