Merhaba Arkadaşlar ,
Bu makalemizde big data (büyük veri) uygulamaları yapabilmemizi sağlayan spark’ın kurulum ve üzerinde basit uygulamalar yapacağız.
Spark basit manada ne yapıyor diyecek olursak anlık veri işleyen , belirlediğimiz queryleri aralıklarla çalıştıran , makine öğrenmesi yapabilen ve en son olarak farklı veri tiplerimizi aynı platform üzerinde işlememize yardımcı olan bir veri işleme motorudur.
Spark’ın çok hızlı bir biçimde verileri işler bunun nedeni ise verileri memory üzerinde manipüle eder.Verileri hafızada nasıl depoluyor diyecek olrusak RDD(Resilient Distributed Datasets) yani esnek dağıtılmış veri setleri sayesinde bu işlemi yapıyor. Spark HDFS ,Cassandra Mongodb vs . bunların yanı sıra işletim sistemi üzerindeki hemen hemen bütün dosya türler üzerinde koşabililr.
RDD hakkında biraz değinecek olursak bu datasetlere atılan veriler değiştirelemez. Bu yüzden bir veri üzerinde çalıştıktan sonra eğer değiştirmek yada tekrar o veri üzerinden işlem yapmak istiyorsak yeni bir dataset oluşturmalıyız. Bunu yanı sıra rdd’ler memory cache çalışırlar bir referans üzerinde birden çok işlem yapacak olursak spark bunu tekrar tekrar oluşturmaz varolanı kullanır.
Şimdi ise yavaştan kuruluma geçelim ilk önce bilgisayarımızda python kurulmuş olması lazım. Python kurulumu için https://www.python.org/downloads/ bu adresten python’u indirelim. İndirdikten sonra bilgisayarımızda belirlediğiniz bir dizine çıkarın. Benim C:pythonPythonPython35-32 dizinin altında bulunuyor. Python kurulumu bilgisayarımıza ortam değişkeni olarak ekledikten sonra bitiyor.
python kurulumu doğru yapmışmıyız diye komut satırını açıp “python” diyerek test edebilirsiniz. Herşey düzgün yapıldı ise çıktınız şu şekilde olacaktır.
Bundan sonra ise bilgisayarınızda javanın kurulu olması gerkiyor. Aynı Sonrasında ise aynı adımları izleyerek ortam değişkenlerini java_path ayarlamamız gerekiyor. Bu adresten jdk indirebilirsiniz.
http://www.oracle.com/technetwork/pt/java/javase/downloads/jdk8-downloads-2133151.html
Bu adımlardan sonra apache spark kurmaya hazırız. İlk önce bilgisayarımıza apache sparkı indirmeliyiz.
Adres: https://spark.apache.org/downloads.html
Ben version olarak “2.0.2-bin-hadoop2.7” indirdim. İndirme işlemini bitirdikten sonra belirlediğimiz dizinimize zipli dosyayı çıkartıyoruz. Benim çıkarttığım dizin “C:sparkspark-2.0.2-bin-hadoop2.7” bu şekildedir.
Sonrasında ise işletim sistemimizin ortam değişkenlerimize spark’ı eklemeliyiz.
Artık tüm kurulumları tamamladık ve spark’ı çalıştıralım . Apache Spark’ı çalıştırabilmek için komut satırı açıp spark’ın kurulu olduğu dizinin altında bin klasörüne gitmemiz lazım.
cmd>>cdC:sparkspark-2.0.2-bin-hadoop2.7bin
Sonrasında ise komut satırında bu dizine geldikten sonra pyspark diyerek spark’ı çalıştırabiliriz. Kurulumunuz sorunsuz ise aşağıdaki gibi bir çıktı almanız gerekiyor.
Herşey tamam ise basit birkaç örnek yapalım . ilk önce bir tane rdd oluştutup belirli bir dosyamızın içinde count almayı deneyelim. Ben “yazarlar.bilisim.io” adlı dosyamızı bin dizinin altına kaydettim.
Şimdi ise count almayı deneyelim.
İlk önce dosyamızı rdd’ye tanımlayalım. Bunun için bu komut’u yazıyoruz.
>>>bilisimYazarlarRdd=sc.textFile(‘yazarlar.bilisim.io’)
Bu komut ile artık rdd file oluşturmuş olduk. Şimdi ise dosyamızın içinden count alalım. Dosyamızın içeriği şu şekildeydi.
Oluşturduğumuz rdd datasetimizden count almak için ise komutumuz şu şekilde olacaktır.
>>> bilisimYazarlarRdd.count()
Çıktısı şu şekildedir.
Şimdi ise aynı dosyamız içersinde filtreleme yaparak yeni rdd olusturup bunun count’unu alalım. Neden ayrı rdd olusturuyoruz diye sorarsak makalemizin baındada rdd’ler ile iliglili bahsetmiştik değiştirelemeyeceklerini bu yüzden yeni rdd olusturup onun countunu alacağız.
>>> yazarlarRddFilter = bilisimYazarlarRdd.filter(lambda line:’Mehmet’ in line)
bu satırda eski rddmizi filtreleyip içerisindeki aratacağımız kelimeyi yazıyoruz . ve yeni rddmizi oluşturmuş oluyoruz.
Yeni rdd’mizde count aldığımızda şöyle bir çıktı almamız lazım . Ben bir kaç örnek daha yaptım resimde yazarların post sayılarına göre filtreledim.
>>> yazarlarRddFilter.count()
Çıktısı şu şekildedir :
Bazı spark komutları :
bilisimYazarlarRdd.first() —>rdd içerisindeki ilk elamanı verir.
bilisimYazarlarRdd.map(lambda line: len(line.split())).reduce(lambda a, b: a if (a > b) else b) —>Bu komut satırı ise tüm dosyadaki lineları okuyor ve boşluğu referans alarak yanyana en çok kaç tane kelime yazılmış onun size’ını alıyor.
Daha çok komutları incelemek için ise https://spark.apache.org/docs/2.0.2/quick-start.html adresinden bakabilirsiniz.
Kurulum ve basit örnekler ile şimdilik yazımı sonlandırıyorum .Apache Spark serisine devam edeceğim konu “Spark Streaming ve Kafka Entegrasyonu” olacaktır. Sitemizi takip ederek bu konuyuda öğrenebilirsiniz.
Umarım Yararlı olmuştur.
iyi Çalışmalar