sviluppo di sistemi scalabili con apache sparkdataframe datasets 17 componente di machine learning...
TRANSCRIPT
![Page 1: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/1.jpg)
Sviluppo di sistemi scalabili con Apache Spark
Alessandro Natilla - 22/10/20161
![Page 2: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/2.jpg)
Outline
● Big Data● Cosa è Apache Spark● Storia di Spark● Spark vs MapReduce● Componenti di Apache Spark● Foundations: RDD e operazioni● Modello di esecuzione● Esempi● Deploying● Riferimenti
2
![Page 3: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/3.jpg)
● Velocity● Volumes● Variety● Value
Fonti● Social Media● GPS data● IoT● Sensors Networks
Big Data
3
![Page 4: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/4.jpg)
● Framework per massive parallel computing
● Basato su Direct Acyclic Graph (DAG) computing engine
● in-memory computation○ Hadoop MapReduce svolge operazioni su disco
● Apache Project (spark.apache.org)
Cosa è Apache Spark
4
![Page 5: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/5.jpg)
● Progetto nato presso l’Università di Berkeley nel 2009
● Progetto Apache dal 2013
● Progetto top-level dal 2014
● I creatori hanno fondati databricks.com
● Giunto alla versione 2.0.1 (last stable)
Storia
5
![Page 6: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/6.jpg)
● Graysort benchmark, http://sortbenchmark.org/
● Hadoop - 72 minutes / 2100 nodes / datacentre
● Spark - 23 minutes / 206 nodes / AWS
Spark vs Hadoop Mapreduce
6
![Page 7: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/7.jpg)
Esempio classico: Word Count on Hadoop
7
Obiettivo
Contare il numero di occorrenze di ciascuna parola in un testo
Logica
Per ogni parola, associarvi il valore intero 1.
Si ottiene una lista di coppie (parola, 1).
Aggregazione delle coppie in base alla parola chiave utilizzando una funzione associativa (somma).
Si ottiene una lista di coppie dove il primo elemento corrisponde alla parola, il secondo elemento coincide con il numero totale di occorrenze nel testo
![Page 8: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/8.jpg)
from pyspark import SparkContext
logFile = "hdfs:///input"sc = SparkContext("spark://spark-m:7077", "WordCount")textFile = sc.textFile(logFile)
wordCounts = textFile.flatMap(lambda line: line.split()).map(lambda word: (word, 1)).reduceByKey(lambda a, b: a+b)
wordCounts.saveAsTextFile("hdfs:///output")
Esempio classico: Word Count su Spark (Python API)
8
![Page 9: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/9.jpg)
Componenti di Spark
9
![Page 10: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/10.jpg)
● Analytics (batch / streaming)
● Machine Learning
● ETL (Extract - Transform - Load)
● Datawarehousing
Applicazioni concrete
10
![Page 11: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/11.jpg)
● RDD = Resilient Distributed Dataset
● Collezione di dati immutabile
● Fault-tolerant
● Parallel
Fondamenti: Resilient Distributed Datasets (RDD)
11
![Page 12: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/12.jpg)
● Trasformazioni
● Azioni
● Le trasformazioni sono operazioni lazy
● Le trasformazioni vengono compiute dalle azioni
Fondamenti: operazioni
12
PRONo problemi di concorrenza in contesti di elaborazione distribuitiTutti i nodi lavorano su partizioni differenti dei dati
![Page 13: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/13.jpg)
● map(): trasformazione
● filter(): filtraggio
● flatMap(): trasformazione dati
● sample(): campionamento
● …
RDDs – Trasformazioni vs Azioni
● reduce(): applicazione operazione associativa
● count(): conteggio
● saveAsTextFile()
● …
13
![Page 14: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/14.jpg)
Modello di esecuzione di Spark
● I jobs sono cittadini di prima classe
● L’invocazione di una azione causa l’esecuzione di un job per evadere una richiesta
● Spark esamina il grafo degli RDD, producendo un piano di esecuzione che tenga conto delle risorse disponibili
Job
14
![Page 15: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/15.jpg)
● Micro-batches (DStreams of RDDs)
● Disponibile per tutte le componenti (MLLib, GraphX, Dataframes, Datasets)
● Fault-tolerant
● Connettori per TCP Sockets, Kafka, Flume, Kinesis, ZeroMQ, ...
Streaming
15
![Page 16: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/16.jpg)
● Libreria di astrazione dati
● Idea presa in prestito da Python/R
● Supporto per JSON, Cassandra, HBase, Hive, SQL databases, etc.
● Sintassi più semplice rispetto agli RDD
● Datasets vs Dataframes○ type-safe, interfaccia object-oriented programming○ utilizzano l’ottomizzare nativo○ elaborazione dei dati in-memory
Spark SQL
16
![Page 17: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/17.jpg)
val sqlContext = new org.apache.spark.sql.SQLContext(new SparkContext())val df = sqlContext.read.json("people.json")
df.show()df.filter(df("age") >= 35).show()
df.groupBy("age").count().show()
Dataframe vs Dataset: contare numero di persone con età > 35
case class Person(name: String, age: Long)
val people = sqlContext.read.json("/people.json").as[Person]
people.filter(_.age >= 35).show()
people.groupBy(_.age).count().show
Dataframe
Datasets
17
![Page 18: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/18.jpg)
● Componente di Machine Learning
● Include implementazioni per algoritmi quali for NaiveBayes, logistic regression, k-means clustering, ALS, word2vec, random forests, etc.
● ML introduce il concetto di pipelines
● Operazioni su matrici (dense / sparse), fattorizzazioni matriciali, etc.
● Basic statistics
MLLib / ML
http://spark.apache.org/docs/latest/mllib-guide.html 18
![Page 19: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/19.jpg)
● Contiene algoritmi su grafi
● Operazioni su vertici e archi
● Include l’algoritmo PageRank
● Combinabile with Streaming/SparkSQL/MLLib/ML
GraphX
19
![Page 20: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/20.jpg)
● Standalone
● YARN (Hadoop ecosystem)
● Apache Mesos
Deploying Spark
20
![Page 21: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/21.jpg)
● Traditional (write code, submit to cluster)
● REPL (write code interactively, backed by cluster)
● Interactive Notebooks (iPython/Zeppelin)
Using Spark
21
![Page 22: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/22.jpg)
Interactive Notebooks
22
![Page 23: Sviluppo di sistemi scalabili con Apache SparkDataframe Datasets 17 Componente di Machine Learning Include implementazioni per algoritmi quali for NaiveBayes, logistic regression,](https://reader036.vdocuments.net/reader036/viewer/2022062916/5ec6b38763a53b6c3429a0e5/html5/thumbnails/23.jpg)
● spark.apache.org
● databricks.com
● zeppelin.incubator.apache.org
● mammothdata.com/white-papers/spark-a-modern-tool-for-big-data-applications
References
23