Apache Spark Nedir ?

Apache Spark Nedir ?

By In Big Data On 30 Ocak 2014


Apache Spark Nedir ?

Bu aralar Big Data konusu üzerine yapılan görüşmelerde yeni bir isim telaffuz ediliyor. Bir grup bu yeni popüler misafiri yani Apache Spark’ı, daha güçlü ve erişilebilir özellikleri nedeniyle Big Data’nın orijinal teknoloji seçeneği olan Hadoop’u tahtından edeceğini görmekteler. Diğer grup ise Hadoop ve benzeri kendini kanıtlamış Big Data teknolojilerinin tamamlayıcısı olarak Spark’ı görmekteler ve Spark’ın kendine has kullanım kolaylıklarının olmasına rağmen bununla birlikte limitlerinin de olduğunun farkındalar.

Spark, diğer Big Data araçları gibi, güçlüdür, sahip olduğu kabiliyetler yardımıyla geniş yelpazeyi kapsayan zor veri işlemlerinin üstesinden gelebilir.

Spark, diğer Big Data araçları gibi, veri işleme yapılan her iş için en iyi seçim olmayabilir.

Bu dokümanda, Spark’ı tanıtmakla kalmayıp Spark’ın kabiliyetlerinin uygulandığı ve sonuçların umut verdiği, en çok verim alabildiğimiz kullanım alanlarını göstereceğiz.

Spark’ın Tarihçesi?

Spark hayatına 2009 yılında Kaliforniya Berkeley Üniversitesi bünyesinde bulunan AMPLab’da bir proje olarak başlamıştır. Daha özele inersek, yine AMPLab bünyesinde geliştirilen Mesos’un tasarım konseptini ispatlamak amacıyla ortaya çıkmıştır. İlk kez Benjamin Hindman ve Matei Zaharia tarafından yazılan makalede “Mesos: Veri Merkezlerinde Kaynak Paylaşımı İçin ‘Fine Grained’ Bir Platform” Spark’ın bahsi geçmiştir.

Baştan beri, veri işleme adımlarının her birinde veriyi diske yazıp diskten okuyan Hadoop’un MapReduce işletim altyapısı ve diğerlerinin aksine Spark, bellek içinde çalışmak için optimize edildiği için veri işleme daha hızlıdır .

Spark savunucuları bellekte hesaplama işleminin Hadoop MapReduce’dan 100 kat daha hızlı olduğunu iddia ediyorlar. Öte yandan bellekte değil de disk üzerinde hesap yaparken dahi Hadoop MapReduce’dan 10 kat daha hızlı olduğunu iddia ediyorlar. Bu karşılaştırma hiç adil değil çünkü bu performans değerleri Spark’ın tipik kullanım durumlarından alınmıştır. Batch veri işlemede hala MapReduce benzeri çözümlerin kullanıldığını söyleyebiliriz.

Spark, 2013 yılında Apache Yazılım Derneği’nde kuluçka projesi olmuştur ve 2014’ün başlarında derneğin üst düzey proje derecesine yükselmiştir.

An itibariyle Spark, derneğin yürüttüğü projeler arasında en aktiflerinden birisidir. Proje çevresinde oluşan topluluk hem üretken bireysel katılımcılardan hem de Databricks, IBM ve Huawei gibi kurumsal destekçi firmalardan oluşmaktadır.

Spark, geniş yelpazede kullanıma uygun genel amaçlı bir veri işleme motorudur.

Büyük veri kümeleri üzerinde interaktif sorgular, sensörlerden çığ gibi akan veri üzerinde işlemler veya finansal sistemler üzerinde makine öğrenmesi işleri çoğunlukla Spark ile özdeşleştirilmiştir.

Ayrıca geliştiriciler Spark’ı diğer veri işleme faaliyetlerini kolaylaştırması için de kullanmaktadır. Spark’ın geliştirme kütüphaneleri ve API’ları, Java, Python, R ve Scala dillerine verdiği geniş kapsamlı destek geliştiricilere sağlamış olduğu kolaylıklardır. Spark sıkça Hadoop’un HDFS veri saklama dosya sistemi üzerinde çalışır. Ancak diğer popüler veri saklama sistemleriyle de entegrasyonu eşit düzeyde sağlanmıştır. Bunlar HBase, Cassandra, MapR-DB, MongoDB ve Amazon S3’dür.

Spark’ı seçmenin bir çok nedeni vardır fakat bunlardan üçü aşağıdaki gibidir:

