Apache Spark : Genel Bir Bakış
-
Upload
burak-koese -
Category
Data & Analytics
-
view
809 -
download
7
Transcript of Apache Spark : Genel Bir Bakış
![Page 1: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/1.jpg)
Apache Spark
BURAK KÖSE
![Page 2: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/2.jpg)
Apache Spark Nedir?
Apache Spark™ Scala programlama dili ile geliştirilen büyük ölçekli verileri hızlı bir şekilde işlemek için
oluşturulmuş genel amaçlı bir platformdur.
![Page 3: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/3.jpg)
...
● Dağıtık hesaplama için bir framework● In-memory, fault tolerant veri yapıları● Scala, Java, Python, R, SQL destekleyen API● Açık kaynak
![Page 4: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/4.jpg)
Nasıl Ortaya Çıktı?
![Page 5: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/5.jpg)
Nasıl Ortaya Çıktı?
● 2009 UC Berkeley● 2013’den beri Apache çatısı altında● 2014 üst seviye Apache projesi● databricks.com
![Page 6: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/6.jpg)
Neden Spark?
● Performans● Geliştirici verimliliği● Zengin API● ...
![Page 7: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/7.jpg)
Performans
● Graysort benchmark (100TB)● Hadoop - 72 minutes / 2100 nodes / datacentre● Spark - 23 minutes / 206 nodes / AWS● Aslında durum HDFS vs Memory
● Yeni sürümleri ile çok daha hızlı!
![Page 8: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/8.jpg)
Performans
● 1PB(1000TB)● Spark - 234 minutes / 190 nodes / AWS
![Page 9: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/9.jpg)
Performans
● İteratif algoritmalarda çok hızlı
● Mümkün olduğunda memory kullanan yaklaşım
![Page 10: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/10.jpg)
Zengin API
● map()● reduce()● filter()● sortBy()
● map()● reduce()
● join() ● groupByKey()● first()● count()
ve çok daha fazlası ...
![Page 11: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/11.jpg)
Daha Az Kod, Daha Çok İşÖrneğin Hadoop’da basit bir kelime sayma işlemi
![Page 12: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/12.jpg)
Daha Az Kod, Daha Çok İşOysa Spark’da (Scala)
val textFile = sc.textFile("hdfs://...")
val counts = textFile.flatMap(line => line.split(" "))
.map(word => (word, 1))
.reduceByKey(_ + _)
![Page 13: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/13.jpg)
Peki Neler Sağlıyor?
![Page 14: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/14.jpg)
Nasıl Çalışıyor?
![Page 15: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/15.jpg)
TerminolojiBu terimler nedir?
Driver SparkContext’e sahip proses
Executor Bir veya daha fazla görevi yürüten proses
Master Kümeler arası uygulamaları yöneten proses
Worker Kendi Executor’larını yöneten proses
![Page 16: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/16.jpg)
RDD nedir?
● RDD = Resilient Distributed Dataset● Immutable, Fault-tolerant● Parallel işletilirler
● Resilient: Eğer veri kaybolursa yeniden yarat● Distributed: Dağıtık● Dataset: Veri manuel yaratılabileceği gibi
otomatik olarak da yaratılabilir
![Page 17: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/17.jpg)
...
RDD’ler read-only ve immutable’dır
İşleyebilirsin ama değiştiremezsin
Okuyabilirsin ama yazamazsın
![Page 18: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/18.jpg)
Spark Fonksiyonları
Transformations
● Lazy Evaluation● Geriye yeni bir RDD döndürür
Actions
● Geriye gerçek bir değer döndürür
Transformation bir action ile karşılaşana kadar işletilmez.
![Page 19: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/19.jpg)
Lazy Evaluation
import scala.util.Random
val headsRDD = sc.parallelize(0 to 1000) .map(_ => Random.nextDouble) .filter(_ < 0.51)
headsRDD.count>> 509
Yukarıdaki kod parçasında 2 numaralı bölümde yapılan tüm işlemler transformation’dır. Dolayısı ile lazy evulationdır. 2 numaralı bölüm ancak 3 numaralı bölümdeki gibi bir action ile
karşılaşılana kadar hesaplanmamıştır.
1
2
3
![Page 20: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/20.jpg)
Spark Fonksiyonları - Örnekler● scala> val nums = sc.parallelize(List(1,2,3)) //trans● scala> nums.foreach(println) //action
312
● scala> val squared = nums.map((num) => num*num) //trans● scala> squared.foreach(println) //action
149
![Page 21: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/21.jpg)
...● scala> val even = squared.filter(_ % 2 == 0) //trans● scala> even.foreach(println) //action
4
● scala> val ranges = nums.flatMap(0 to _) //trans● ranges.foreach(println) //action
012010123
![Page 22: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/22.jpg)
...● scala> nums.collect //action
Array[Int] = Array(1, 2, 3)● scala> nums.take(2) //action
Array[Int] = Array(1, 2)● scala> nums.count //action
Long = 3● scala> nums.reduce(_ + _) //action
Int = 6
![Page 23: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/23.jpg)
Key/Value RDD
● Bir tuple objesi ile gösterilirler. Örn: (key,value)● Yeni transformation işlemleri vardır.Örn: reduceByKey()
```val lines = sc.textFile("data.txt") //transformationval pairs = lines.map(s => (s, 1)) //transformationval counts = pairs.reduceByKey((a, b) => a + b) //action```
● Anahtar tabanlı işlemleri kolaylaştırırlar.
![Page 24: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/24.jpg)
Genel bir bakış...
![Page 25: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/25.jpg)
...
1. Elindeki verilerden RDD'ler oluştur.2. Yeni RDD'ler elde et.(Transformation aşaması)3. Eğer birden fazla işlem yapılacak ise Spark'a
persist işlemini bildir.4. Elindeki veriyi işle.(Action aşaması)
![Page 26: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/26.jpg)
RDDs – cache()
● cache() / persist()● İlk kez bir action ile karşılaşıldığında,
sonucu bellekte tut anlamına gelir.● Sadece bellek değil, çeşitli seviyeleri
vardır.● rdd.persist(StorageLevel.DISK_ONLY)
![Page 27: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/27.jpg)
Persistence Seviyeleri
Seviye Yer Kullanımı CPU Kullanımı Bellekte mi? Diskte mi? Açıklama
MEMORY_ONLY Yüksek Düşük Evet Hayır
MEMORY_ONLY_SER Düşük Yüksek Evet Hayır
MEMORY_AND_DISK Yüksek Orta Birazı BirazıVeri bellek için fazla büyükse veri parçalarını diske koymaya başlar
MEMORY_AND_DISK_SER Düşük Yüksek Birazı BirazıVeri bellek için fazla büyükse veri parçalarını diske koymaya başlar. Serilize edilerek saklanır
DISK_ONLY Düşük Yüksek Hayır Evet
![Page 28: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/28.jpg)
Deployment
CLUSTER
● Standalone● Mesos● YARN● Amazon EC2
LOCAL
● Single threaded:SparkContext(‘local’)
● Multi-threaded:SparkContext(‘local[4]’)
![Page 29: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/29.jpg)
Nereden Öğrenebilirim?
Yayınlanmış kitaplar...
● Learning Spark● Advanced Analytics with Spark● Fast Data Processing with Spark● Machine Learning with Spark● Spark Cookbook● Spark in Action● Spark GraphX in Action
![Page 30: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/30.jpg)
...
Online Kurslar…(edX)
● Introduction to Big Data with Apache Spark● Scalable Machine Learning
![Page 31: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/31.jpg)
Referanslar
● http://spark.apache.org/● Learning Spark
O'Reilly Media● Introduction to Apache Spark
MAMMOTH DATA● The Data Scientist’s Guide to Apache Spark
GALVANIZE
![Page 32: Apache Spark : Genel Bir Bakış](https://reader034.fdocuments.net/reader034/viewer/2022042517/587767bb1a28ab4e4f8b80c9/html5/thumbnails/32.jpg)
SORULAR?