SlideShare ist ein Scribd-Unternehmen logo
1 von 32
Downloaden Sie, um offline zu lesen
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?

Más contenido relacionado

Was ist angesagt?

Büyük veri(bigdata)
Büyük veri(bigdata)Büyük veri(bigdata)
Büyük veri(bigdata)Hülya Soylu
 
Hadoop Overview & Architecture
Hadoop Overview & Architecture  Hadoop Overview & Architecture
Hadoop Overview & Architecture EMC
 
Analysing of big data using map reduce
Analysing of big data using map reduceAnalysing of big data using map reduce
Analysing of big data using map reducePaladion Networks
 
Big Data PPT by Rohit Dubey
Big Data PPT by Rohit DubeyBig Data PPT by Rohit Dubey
Big Data PPT by Rohit DubeyRohit Dubey
 
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...Simplilearn
 
Big Data (Büyük Veri) Nedir?
Big Data (Büyük Veri) Nedir?Big Data (Büyük Veri) Nedir?
Big Data (Büyük Veri) Nedir?Renerald
 
Big data 24 mart 2015
Big data 24 mart 2015Big data 24 mart 2015
Big data 24 mart 2015Bilge Narin
 
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetup
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics MeetupIntroduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetup
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetupiwrigley
 
Introduction to Hadoop and Hadoop component
Introduction to Hadoop and Hadoop component Introduction to Hadoop and Hadoop component
Introduction to Hadoop and Hadoop component rebeccatho
 
Hudi architecture, fundamentals and capabilities
Hudi architecture, fundamentals and capabilitiesHudi architecture, fundamentals and capabilities
Hudi architecture, fundamentals and capabilitiesNishith Agarwal
 
Seminar Presentation Hadoop
Seminar Presentation HadoopSeminar Presentation Hadoop
Seminar Presentation HadoopVarun Narang
 
GCP Data Engineer cheatsheet
GCP Data Engineer cheatsheetGCP Data Engineer cheatsheet
GCP Data Engineer cheatsheetGuang Xu
 
Big Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellBig Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellKhalid Imran
 
Productionizing Machine Learning Pipelines with Databricks and Azure ML
Productionizing Machine Learning Pipelines with Databricks and Azure MLProductionizing Machine Learning Pipelines with Databricks and Azure ML
Productionizing Machine Learning Pipelines with Databricks and Azure MLDatabricks
 
Hw09 Hadoop Development At Facebook Hive And Hdfs
Hw09   Hadoop Development At Facebook  Hive And HdfsHw09   Hadoop Development At Facebook  Hive And Hdfs
Hw09 Hadoop Development At Facebook Hive And HdfsCloudera, Inc.
 

Was ist angesagt? (20)

Büyük veri(bigdata)
Büyük veri(bigdata)Büyük veri(bigdata)
Büyük veri(bigdata)
 
Hadoop Overview & Architecture
Hadoop Overview & Architecture  Hadoop Overview & Architecture
Hadoop Overview & Architecture
 
Analysing of big data using map reduce
Analysing of big data using map reduceAnalysing of big data using map reduce
Analysing of big data using map reduce
 
Big Data PPT by Rohit Dubey
Big Data PPT by Rohit DubeyBig Data PPT by Rohit Dubey
Big Data PPT by Rohit Dubey
 
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
Hadoop Ecosystem | Hadoop Ecosystem Tutorial | Hadoop Tutorial For Beginners ...
 
Big Data (Büyük Veri) Nedir?
Big Data (Büyük Veri) Nedir?Big Data (Büyük Veri) Nedir?
Big Data (Büyük Veri) Nedir?
 
Big data 24 mart 2015
Big data 24 mart 2015Big data 24 mart 2015
Big data 24 mart 2015
 
Hadoop technology
Hadoop technologyHadoop technology
Hadoop technology
 
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetup
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics MeetupIntroduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetup
Introduction to Hadoop and Cloudera, Louisville BI & Big Data Analytics Meetup
 
Introduction to NoSQL
Introduction to NoSQLIntroduction to NoSQL
Introduction to NoSQL
 
Big data Analytics Hadoop
Big data Analytics HadoopBig data Analytics Hadoop
Big data Analytics Hadoop
 
Introduction to Hadoop and Hadoop component
Introduction to Hadoop and Hadoop component Introduction to Hadoop and Hadoop component
Introduction to Hadoop and Hadoop component
 
Hudi architecture, fundamentals and capabilities
Hudi architecture, fundamentals and capabilitiesHudi architecture, fundamentals and capabilities
Hudi architecture, fundamentals and capabilities
 
Seminar Presentation Hadoop
Seminar Presentation HadoopSeminar Presentation Hadoop
Seminar Presentation Hadoop
 
