apache spark : genel bir bakış

32
Apache Spark BURAK KÖSE

Upload: burak-koese

Post on 12-Jan-2017

805 views

Category:

Data & Analytics


7 download

TRANSCRIPT

Page 1: Apache Spark : Genel Bir Bakış

Apache Spark

BURAK KÖSE

Page 2: Apache Spark : Genel Bir Bakış

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ış

...

● 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ış

Nasıl Ortaya Çıktı?

Page 5: Apache Spark : Genel Bir Bakış

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ış

Neden Spark?

● Performans● Geliştirici verimliliği● Zengin API● ...

Page 7: Apache Spark : Genel Bir Bakış

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ış

Performans

● 1PB(1000TB)● Spark - 234 minutes / 190 nodes / AWS

Page 9: Apache Spark : Genel Bir Bakış

Performans

● İteratif algoritmalarda çok hızlı

● Mümkün olduğunda memory kullanan yaklaşım

Page 10: Apache Spark : Genel Bir Bakış

Zengin API

● map()● reduce()● filter()● sortBy()

● map()● reduce()

● join() ● groupByKey()● first()● count()

ve çok daha fazlası ...

Page 11: Apache Spark : Genel Bir Bakış

Daha Az Kod, Daha Çok İşÖrneğin Hadoop’da basit bir kelime sayma işlemi

Page 12: Apache Spark : Genel Bir Bakış

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ış

Peki Neler Sağlıyor?

Page 14: Apache Spark : Genel Bir Bakış

Nasıl Çalışıyor?

Page 15: Apache Spark : Genel Bir Bakış

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ış

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ış

...

RDD’ler read-only ve immutable’dır

İşleyebilirsin ama değiştiremezsin

Okuyabilirsin ama yazamazsın

Page 18: Apache Spark : Genel Bir Bakış

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ış

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ış

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ış

...● 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ış

...● 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ış

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ış

Genel bir bakış...

Page 25: Apache Spark : 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ı)

Page 26: Apache Spark : Genel Bir Bakış

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ış

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ış

Deployment

CLUSTER

● Standalone● Mesos● YARN● Amazon EC2

LOCAL

● Single threaded:SparkContext(‘local’)

● Multi-threaded:SparkContext(‘local[4]’)

Page 29: Apache Spark : Genel Bir Bakış

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ış

...

Online Kurslar…(edX)

● Introduction to Big Data with Apache Spark● Scalable Machine Learning

Page 31: Apache Spark : Genel Bir Bakış

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ış

SORULAR?