Basitlik: Spark’ın kabiliyetlerine sunmuş olduğu zengin API kümesi üzerinden erişilebilir , bunlar özellikle veri üzerinde interaktif işlemleri hızlı ve basit şekilde sağlayabilen ve ölçümlenebilir bir mimari şeklinde tasarlanmıştır. Veri bilimcilerin ve uygulama geliştiricilerin Spark’ı sahada hızlıca uygulamaları için API dokümantasyonu düzgün, anlaşılır ve kaliteli bir dile sahiptir.
Hız: Spark’ın tasarımı bellek ve disk üzerinde çalışacak şekilde ve hız esas alınarak yapılmıştır. 2014’de yapılan Daytona Gray Sort yarışmasında Spark, SSD üzerinde tutulan 100 TB’lık veriyi sadece 23 dakikada sıralayarak birincilik ödülünü kazanmıştır. Düzenlenen bir önceki yarışmada Hadoop aynı veriyi 72 dakikada sıralayarak ödülün sahibi olmuştur. Yarışma statik veri kümelerinin işlenmesi üzerinedir. Fakat bellek içi interaktif sorguların bulunduğu bir ortamda Spark’ın Hadoop MapReduce’dan 100 kat daha hızlı olduğu görülmektedir.
Destek: Spark bir çok programlama dilini desteklemektedir. Bunlar arasında Java, Python, R ve Scala bulunmaktadır. Hadoop’un HDFS veri depolama sistemiyle çoğu zaman bağlantılı olsa da Spark, Hadoop’la veya ötesinde çalışabilen önde gelen veri depolama çözümleriyle içten bir entegrasyon kurmuştur. Buna ek olarak, Spark topluluğu oldukça büyüktür, aktiftir ve uluslararası yapıda bir çok geliştiriciyi barındırır. Kurumsal destekçilerinin sayısı her geçen gün artmaktadır. Bunlar Databricks, IBM, ve Spark bazlı destek veren önde gelen Hadoop dağıtımlarıdır.

Spark’ı Kim Kullanır ?

Teknoloji sağlayıcılarının büyük bir kısmı varolan Big Data ürünlerinin kalitesinin artırılması ve aynı zamanda çeşitlendirilmesi amacıyla interaktif sorgulama ve yapay öğrenme özelliklerine sahip olabilmek için Spark’ın potansiyelini farkettiler. Bu firmalar arasında iyi bilinenlerden IBM ve Huawei Spark teknolojisine hatırı sayılır yatırımlar yaptılar ve Spark’ı temel alan başlangıç firmalarının sayılarında ciddi artışlar yaşandı. 2013’te, örnek vermek gerekirse, Spark’ın geliştirilmesinden sorumlu Berkeley takımı Databricks isminde bir firma kurdu. Bu firma Spark ile güçlendirilmiş uçtan uca veri platformu hizmeti vermeye başladı.

Databricks 2013’de, yatırım kanallarından yaklaşık $47 milyon edindi ve bu yatırımla birlikte güçlenen Databricks ekibi 2014 ve 2015’de Apache Spark’ın kaynak kodunda hızlıca yeni özellikleri hayata geçirmeye başlayarak projenin geliştirilmesinde rol ve sorumluluk üstlendiler.

MapR, Cloudera ve Hortonworks’ün dahil olduğu önde gelen Hadoop dağıtımları kendi ürünleri yanında Spark’ı destekleyen bir modele geçtiler. Böylece hem Spark hem de Hadoop dağıtımlarını kullanan müşteriler desteklenmiş oldu.

Diğer tarafta, IBM, Huawei ve diğerleri Apache Spark’a hatırı sayılır yatırımlar yaptılar. Bu yatırımlar parasal olsa da bünyelerinde çalıştırdıkları personelin kendi ürünlerine Spark’ı entegre etmesi ve yapılan geliştirme ve iyileştirmelerin Apache Spark projesine dahil edilmesi tabii ki Spark için büyük bir gelişme olarak sayılabilir.

Çinli arama motoru Baidu, e-ticaret operasyonu Alibaba Taobao ve sosyal ağ firması Tencent Spark tabanlı operasyon sistemlerini ölçümlenebilir şekilde çalıştırmaktadır. Tencent’in 800 milyon aktif kullanıcısı günlük 700 TB’dan fazla veri üretmektedir ve bu veri 8000 işlem düğümü üzerinde işlenmektedir.