GCP Data Engineer cheatsheet
GCP Data Engineer cheatsheetGCP Data Engineer cheatsheet
GCP Data Engineer cheatsheet
 
Big Data Technology Stack : Nutshell
Big Data Technology Stack : NutshellBig Data Technology Stack : Nutshell
Big Data Technology Stack : Nutshell
 
Big data
Big dataBig data
Big data
 
Hadoop Tutorial For Beginners
Hadoop Tutorial For BeginnersHadoop Tutorial For Beginners
Hadoop Tutorial For Beginners
 
Productionizing Machine Learning Pipelines with Databricks and Azure ML
Productionizing Machine Learning Pipelines with Databricks and Azure MLProductionizing Machine Learning Pipelines with Databricks and Azure ML
Productionizing Machine Learning Pipelines with Databricks and Azure ML
 
Hw09 Hadoop Development At Facebook Hive And Hdfs
Hw09   Hadoop Development At Facebook  Hive And HdfsHw09   Hadoop Development At Facebook  Hive And Hdfs
Hw09 Hadoop Development At Facebook Hive And Hdfs
 

Ähnlich wie Apache Spark : Genel Bir Bakış

Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data PresentationSerkan Özal
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı GözleyelimOguz Yarimtepe
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.comHakan Ilter
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkHakan Sarıbıyık
 
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaHüseyin Mert
 
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans OptimizasyonuOpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans OptimizasyonuHuseyin Cotuk
 
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2gulindasdan
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden GateAnar Godjaev
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy TalksMetin Uslu
 
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP YönetimiCeph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP YönetimiHuseyin Cotuk
 
C# 5 Yeni özellikler
C# 5 Yeni özelliklerC# 5 Yeni özellikler
C# 5 Yeni özelliklerErkan BALABAN
 
AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkara JUG
 
progressokulu.com OpenEdge Replication Slide 2
progressokulu.com OpenEdge Replication Slide 2progressokulu.com OpenEdge Replication Slide 2
progressokulu.com OpenEdge Replication Slide 2kaan verdioglu
 

Ähnlich wie Apache Spark : Genel Bir Bakış (20)

Ankara JUG Big Data Presentation
Ankara JUG Big Data PresentationAnkara JUG Big Data Presentation
Ankara JUG Big Data Presentation
 
Sunucularımızı Gözleyelim
Sunucularımızı GözleyelimSunucularımızı Gözleyelim
Sunucularımızı Gözleyelim
 
Hadoop @ devveri.com
Hadoop @ devveri.comHadoop @ devveri.com
Hadoop @ devveri.com
 
Veri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan SarıbıyıkVeri işleme üzerine, Hakan Sarıbıyık
Veri işleme üzerine, Hakan Sarıbıyık
 
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari OluşturmaSymfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
Symfony2 ve Doctrine ile PostgreSQL'i Kullanarak Performanslı Mimari Oluşturma
 
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans OptimizasyonuOpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
OpenStack'te Ceph Kullanımı ve Performans Optimizasyonu
 
Nosql veritabanlari
Nosql veritabanlariNosql veritabanlari
Nosql veritabanlari
 
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
Mongodb Ödev- İnternet programcılığı- IP2-Vize 2
 
1 hafta_dersi
1  hafta_dersi1  hafta_dersi
1 hafta_dersi
 
MongoDB ve C# Driver'ı
MongoDB ve C# Driver'ıMongoDB ve C# Driver'ı
MongoDB ve C# Driver'ı
 
Oracle Golden Gate
Oracle Golden GateOracle Golden Gate
Oracle Golden Gate
 
Nosql & MongoDB
Nosql & MongoDBNosql & MongoDB
Nosql & MongoDB
 
Istanbul Datascience Academy Talks
Istanbul Datascience Academy TalksIstanbul Datascience Academy Talks
Istanbul Datascience Academy Talks
 
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP YönetimiCeph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
Ceph Türkiye 7. Meetup Ankara: Ceph Temelleri ve CRUSH MAP Yönetimi
 
MongoDB Overview
MongoDB OverviewMongoDB Overview
MongoDB Overview
 
C# 5 Yeni özellikler
C# 5 Yeni özelliklerC# 5 Yeni özellikler
C# 5 Yeni özellikler
 
AnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big DataAnkaraJUG Haziran 2013 - No SQL / Big Data
AnkaraJUG Haziran 2013 - No SQL / Big Data
 
Erlang web-frameworks
Erlang web-frameworksErlang web-frameworks
Erlang web-frameworks
 
progressokulu.com OpenEdge Replication Slide 2
progressokulu.com OpenEdge Replication Slide 2progressokulu.com OpenEdge Replication Slide 2
progressokulu.com OpenEdge Replication Slide 2
 
Riak ve RiakCS
Riak ve RiakCSRiak ve RiakCS
Riak ve RiakCS
 

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