O slideshow foi denunciado.
Utilizamos seu perfil e dados de atividades no LinkedIn para personalizar e exibir anúncios mais relevantes. Altere suas preferências de anúncios quando desejar.
Apache Spark
BURAK KÖSE
Apache Spark Nedir?
Apache Spark™ Scala programlama dili ile geliştirilen
büyük ölçekli verileri hızlı bir şekilde işlemek...
...
● Dağıtık hesaplama için bir framework
● In-memory, fault tolerant veri yapıları
● Scala, Java, Python, R, SQL destekl...
Nasıl Ortaya Çıktı?
Nasıl Ortaya Çıktı?
● 2009 UC Berkeley
● 2013’den beri Apache çatısı altında
● 2014 üst seviye Apache projesi
● databricks...
Neden Spark?
● Performans
● Geliştirici verimliliği
● Zengin API
● ...
Performans
● Graysort benchmark (100TB)
● Hadoop - 72 minutes / 2100 nodes / datacentre
● Spark - 23 minutes / 206 nodes /...
Performans
● 1PB(1000TB)
● Spark - 234 minutes / 190 nodes / AWS
Performans
● İteratif algoritmalarda
çok hızlı
● Mümkün olduğunda memory
kullanan yaklaşım
Zengin API
● map()
● reduce()
● filter()
● sortBy()
● map()
● reduce()
● join()
● groupByKey()
● first()
● count()
ve çok ...
Daha Az Kod, Daha Çok İş
Örneğin Hadoop’da basit bir kelime sayma işlemi
Daha Az Kod, Daha Çok İş
Oysa Spark’da (Scala)
val textFile = sc.textFile("hdfs://...")
val counts = textFile.flatMap(line...
Peki Neler Sağlıyor?
Nasıl Çalışıyor?
Terminoloji
Bu terimler nedir?
Driver SparkContext’e sahip proses
Executor Bir veya daha fazla görevi yürüten proses
Maste...
RDD nedir?
● RDD = Resilient Distributed Dataset
● Immutable, Fault-tolerant
● Parallel işletilirler
● Resilient: Eğer ver...
...
RDD’ler read-only ve immutable’dır
İşleyebilirsin ama değiştiremezsin
Okuyabilirsin ama yazamazsın
Spark Fonksiyonları
Transformations
● Lazy Evaluation
● Geriye yeni bir
RDD döndürür
Actions
● Geriye gerçek bir
değer dön...
Lazy Evaluation
import scala.util.Random
val headsRDD = sc.parallelize(0 to 1000)
.map(_ => Random.nextDouble)
.filter(_ <...
Spark Fonksiyonları - Örnekler
● scala> val nums = sc.parallelize(List(1,2,3)) //trans
● scala> nums.foreach(println) //ac...
...
● scala> val even = squared.filter(_ % 2 == 0) //trans
● scala> even.foreach(println) //action
4
● scala> val ranges =...
...
● scala> nums.collect //action
Array[Int] = Array(1, 2, 3)
● scala> nums.take(2) //action
Array[Int] = Array(1, 2)
● s...
Key/Value RDD
● Bir tuple objesi ile gösterilirler. Örn: (key,value)
● Yeni transformation işlemleri vardır.Örn: reduceByK...
Genel bir bakış...
...
1. Elindeki verilerden RDD'ler oluştur.
2. Yeni RDD'ler elde et.(Transformation aşaması)
3. Eğer birden fazla işlem ya...
RDDs – cache()
● cache() / persist()
● İlk kez bir action ile karşılaşıldığında,
sonucu bellekte tut anlamına gelir.
● Sad...
Persistence Seviyeleri
Seviye Yer Kullanımı CPU Kullanımı Bellekte mi? Diskte mi? Açıklama
MEMORY_ONLY Yüksek Düşük Evet H...
Deployment
CLUSTER
● Standalone
● Mesos
● YARN
● Amazon EC2
LOCAL
● Single threaded:
SparkContext(‘local’)
● Multi-threade...
Nereden Öğrenebilirim?
Yayınlanmış kitaplar...
● Learning Spark
● Advanced Analytics with Spark
● Fast Data Processing wit...
...
Online Kurslar…(edX)
● Introduction to Big Data with Apache Spark
● Scalable Machine Learning
Referanslar
● http://spark.apache.org/
● Learning Spark
O'Reilly Media
● Introduction to Apache Spark
MAMMOTH DATA
● The D...
SORULAR?
Próximos SlideShares
Carregando em…5
×

Apache Spark : Genel Bir Bakış

1.556 visualizações

Publicada em

Apache Spark : Genel Bir Bakış

Publicada em: Dados e análise
  • Seja o primeiro a comentar

Apache Spark : Genel Bir Bakış

  1. 1. Apache Spark BURAK KÖSE
  2. 2. 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.
  3. 3. ... ● 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
  4. 4. Nasıl Ortaya Çıktı?
  5. 5. Nasıl Ortaya Çıktı? ● 2009 UC Berkeley ● 2013’den beri Apache çatısı altında ● 2014 üst seviye Apache projesi ● databricks.com
  6. 6. Neden Spark? ● Performans ● Geliştirici verimliliği ● Zengin API ● ...
  7. 7. 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ı!
  8. 8. Performans ● 1PB(1000TB) ● Spark - 234 minutes / 190 nodes / AWS
  9. 9. Performans ● İteratif algoritmalarda çok hızlı ● Mümkün olduğunda memory kullanan yaklaşım
  10. 10. Zengin API ● map() ● reduce() ● filter() ● sortBy() ● map() ● reduce() ● join() ● groupByKey() ● first() ● count() ve çok daha fazlası ...
  11. 11. Daha Az Kod, Daha Çok İş Örneğin Hadoop’da basit bir kelime sayma işlemi
  12. 12. 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(_ + _)
  13. 13. Peki Neler Sağlıyor?
  14. 14. Nasıl Çalışıyor?
  15. 15. Terminoloji Bu 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
  16. 16. 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
  17. 17. ... RDD’ler read-only ve immutable’dır İşleyebilirsin ama değiştiremezsin Okuyabilirsin ama yazamazsın
  18. 18. 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.
  19. 19. 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
  20. 20. Spark Fonksiyonları - Örnekler ● scala> val nums = sc.parallelize(List(1,2,3)) //trans ● scala> nums.foreach(println) //action 3 1 2 ● scala> val squared = nums.map((num) => num*num) //trans ● scala> squared.foreach(println) //action 1 4 9
  21. 21. ... ● 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 0 1 2 0 1 0 1 2 3
  22. 22. ... ● 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
  23. 23. 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") //transformation val pairs = lines.map(s => (s, 1)) //transformation val counts = pairs.reduceByKey((a, b) => a + b) //action ``` ● Anahtar tabanlı işlemleri kolaylaştırırlar.
  24. 24. Genel bir bakış...
  25. 25. ... 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ı)
  26. 26. 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)
  27. 27. 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
  28. 28. Deployment CLUSTER ● Standalone ● Mesos ● YARN ● Amazon EC2 LOCAL ● Single threaded: SparkContext(‘local’) ● Multi-threaded: SparkContext(‘local[4]’)
  29. 29. 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
  30. 30. ... Online Kurslar…(edX) ● Introduction to Big Data with Apache Spark ● Scalable Machine Learning
  31. 31. 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
  32. 32. SORULAR?

×