Bu büyük firmalara ek olarak, ilaç üreticisi Novartis model verilerini işleyen ve sonuçları araştırmacılara daha kısa sürede ulaştırmayı sağlamak amacıyla Spark teknolojisini kullanmaktadır.

Spark’ın Kullanım Alanları ?

Spark genel kullanıma açık bir veri işleme motorudur. Sunmuş olduğu API ve araçlar veri bilimciler ve uygulama geliştiricilerin kendi uygulamalarına Spark’ı entegre etmelerine olanak tanımaktadır. Böylece veriyi hızlı biçimde sorgulamak, analiz etmek ve dönüştürmek ölçümlenebilir şekilde mümkündür. Spark’ın esnekliği onu neredeyse kullanım durumlarında karşılaşılan tüm problemleri çözmede uygun bir araç olmasını ve Spark’ın petabyte’larca bilgiyi fiziksel ve sanal sunuculardan oluşan bir küme üzerinde dağıtık biçimde işleyebilmesine olanak sağlıyor.

Tipik kullanım durumları şunlardır:

Sel(Stream) işleme: Uygulama geliştiriciler log dosyaları ve sensör bilgileri gibi sel tipi bilgileri işlemeye çalışmaktadır. Bu tip veriler sürekli sel şeklinde gelmektedir. Çoğunlukla farklı kaynaklardan aynı anda gelmektedir. Sel tipi verilerin disk üzerinde saklanması ve geçmişe yönelik analizlerin çalıştırılması uygun gözükmekle birlikte, bazen verinin geldiği anda işlenmesi ve aksiyonların tetiklenmesi önemli olabilmektedir. Sel şeklinde gelen veri finansal işlemler olabilir yani örneğin bu tip bilgiler üzerinde gerçek zamanlı şekilde içerik tespitinin yapılması ve hileli, istismar finansal durumların tespit edilmesi istenebilir.
Makine öğrenmesi: Veri hacmi büyüdükçe, makine öğrenmesi yaklaşımlarını uygulamak daha mümkün hale gelmektedir ve kestirimler daha doğru yapılabilmektedir. Yazılım önceden anlaşılmış, işaretlenmiş veri kümesi kullanılarak eğitilir. Daha sonra yeni gelen ve bilinmeyen veri kümesi üzerinde eğitilen model çalıştırılarak modelin kestirim yapması sağlanır. Spark’ın yeteneği veriyi bellekte tutması ve bellek üzerindeki veri üzerinde yazılımdan çağrılan tekrarlanan sorguları hızlı biçimde işletebilmesidir. Makine öğrenmesi algoritmalarının yazılımları eğitmesi bu yetenekle hızlı ve kolay yapılabilmektedir. Birbirine benzer sorgu tiplerini tekrarlı biçimde ve ölçümlenebilir bir altyapı üzerinde çalıştırabilmek en iyi algoritma seçimlerinin bulunmasında kullanılan algoritmaların çalışma zamanını ciddi düzeyde düşürmüştür.
Interaktif analitik: BI uygulaması üzerinde önceden tanımlanmış statik sorguların çalıştırılması yordamıyla satışların izlenmesi, üretim hatları verimliliğinin gözlenmesi veya borsa verilerinin takip edilmesi sağlanabilir. Çoğu zaman iş analistleri ve veri bilimciler verilerin üzerinde sorular sorarak keşif yapmak isterler. Bu döngü soruların sorulması, sonuçların gözlenmesi ve daha detaylı keşif amacıyla başta sorulan sorunun değiştirilmesi şeklinde devam eder. Bu interaktif sorgulama işlemi Spark gibi hızlı cevap veren ve sorgulara uyum sağlayabilen veri işlemi platformu gerektirir.
Veri entegrasyonu: Firmaların farklı bölümlerinde üretilen bilgiler (ör: insan kaynakları, satış ve pazarlama, vb.) nadiren birbirleriyle uyumludur. Verilerde yaşanan bu uyum sorunu raporlama ve analiz işlemlerde ön plana çıkar. Çıkarma, dönüştürme ve yükleme (ETL) işlemleri çoğu zaman farklı veri kaynaklarından gelen verinin edinilmesi, temizlenmesi ve standart hale getirilmesi ve sonunda analiz için farklı bir veri saklama alanına atılması için kullanılır. ETL işletme zamanlarını ve operasyon maliyetlerini oldukça düşüren Spark ve Hadoop’un kullanımı artış gösteriyor..