Geleneksel yöntemlerle işlenemeyen veriler için kullandığımız büyük veri kavramı hem yazılımsal anlamda hem de kütüphaneler, fonksiyonlar ve benzeri araçlar anlamında çok çeşitli yapılar içermesine karşın bu kavram dile getirildiğinde akla ilk gelen sistemler elbette Apache Hadoop ve Apache Spark oluyor. Bu yazıda büyük veri ekosisteminin bu vazgeçilmezlerini inceleyecek ve ekosisteminin diğer oyuncularına da bir göz atacağız.
Apache Hadoop
Apache Hadoop açık kaynak kodlu, güvenilir, ölçeklenebilir paralel hesaplama yazılımı projesidir. Büyük veri kapsamında akla ilk gelen yapılardandır. Büyük verinin tüm bileşenleri Apache Hadoop üzerine kurulmuştur. Dolayısıyla büyük veri dünyasının temelini oluşturmaktadır. Apache Hadoop, geleneksel yöntemler ile etkin olarak işlenmesi mümkün olmayan verilerin işlenebilmesine olanak tanır. Bir bilgisayar kümesinin belirli bir işi yapmak için tek bir bilgisayar gibi birlikte hareket etmesini sağlamaktadır. Apache Hadoop’un avantalarını kısaca sıralamak gerekirse:
Başka bir deyişle sistem çalışırken, bir makinenin bozulması tolere edilebilirdir ve aynı zamanda cluster (küme) sayısı yani bilgisayar sayısı istenildiği takdirde artırılabilir.
Apache Hadoop bazı temel bileşenlere sahiptir.
Apache Hadoop küme yapısı
Birden fazla bilgisayarın bir küme halinde bir arada çalışmasıdır.
Bu yapıda bir yönetici bir master node ve slave nodelar bulunur. Bir iş yapılması gerektiğinde master node işi planlar ve diğer slave nodelara dağıtır. Bu aşamanın ardından işlemler gerçekleştirilir ve sonuçlar toplanıp bir araya getirilerek iş tamamlanır.
MapReduce
MapReduce çalışma sistemini aşağıdaki tabloda verilen örnek üzerinden inceleyelim.
Input kısmında bazı hayvan isimleri birden fazla kez yazılmış şekilde bir girdi mevcuttur. Amaç girdi içerisinde hangi hayvandan kaç tane olduğunu elde etmektir. Splitting aşamasında satırlara bölünme işlemi gerçekleştirilir.
Ardından mapping aşamasında her bir bölümde yer alan hayvanlar kendi içinde sayılır. Bu aşamada görev HDFS üzerindeki girdi verilerini işlemektir. Girdi verisi satır satır map fonksiyonundan geçirilir. Map fonksiyonu veriyi işler ve yeni veri parçacıkları oluşturur.
Mapping basamağından sonra gelen shuffle ve reduce aşamalarının görevi, map aşamasından gelen veriyi işlemek ve indirgemektir. Bu basamaklar genel olarak reduce olarak da anılır.
Map ve reduce süreçleri boyunca yapılanlar küme üzerindeki tüm bilgisayarlara gönderilir. Tüm görevlerin başarılı sonuçlanması durumu, verilerin taşınması durumu ve benzeri işlemler kontrol edilir.
Merged basamağında ise parçalara bölünerek, aşama aşama halledilen işlemlerin sonuçları bir araya getirilir.
Apache Hadoop, disk tabanlı çalışan bir modeldir. Yani her MapReduce görevinde diskten okuma ve diske yazma işlemi yapılır.
Bu sebeple makine öğrenmesi gibi iteratif işlemlere ihtiyaç duyulduğunda bu işlemler sürekli diske gidip gelme ve diske okuma yazma yapılmasından kaynaklı olarak çok zaman alır ve kaynakları meşgul eder. Bu sebeple disk bazlı çalışma modeli yerine RAM bazlı (yani in memory -geçici bellek) çalışma yaklaşımıyla Hadoop’a alternatif olarak değil ama MapReduce disk bazlı çalışma modeline alternatif olarak geliştirilen Apache Spark olarak bilinen RDD çalışma prensibi yaygın olarak kullanılmaktadır.
Apache Spark
Apache Spark küme üzerinde hızlı ve genel amaçlı bilgi işleme sistemidir. MapReduce’a alternatif olarak gelmiştir. MapReduce modelinde yer alan disk bazlı çalışma sisteminin yarattığı maliyetlerden dolayı ortaya çıkmıştır. Bu kapsamda Apache Spark'ın çeşitli avantajları bulunmaktadır:
Apache Spark’ın bileşenleri ise şunlardır:
RDD
RDD, dayanıklı dağıtık veri setleri anlamına gelir. RDD’de yapılan işlemler veriyi RAM’e taşımak, RAM üzerinde dönüşüm işlemlerini ve gerekli iteratif işlemleri gerçekleştirmek ve işlemlerin bitiminden sonra veriyi tekrar diske yazmaktır. Bu durum bellek içi (in memory) veri işleme olarak da adlandırılır.
RDD üç aşamadan oluşmaktadır:
Aksiyon basamağı tetiklenmeden uygulama işlemi (execution) gerçekleşmemektedir. Bu yapısıyla tembel çalışma, literatürdeki ismiyle lazy evaluation olarak adlandırılır. Lazy olarak adlandırılmasına rağmen bu yöntem hız ve performans artırılması açısından verimli bir imkan sağlanmaktadır.
Hadoop MapReduce ve Apache Spark’ın Farkı
Günlük hayattan bir örnek ile Hadoop MapReduce ve Apache Spark’ın farkını pekiştirelim:
Apache Spark sistemi, veriyi RAM’e dağıtık bir şekilde taşır. Kümedeki bilgisayarların RAM’inde işlenmek üzere bazı görevler dağıtılır. Bu görevler gerçekleştirilir, dönüştürme işlemleri hayata konur ve aksiyon fonksiyonları tektiklendiğinde işlemler diske yazılarak kalıcı hale getirilir.
Büyük veri ekosisteminin diğer üyeleri
Büyük veri, hem yazılımsal anlamda hem de kütüphaneler, fonksiyonlar ve benzeri araçlar anlamında çok çeşitli yapıları içerisinde barından zengin bir ekosistemdir.
Bu ekosistemin sık kullanılan bazı araçlarını inceleyelim:
Büyük veri analitiği hakkında detaylı bilgi edinmek isterseniz Miuul'un Büyük Verinin Temelleri üzerine oluşturduğu eşsiz eğitimlere mutlaka göz atmalısınız. Veri bilimini veya veri mühendisliğini kariyer rotanıza koyduysanız Miuul’un Data Scientist Path veya Data Engineer Path eğitim programları tam olarak aradıklarınızı sizlere sunacaktır.
Kaynaklar