SlideShare a Scribd company logo
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 için
oluşturulmuş genel amaçlı bir platformdur.
...
● 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
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.com
Neden Spark?
● Performans
● Geliştirici verimliliği
● Zengin API
● ...
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ı!
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 fazlası ...
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 => line.split(" "))
.map(word => (word, 1))
.reduceByKey(_ + _)
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
Master Kümeler arası uygulamaları yöneten proses
Worker Kendi Executor’larını yöneten proses
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
...
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öndürür
Transformation bir action ile karşılaşana
kadar işletilmez.
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
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
...
● 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
...
● 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
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.
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 yapılacak ise Spark'a
persist işlemini bildir.
4. Elindeki veriyi işle.(Action aşaması)
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)
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
Deployment
CLUSTER
● Standalone
● Mesos
● YARN
● Amazon EC2
LOCAL
● Single threaded:
SparkContext(‘local’)
● Multi-threaded:
SparkContext(‘local[4]’)
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
...
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 Data Scientist’s Guide to Apache Spark
GALVANIZE
SORULAR?

More Related Content

ODP
Ankara Spark Meetup - Big Data & Apache Spark Mimarisi Sunumu
ODP
Hadoop & Cloudera Workshop
PDF
Pig ve Hive ile Hadoop Üzerinde Veri Analizi v2
PPTX
Büyük Veri İşlemleri ve Hadoop
PPTX
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
PDF
Pig ve Hive ile Hadoop üzerinde Veri Analizi
PDF
Chapitre 3 spark
PDF
Simplifying Big Data Analytics with Apache Spark
Ankara Spark Meetup - Big Data & Apache Spark Mimarisi Sunumu
Hadoop & Cloudera Workshop
Pig ve Hive ile Hadoop Üzerinde Veri Analizi v2
Büyük Veri İşlemleri ve Hadoop
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Pig ve Hive ile Hadoop üzerinde Veri Analizi
Chapitre 3 spark
Simplifying Big Data Analytics with Apache Spark

What's hot (20)

PDF
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...
PDF
Büyük Veri, Hadoop Ekosistemi ve Veri Bilimi
PDF
Hadoop and Spark
KEY
Hadoop, Pig, and Twitter (NoSQL East 2009)
PPTX
Hadoop 1 vs hadoop2
PPTX
PDF
Büyük veri teknolojilerine giriş v1l
PDF
What is Apache Spark | Apache Spark Tutorial For Beginners | Apache Spark Tra...
PPTX
Apache Spark overview
PPTX
Hadoop introduction , Why and What is Hadoop ?
PDF
Top 5 Mistakes to Avoid When Writing Apache Spark Applications
PPTX
Spark architecture
PDF
Map Reduce
PPTX
Presentation Hadoop Québec
PDF
Introduction to redis - version 2
PPT
Scala and spark
PPTX
HADOOP TECHNOLOGY ppt
PDF
A Reference Architecture for ETL 2.0
PPTX
Apache Spark Architecture
PPTX
Introduction to Storm
Designing Apache Hudi for Incremental Processing With Vinoth Chandar and Etha...
Büyük Veri, Hadoop Ekosistemi ve Veri Bilimi
Hadoop and Spark
Hadoop, Pig, and Twitter (NoSQL East 2009)
Hadoop 1 vs hadoop2
Büyük veri teknolojilerine giriş v1l
What is Apache Spark | Apache Spark Tutorial For Beginners | Apache Spark Tra...
Apache Spark overview
Hadoop introduction , Why and What is Hadoop ?
Top 5 Mistakes to Avoid When Writing Apache Spark Applications
Spark architecture
Map Reduce
Presentation Hadoop Québec
Introduction to redis - version 2
Scala and spark
HADOOP TECHNOLOGY ppt
A Reference Architecture for ETL 2.0
Apache Spark Architecture
Introduction to Storm
Ad

Similar to Apache Spark : Genel Bir Bakış (20)

PDF
Veri işleme üzerine, Hakan Sarıbıyık
PDF
Ankara JUG Big Data Presentation
PDF
Hadoop @ devveri.com
PDF
Apache Spark ile Twitter’ı izlemek
PPTX
Big Data Sunum
PDF
Hadoop nedir
PPT
NoSQL Sunumu
PDF
1 hafta_dersi
PPTX
PPTX
Nosql wars &amp; machine learning
PDF
Hepsistream real time click-stream data analytics platform
PPTX
TBD Bilişim 2014 Veri Analitiği
PDF
Hbase Kullanım Senaryoları
PDF
Big Data Analytics
PDF
veri tabanları . sql vs nosql
PDF
Sunucularımızı Gözleyelim
ODP
Büyük veri(bigdata)
PPTX
ÖNCEL AKADEMİ: ÖZEL KONULAR
PPTX
Linkle mimari
PDF
Nosql veritabanlari
Veri işleme üzerine, Hakan Sarıbıyık
Ankara JUG Big Data Presentation
Hadoop @ devveri.com
Apache Spark ile Twitter’ı izlemek
Big Data Sunum
Hadoop nedir
NoSQL Sunumu
1 hafta_dersi
Nosql wars &amp; machine learning
Hepsistream real time click-stream data analytics platform
TBD Bilişim 2014 Veri Analitiği
Hbase Kullanım Senaryoları
Big Data Analytics
veri tabanları . sql vs nosql
Sunucularımızı Gözleyelim
Büyük veri(bigdata)
ÖNCEL AKADEMİ: ÖZEL KONULAR
Linkle mimari
Nosql veritabanlari
Ad

Apache Spark : Genel Bir Bakış

  • 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. ... ● 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
  • 5. Nasıl Ortaya Çıktı? ● 2009 UC Berkeley ● 2013’den beri Apache çatısı altında ● 2014 üst seviye Apache projesi ● databricks.com
  • 6. Neden Spark? ● Performans ● Geliştirici verimliliği ● Zengin API ● ...
  • 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. Performans ● 1PB(1000TB) ● Spark - 234 minutes / 190 nodes / AWS
  • 9. Performans ● İteratif algoritmalarda çok hızlı ● Mümkün olduğunda memory kullanan yaklaşım
  • 10. Zengin API ● map() ● reduce() ● filter() ● sortBy() ● map() ● reduce() ● join() ● groupByKey() ● first() ● count() ve çok daha fazlası ...
  • 11. Daha Az Kod, Daha Çok İş Örneğin Hadoop’da basit bir kelime sayma işlemi
  • 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(_ + _)
  • 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. 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. ... RDD’ler read-only ve immutable’dır İşleyebilirsin ama değiştiremezsin Okuyabilirsin ama yazamazsın
  • 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. 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. 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. ... ● 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. ... ● 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. 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.
  • 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. 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. 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. Deployment CLUSTER ● Standalone ● Mesos ● YARN ● Amazon EC2 LOCAL ● Single threaded: SparkContext(‘local’) ● Multi-threaded: SparkContext(‘local[4]’)
  • 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. ... Online Kurslar…(edX) ● Introduction to Big Data with Apache Spark ● Scalable Machine Learning
  • 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