SlideShare una empresa de Scribd logo
2 Junio 2016
SPARK 2.0
Quién soy
SPARK 2.0
José Carlos García Serrano
Arquitecto Big Data en Stratio.
Granadino e ingeniero por la ETSII, master de Big Data en la
UTad, certificado en Spark y AWS
Amante de las nuevas tecnologías y de las arquitecturas
basadas en Big Data
FanBoy de cosas como:
● Scala
● Spark
● Akka
● MongoDB
● Cassandra
Pero todos tenemos un pasado:
● Delphi
● C++
● BBDD SQL
● Hadoop
José Carlos García Serrano
Arquitecto Big Data
jcgarcia@stratio.com
CONTACTO
DICE
INTRODUCCIÓN1 2 3OPTIMIZACIÓN
• Memoria
• Funciones
SPARK CORE
• Acumuladores
• Block Manager
SPARK SQL
• Spark Session
• DataSet API
4 5 6SPARK STREAMING
• Streaming Sql API
SPARK MLlib
• Persistencia
1 INTRODUCCIÓN
SPARK 2.0
El Software siempre es mejorable y Spark no es menos ….
SPARK 2.0
DE VERDAD ?? ESTA GENTE SABE
....
1. INTRODUCCIÓN
Spark 2.0
• Disponible en Databricks Platform
• Disponible descarga de Snapshot
• Lanzamiento inminente
• Presentado en Spark Summit
• Más rápido, más fácil y más inteligente
• Mejoradas todas las APIs de Spark:
Streaming, Sql, Mllib, Graphx
2 OPTIMIZACIÓN
SPARK 2.0
2. OPTIMIZACIÓN > MEMORIA
Problema
La mayoría de los ciclos de CPU se gastan en cosas inútiles como esperas al leer y escribir datos de
caché de CPU o de memoria
SPARK 2.0
2. OPTIMIZACIÓN > MEMORIA
Objetivos
• Gestionar la memoria de ejecución (shuffle, joins) y memoria de
almacenamiento (memoria usada para cachear datos que son
reusados)
• Gestionar la memoria entre tareas que corren en paralelo
• Gestionar la memoria entre operadores de una misma tarea
SPARK 2.0
SPARK 1.4 PROJECT TUNGSTEN TUNGSTEN
2.0
2. OPTIMIZACIÓN > MEMORIA
• Memory Management
• Cache - Aware
• Whole-stage code generation
• Vectorization
SPARK 2.0
2. OPTIMIZACIÓN > MEMORIA
2.1.1 Memory Management
• Los objetos de Java consumen más memoria de la que deberían
“abcd” 4 bytes en Nativo UTF-8 y 48 bytes en Java
• El GC de Java tiende a sobre trabajar y no tiene suficiente info.
Spark ha implementado un gestor de memoria Explícito para objetos java, C-style
SPARK 2.0
2. OPTIMIZACIÓN > MEMORIA
Librería de bajo nivel provista por Java sun.misc.Unsafe
SPARK 2.0
2. OPTIMIZACIÓN > MEMORIA
2.1.2 Cache - Aware
• Reduce el tiempo de espera de datos de memoria de CPU y aumenta el tiempo útil
• Guarda en el Array de punteros la clave (64 bit -> 128 bit)
Ptr ValueKey
Nativo
Ptr ValueKey
Cache-Aware
Ordenación con menos accesos random a memoria
aggregations-sorting-joins
SPARK 2.0
2. OPTIMIZACIÓN > MEMORIA
2.1.3 Whole-stage code generation
• Generación de bytecode en tiempo de ejecución
• Se empezó en Spark 1.4 con ciertas funciones sql (Catalyst)
• Genera código simple para funciones complejas y genera menos
registros en caché de CPU
• Las CPU actuales están optimizadas para bucles simples
• Incrementa el rendimiento en la serialización por lo que optimiza
la fase de shuffle
SPARK 2.0
Pasado
(Vulcano)
Presente
(college freshman)
SPARK 2.0
Antes
Ahora
== Physical Plan ==
*Aggregate(functions=[sum(id#201L)])
+- Exchange SinglePartition, None
+- *Aggregate(functions=[sum(id#201L)])
+- *Filter (id#201L > 100)
+-
*Range 0, 1, 3, 1000, [id#201L]
== Physical Plan ==
*TungstenAggregate(key=[],functions=[(sum(id#201L),mode=Final,isDistinct=false)], output=[sum(id)#212L])
+- Exchange SinglePartition, None
+- *TungstenAggregate(key=[], functions=[(sum(id#201L),mode=Partial,isDistinct=false)], output=[sum#214L])
+- *Filter (id#201L > 100)
+- *Range 0, 1, 3, 1000, [id#201L]
SPARK 2.0
SQL ??
SPARK 2.0
SPARK 2.0
SPARK 2.0
2. OPTIMIZACIÓN > MEMORIA
2.1.4 Vectorization
• Operaciones complejas no pueden ser abstraídas a una función
• Hay que integrar librerías externas (csv, parquet)
Opera sobre varias rows, pasa a un formato columnar!!
recordemos > CPUs optimizadas para bucles simples!!
SPARK 2.0
SPARK 2.0
2. OPTIMIZACIÓN > FUNCIONES
2.2 Funciones
• Integración de algoritmos aproximados en DataFrames y Datasets.
HyperLogLog - CountMinSketch - BloomFilters
• ApproxCountDistinct
Estimación del número de elementos distintos que hay en una colección
• ApproxQuantile
Devuelve una aproximación a los percentiles
Ejm. approx_count = users.agg(approxCountDistinct(users['user'], rsd = rsd))
Jugamos con el margen de error, más margen => más rápido
SPARK 2.0
ApproxCountDistinct en función del margen elegido
3 SPARK CORE
SPARK 2.0
3. SPARK CORE > ACUMULADORES
3.1 Acumuladores
• Nueva API de acumuladores con un performance mejorado
• AccumulatorContext para acceder y crear
• API para implementar nuestros acumuladores propios
• Implementado el Long - Double con cosas como sum, count, and averages
val acc = new LongAccumulator
acc.setValue(100L)
acc.metadata = AccumulatorMetadata(1L, Some("longAccumulator"), false)
AccumulatorContext.register(acc)
val accAvg = acc.avg
val accSum = acc.sum
val accCount = acc.count
val longAccumulator = AccumulatorContext.get(acc.id)
SPARK 2.0
3. SPARK CORE > Block Manager
3.2 External Block Manager Genérico
• Se han eliminado las clases que hacían uso de Tachyon
• Se han eliminado en ciertos casos movimiento de datos por Http
4 SPARK SQL
SPARK 2.0
4. SPARK SQL
Principales funcionalidades
• Olvidar SqlContext y pensar en SparkSession
• Unificar API DataFrames/Datasets en Scala/Java en DataSets
• Lenguaje SQL extendido para un soporte del 99% TPC-DS queries
• Ejecutar SQL directamente sobre ficheros
hadoop - text - csv - parquet
SPARK 2.0
4. SPARK SQL > SPARK SESSION
4.1 SparkSession
• Deprecamos SQLContext
• Varias sesiones simultáneas independientes con sus propios catálogos
• Crea un SparkContext si no ha sido creado previamente
• Asignacion de parametros en caliente
sparkSession.conf.set("spark.some.config", "abcd")
• Funciones para listar, buscar y modificar el catálogo de tablas
• Opciones de configuración como variables de sustitución en SQL
sparkSession.sql("select '${spark.some.config}'")
Veámos un poco de código en Intellij ...
SPARK 2.0
4. SPARK SQL > API DataSet
4.2 API Dataset
• Unificada la API de DataFrames y Dataset
• type DataFrame = DataSet[Row]
• No disponible en R ni Python
• DataSet tipados y no tipados:
Operaciones sobre tipados y no tipados (map, select, etc...)
Agregaciones
5 SPARK
Streaming
SPARK 2.0
5. SPARK STREAMING
Principales funcionalidades
• Sql sobre streaming estructurado:
Triggers
Agregaciones continuas
• Eliminados los módulos:
Twitter
ZeroMQ
MQTT
Akka
SPARK 2.0
5. SPARK STREAMING > SQL STREAMING API
5.1 SQL Streaming API
• Implementado dentro del módulo de SQL
• API batch y streaming unificada
• Static DataFrame -> Infinite DataFrame
• Independiente de DStreams API
Cambiar queries en tiempo real, aplicar a ML y sink por JDBC
SPARK 2.0
SPARK 2.0
5. SPARK STREAMING > SQL STREAMING API
Continuous aggregations
val peopleAgg = sparkSession.read.json("/home/jcgarcia/meetupSql.json")
peopleAgg.groupBy("id").agg(sum("age"))
.write
.mode(SaveMode.Overwrite)
.parquet("/home/jcgarcia/parquetAgg1.parquet")
val peopleAgg2 = sparkSession.read.format("json").stream("/home/jcgarcia/streamingexample")
peopleAgg2.groupBy("id").agg(sum("age"))
.write
.option("queryName", "queryStreaming")
.mode(SaveMode.Overwrite)
.parquet("/home/jcgarcia/parquetAgg2.parquet")
Batch aggregation
Continuous
aggreg
ation
SPARK 2.0
5. SPARK STREAMING > SQL STREAMING API
Triggers
val peopleAgg2 = sparkSession.read.format("json").stream("/home/jcgarcia/streamingexample")
peopleAgg2.groupBy("id").agg(sum("age"))
.write
.option("queryName", "queryStreaming")
.trigger(ProcessingTime("10 seconds"))
SPARK 2.0
5. SPARK STREAMING > SQL STREAMING API
Ejecución
val peopleAgg2 = sparkSession.read.format("json").stream("/home/jcgarcia/streamingexample")
peopleAgg2.groupBy("id").agg(sum("age"))
.write
.option("queryName", "queryStreaming")
.trigger(ProcessingTime("10 seconds"))
.startStream()
.awaitTermination()
6 SPARK MLlib
SPARK 2.0
6. SPARK MLlib > PERSISTENCIA PIPELINES
6.1 Persistencia Pipelines
• Salvar y cargar Pipelines completos
• Salvar y cargar modelos individuales
Veamos dos ejemplos ....
SPARK 2.0
6. SPARK MLlib > PERSISTENCIA PIPELINES
K-Means clustering model
val kmeans = new KMeans().setK(10).setSeed(12345)
val model = kmeans.fit(training)
model.save(basePath + "/model")
val sameModel = KMeansModel.load(basePath + "/model")
from pyspark.ml.clustering import KMeansModel
pyModel = KMeansModel.load(basePath + "/model")
SPARK 2.0
6. SPARK MLlib > PERSISTENCIA PIPELINES
Pipeline
val scaler = new StandardScaler().setInputCol("features").setOutputCol("scaledFeatures")
kmeans.setFeaturesCol("scaledFeatures")
val pipeline = new Pipeline().setStages(Array(scaler, kmeans))
pipeline.save(basePath + "/pipeline")
val samePipeline = Pipeline.load(basePath + "/pipeline")
SPARK 2.0
Y para otro meetup …..
Re Architecting Spark for
Mobile Platforms??? ;)
https://databricks.com/blog/2015/04/01/spark-2-rearchitecting-spark-for-mobile.html
BIG DATA
CHILD`S PLAY
Gracias!!
Stratio busca Talento
Contacto:
jcgarcia@stratio.com
es.linkedin.com/in/gserranojc

Más contenido relacionado

Destacado

Spark streaming for the internet of flying things 20160510.pptx
Spark streaming for the internet of flying things 20160510.pptxSpark streaming for the internet of flying things 20160510.pptx
Spark streaming for the internet of flying things 20160510.pptx
Pablo Francisco Pérez Hidalgo
 
Docker 基本概念與指令操作
Docker  基本概念與指令操作Docker  基本概念與指令操作
Docker 基本概念與指令操作
NUTC, imac
 
Spark Solution for Rank Product
Spark Solution for Rank ProductSpark Solution for Rank Product
Spark Solution for Rank Product
Mahmoud Parsian
 
Performance in Spark 2.0, PDX Spark Meetup 8/18/16
Performance in Spark 2.0, PDX Spark Meetup 8/18/16Performance in Spark 2.0, PDX Spark Meetup 8/18/16
Performance in Spark 2.0, PDX Spark Meetup 8/18/16
pdx_spark
 
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Alexey Zinoviev
 
使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台
NUTC, imac
 
Use of spark for proteomic scoring seattle presentation
Use of spark for  proteomic scoring   seattle presentationUse of spark for  proteomic scoring   seattle presentation
Use of spark for proteomic scoring seattle presentation
lordjoe
 
Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)
Alexey Zinoviev
 
London Spark Meetup Project Tungsten Oct 12 2015
London Spark Meetup Project Tungsten Oct 12 2015London Spark Meetup Project Tungsten Oct 12 2015
London Spark Meetup Project Tungsten Oct 12 2015
Chris Fregly
 
Scala and spark
Scala and sparkScala and spark
Scala and spark
Fabio Fumarola
 
Project Tungsten Phase II: Joining a Billion Rows per Second on a Laptop
Project Tungsten Phase II: Joining a Billion Rows per Second on a LaptopProject Tungsten Phase II: Joining a Billion Rows per Second on a Laptop
Project Tungsten Phase II: Joining a Billion Rows per Second on a Laptop
Databricks
 
Spark Summit EU talk by Ted Malaska
Spark Summit EU talk by Ted MalaskaSpark Summit EU talk by Ted Malaska
Spark Summit EU talk by Ted Malaska
Spark Summit
 
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
Chris Fregly
 
Spark 巨量資料處理基礎教學
Spark 巨量資料處理基礎教學Spark 巨量資料處理基礎教學
Spark 巨量資料處理基礎教學
NUTC, imac
 
Data Source API in Spark
Data Source API in SparkData Source API in Spark
Data Source API in Spark
Databricks
 
Deep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0’s OptimizerDeep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
Databricks
 
Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0
Knoldus Inc.
 
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Robert "Chip" Senkbeil
 
Robust and Scalable ETL over Cloud Storage with Apache Spark
Robust and Scalable ETL over Cloud Storage with Apache SparkRobust and Scalable ETL over Cloud Storage with Apache Spark
Robust and Scalable ETL over Cloud Storage with Apache Spark
Databricks
 

Destacado (20)

Spark streaming for the internet of flying things 20160510.pptx
Spark streaming for the internet of flying things 20160510.pptxSpark streaming for the internet of flying things 20160510.pptx
Spark streaming for the internet of flying things 20160510.pptx
 
Docker 基本概念與指令操作
Docker  基本概念與指令操作Docker  基本概念與指令操作
Docker 基本概念與指令操作
 
Spark Solution for Rank Product
Spark Solution for Rank ProductSpark Solution for Rank Product
Spark Solution for Rank Product
 
Apache Spark Essentials
Apache Spark EssentialsApache Spark Essentials
Apache Spark Essentials
 
Performance in Spark 2.0, PDX Spark Meetup 8/18/16
Performance in Spark 2.0, PDX Spark Meetup 8/18/16Performance in Spark 2.0, PDX Spark Meetup 8/18/16
Performance in Spark 2.0, PDX Spark Meetup 8/18/16
 
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
Joker'16 Spark 2 (API changes; Structured Streaming; Encoders)
 
使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台使用 CLI 管理 OpenStack 平台
使用 CLI 管理 OpenStack 平台
 
Use of spark for proteomic scoring seattle presentation
Use of spark for  proteomic scoring   seattle presentationUse of spark for  proteomic scoring   seattle presentation
Use of spark for proteomic scoring seattle presentation
 
Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)Java BigData Full Stack Development (version 2.0)
Java BigData Full Stack Development (version 2.0)
 
London Spark Meetup Project Tungsten Oct 12 2015
London Spark Meetup Project Tungsten Oct 12 2015London Spark Meetup Project Tungsten Oct 12 2015
London Spark Meetup Project Tungsten Oct 12 2015
 
Scala and spark
Scala and sparkScala and spark
Scala and spark
 
Project Tungsten Phase II: Joining a Billion Rows per Second on a Laptop
Project Tungsten Phase II: Joining a Billion Rows per Second on a LaptopProject Tungsten Phase II: Joining a Billion Rows per Second on a Laptop
Project Tungsten Phase II: Joining a Billion Rows per Second on a Laptop
 
Spark Summit EU talk by Ted Malaska
Spark Summit EU talk by Ted MalaskaSpark Summit EU talk by Ted Malaska
Spark Summit EU talk by Ted Malaska
 
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
Paris Spark Meetup Oct 26, 2015 - Spark After Dark v1.5 - Best of Advanced Ap...
 
Spark 巨量資料處理基礎教學
Spark 巨量資料處理基礎教學Spark 巨量資料處理基礎教學
Spark 巨量資料處理基礎教學
 
Data Source API in Spark
Data Source API in SparkData Source API in Spark
Data Source API in Spark
 
Deep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0’s OptimizerDeep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
Deep Dive Into Catalyst: Apache Spark 2.0’s Optimizer
 
Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0
 
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
Spark Kernel Talk - Apache Spark Meetup San Francisco (July 2015)
 
Robust and Scalable ETL over Cloud Storage with Apache Spark
Robust and Scalable ETL over Cloud Storage with Apache SparkRobust and Scalable ETL over Cloud Storage with Apache Spark
Robust and Scalable ETL over Cloud Storage with Apache Spark
 

Similar a Meetup Spark 2.0

Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - ExasolExtendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Javier Abadía
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén Casado
Big Data Spain
 
Spark meetup barcelona
Spark meetup barcelonaSpark meetup barcelona
Spark meetup barcelona
Jorge Lopez-Malla
 
#avanttic_webinar: SPARC/Solaris, una plataforma con futuro
#avanttic_webinar: SPARC/Solaris, una plataforma con futuro#avanttic_webinar: SPARC/Solaris, una plataforma con futuro
#avanttic_webinar: SPARC/Solaris, una plataforma con futuro
avanttic Consultoría Tecnológica
 
Personalización Data Collectors
Personalización Data CollectorsPersonalización Data Collectors
Personalización Data Collectors
SolidQ
 
Introducción a Apache Spark
Introducción a Apache SparkIntroducción a Apache Spark
Introducción a Apache Spark
Socialmetrix
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatos
devsco63
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatosRobert Wolf
 
Meetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scalaMeetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scala
José Carlos García Serrano
 
Sql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql server
Enrique Catala Bañuls
 
Introduccion a Apache Spark
Introduccion a Apache SparkIntroduccion a Apache Spark
Introduccion a Apache Spark
Gustavo Arjones
 
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
Microsoft Argentina y Uruguay [Official Space]
 
Administración de base de datos oracle - sesion 2
Administración de base de datos oracle - sesion 2Administración de base de datos oracle - sesion 2
Administración de base de datos oracle - sesion 2
Sefira111
 
Introducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseIntroducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data Warehouse
Joseph Lopez
 
Trabajo plus (1)
Trabajo plus (1)Trabajo plus (1)
Trabajo plus (1)
LuisAdrianCamacho
 
Introduccion Java.ppt
Introduccion Java.pptIntroduccion Java.ppt
Introduccion Java.ppt
Valentin Choquehuanca
 
Sysmana 2017 monitorización de logs con el stack elk
Sysmana 2017   monitorización de logs con el stack elkSysmana 2017   monitorización de logs con el stack elk
Sysmana 2017 monitorización de logs con el stack elk
José Ignacio Álvarez Ruiz
 
Scala @ Real life
Scala @ Real lifeScala @ Real life
Scala @ Real life
Javier Santos Paniego
 
Webinar - Consolidación de Bases de Datos Oracle en Exadata
Webinar - Consolidación de Bases de Datos Oracle en ExadataWebinar - Consolidación de Bases de Datos Oracle en Exadata
Webinar - Consolidación de Bases de Datos Oracle en Exadata
avanttic Consultoría Tecnológica
 
Scala@real life
Scala@real lifeScala@real life
Scala@real life
David Vallejo Navarro
 

Similar a Meetup Spark 2.0 (20)

Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - ExasolExtendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
Extendiendo Django: Cómo Escribir Tu Propio Backend de Base de Datos - Exasol
 
Why Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén CasadoWhy Apache Flink is better than Spark by Rubén Casado
Why Apache Flink is better than Spark by Rubén Casado
 
Spark meetup barcelona
Spark meetup barcelonaSpark meetup barcelona
Spark meetup barcelona
 
#avanttic_webinar: SPARC/Solaris, una plataforma con futuro
#avanttic_webinar: SPARC/Solaris, una plataforma con futuro#avanttic_webinar: SPARC/Solaris, una plataforma con futuro
#avanttic_webinar: SPARC/Solaris, una plataforma con futuro
 
Personalización Data Collectors
Personalización Data CollectorsPersonalización Data Collectors
Personalización Data Collectors
 
Introducción a Apache Spark
Introducción a Apache SparkIntroducción a Apache Spark
Introducción a Apache Spark
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatos
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatos
 
Meetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scalaMeetup Fun[ctional] spark with scala
Meetup Fun[ctional] spark with scala
 
Sql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql serverSql server ha muerto, larga vida a sql server
Sql server ha muerto, larga vida a sql server
 
Introduccion a Apache Spark
Introduccion a Apache SparkIntroduccion a Apache Spark
Introduccion a Apache Spark
 
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
(25/02) Desarrollador@S Invita - Introducción y novedades de SQL Server 2008
 
Administración de base de datos oracle - sesion 2
Administración de base de datos oracle - sesion 2Administración de base de datos oracle - sesion 2
Administración de base de datos oracle - sesion 2
 
Introducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data WarehouseIntroducción a Microsoft Azure SQL Data Warehouse
Introducción a Microsoft Azure SQL Data Warehouse
 
Trabajo plus (1)
Trabajo plus (1)Trabajo plus (1)
Trabajo plus (1)
 
Introduccion Java.ppt
Introduccion Java.pptIntroduccion Java.ppt
Introduccion Java.ppt
 
Sysmana 2017 monitorización de logs con el stack elk
Sysmana 2017   monitorización de logs con el stack elkSysmana 2017   monitorización de logs con el stack elk
Sysmana 2017 monitorización de logs con el stack elk
 
Scala @ Real life
Scala @ Real lifeScala @ Real life
Scala @ Real life
 
Webinar - Consolidación de Bases de Datos Oracle en Exadata
Webinar - Consolidación de Bases de Datos Oracle en ExadataWebinar - Consolidación de Bases de Datos Oracle en Exadata
Webinar - Consolidación de Bases de Datos Oracle en Exadata
 
Scala@real life
Scala@real lifeScala@real life
Scala@real life
 

Último

ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
IVANBRIANCHOQUEHUANC
 
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CONAUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
FreddyJuniorOrtechoC
 
NOM-001-SEDE-2012.pdf instalación eléctrica
NOM-001-SEDE-2012.pdf instalación eléctricaNOM-001-SEDE-2012.pdf instalación eléctrica
NOM-001-SEDE-2012.pdf instalación eléctrica
gabyp22
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
jcbarriopedro69
 
Cargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un PuenteCargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un Puente
jemifermelgarejoaran1
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
KristianSaavedra
 
Cuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdfCuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdf
LizetGuadalupeHernan
 
Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"
cristiaansabi19
 
La gestión y administración de almacenes
La gestión y administración de almacenesLa gestión y administración de almacenes
La gestión y administración de almacenes
RicardoCruzHernndez1
 
armadura_vigas.pptx.....................
armadura_vigas.pptx.....................armadura_vigas.pptx.....................
armadura_vigas.pptx.....................
Acletti Ammina
 
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptxPRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
brandonsinael
 
Clase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de faseClase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de fase
EmilyLloydCerda
 
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
siclaro982
 
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civilesCAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
PEDROMANJARRES1
 
Graficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitabGraficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitab
XIOMARAANTONELLACAST
 
Control clásico moderno ingeniería electrónica.ppt
Control clásico moderno ingeniería electrónica.pptControl clásico moderno ingeniería electrónica.ppt
Control clásico moderno ingeniería electrónica.ppt
Waldo Eber Melendez Garro
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
munozvanessa878
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
DiegoAlexanderChecaG
 
Presentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptxPresentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptx
ronnyrocha223
 
choro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiologíachoro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiología
elvis2000x
 

Último (20)

ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
ABR-FUNDAMENTOS DEL CALCULO uc 2024 ........
 
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CONAUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
AUTOCAD 2D - UA1 DE NIVEL INTERMEDIO CON
 
NOM-001-SEDE-2012.pdf instalación eléctrica
NOM-001-SEDE-2012.pdf instalación eléctricaNOM-001-SEDE-2012.pdf instalación eléctrica
NOM-001-SEDE-2012.pdf instalación eléctrica
 
164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas164822219-Clase-4-Estructuras-3.pdf losas
164822219-Clase-4-Estructuras-3.pdf losas
 
Cargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un PuenteCargas de Cálculos Estructurales de un Puente
Cargas de Cálculos Estructurales de un Puente
 
Cálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzadoCálculo del espesor del conducto forzado
Cálculo del espesor del conducto forzado
 
Cuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdfCuadro sinoptico de clasificacion de las industrias.pdf
Cuadro sinoptico de clasificacion de las industrias.pdf
 
Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"Metodología - Proyecto de ingeniería "Dispensador automático"
Metodología - Proyecto de ingeniería "Dispensador automático"
 
La gestión y administración de almacenes
La gestión y administración de almacenesLa gestión y administración de almacenes
La gestión y administración de almacenes
 
armadura_vigas.pptx.....................
armadura_vigas.pptx.....................armadura_vigas.pptx.....................
armadura_vigas.pptx.....................
 
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptxPRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
PRES 3. METROLOGÍA DE GASES Y RADIACIONES IONIZANTES.pptx
 
Clase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de faseClase de termodinamica sobre cabios de fase
Clase de termodinamica sobre cabios de fase
 
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
Obras patrimoniales en Venezuela, su sistema constructivo y mantenimiento de ...
 
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civilesCAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
CAPACITACIÓN SUSTANCIAS QUIMICAS obras civiles
 
Graficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitabGraficas de Control, problemas resueltos, minitab
Graficas de Control, problemas resueltos, minitab
 
Control clásico moderno ingeniería electrónica.ppt
Control clásico moderno ingeniería electrónica.pptControl clásico moderno ingeniería electrónica.ppt
Control clásico moderno ingeniería electrónica.ppt
 
tipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdftipos de energias: la Energía Radiante.pdf
tipos de energias: la Energía Radiante.pdf
 
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
380378757-velocidades-maximas-y-minimas-en-los-canales.pdf
 
Presentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptxPresentación- de motor a combustión -diesel.pptx
Presentación- de motor a combustión -diesel.pptx
 
choro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiologíachoro ciclo de vida anatomía y fisiología
choro ciclo de vida anatomía y fisiología
 

Meetup Spark 2.0

  • 2. Quién soy SPARK 2.0 José Carlos García Serrano Arquitecto Big Data en Stratio. Granadino e ingeniero por la ETSII, master de Big Data en la UTad, certificado en Spark y AWS Amante de las nuevas tecnologías y de las arquitecturas basadas en Big Data FanBoy de cosas como: ● Scala ● Spark ● Akka ● MongoDB ● Cassandra Pero todos tenemos un pasado: ● Delphi ● C++ ● BBDD SQL ● Hadoop
  • 3. José Carlos García Serrano Arquitecto Big Data jcgarcia@stratio.com CONTACTO DICE INTRODUCCIÓN1 2 3OPTIMIZACIÓN • Memoria • Funciones SPARK CORE • Acumuladores • Block Manager SPARK SQL • Spark Session • DataSet API 4 5 6SPARK STREAMING • Streaming Sql API SPARK MLlib • Persistencia
  • 5. SPARK 2.0 El Software siempre es mejorable y Spark no es menos ….
  • 6. SPARK 2.0 DE VERDAD ?? ESTA GENTE SABE .... 1. INTRODUCCIÓN Spark 2.0 • Disponible en Databricks Platform • Disponible descarga de Snapshot • Lanzamiento inminente • Presentado en Spark Summit • Más rápido, más fácil y más inteligente • Mejoradas todas las APIs de Spark: Streaming, Sql, Mllib, Graphx
  • 8. SPARK 2.0 2. OPTIMIZACIÓN > MEMORIA Problema La mayoría de los ciclos de CPU se gastan en cosas inútiles como esperas al leer y escribir datos de caché de CPU o de memoria
  • 9. SPARK 2.0 2. OPTIMIZACIÓN > MEMORIA Objetivos • Gestionar la memoria de ejecución (shuffle, joins) y memoria de almacenamiento (memoria usada para cachear datos que son reusados) • Gestionar la memoria entre tareas que corren en paralelo • Gestionar la memoria entre operadores de una misma tarea
  • 10. SPARK 2.0 SPARK 1.4 PROJECT TUNGSTEN TUNGSTEN 2.0 2. OPTIMIZACIÓN > MEMORIA • Memory Management • Cache - Aware • Whole-stage code generation • Vectorization
  • 11. SPARK 2.0 2. OPTIMIZACIÓN > MEMORIA 2.1.1 Memory Management • Los objetos de Java consumen más memoria de la que deberían “abcd” 4 bytes en Nativo UTF-8 y 48 bytes en Java • El GC de Java tiende a sobre trabajar y no tiene suficiente info. Spark ha implementado un gestor de memoria Explícito para objetos java, C-style
  • 12. SPARK 2.0 2. OPTIMIZACIÓN > MEMORIA Librería de bajo nivel provista por Java sun.misc.Unsafe
  • 13. SPARK 2.0 2. OPTIMIZACIÓN > MEMORIA 2.1.2 Cache - Aware • Reduce el tiempo de espera de datos de memoria de CPU y aumenta el tiempo útil • Guarda en el Array de punteros la clave (64 bit -> 128 bit) Ptr ValueKey Nativo Ptr ValueKey Cache-Aware Ordenación con menos accesos random a memoria aggregations-sorting-joins
  • 14. SPARK 2.0 2. OPTIMIZACIÓN > MEMORIA 2.1.3 Whole-stage code generation • Generación de bytecode en tiempo de ejecución • Se empezó en Spark 1.4 con ciertas funciones sql (Catalyst) • Genera código simple para funciones complejas y genera menos registros en caché de CPU • Las CPU actuales están optimizadas para bucles simples • Incrementa el rendimiento en la serialización por lo que optimiza la fase de shuffle
  • 16. SPARK 2.0 Antes Ahora == Physical Plan == *Aggregate(functions=[sum(id#201L)]) +- Exchange SinglePartition, None +- *Aggregate(functions=[sum(id#201L)]) +- *Filter (id#201L > 100) +- *Range 0, 1, 3, 1000, [id#201L] == Physical Plan == *TungstenAggregate(key=[],functions=[(sum(id#201L),mode=Final,isDistinct=false)], output=[sum(id)#212L]) +- Exchange SinglePartition, None +- *TungstenAggregate(key=[], functions=[(sum(id#201L),mode=Partial,isDistinct=false)], output=[sum#214L]) +- *Filter (id#201L > 100) +- *Range 0, 1, 3, 1000, [id#201L]
  • 20. SPARK 2.0 2. OPTIMIZACIÓN > MEMORIA 2.1.4 Vectorization • Operaciones complejas no pueden ser abstraídas a una función • Hay que integrar librerías externas (csv, parquet) Opera sobre varias rows, pasa a un formato columnar!! recordemos > CPUs optimizadas para bucles simples!!
  • 22. SPARK 2.0 2. OPTIMIZACIÓN > FUNCIONES 2.2 Funciones • Integración de algoritmos aproximados en DataFrames y Datasets. HyperLogLog - CountMinSketch - BloomFilters • ApproxCountDistinct Estimación del número de elementos distintos que hay en una colección • ApproxQuantile Devuelve una aproximación a los percentiles Ejm. approx_count = users.agg(approxCountDistinct(users['user'], rsd = rsd)) Jugamos con el margen de error, más margen => más rápido
  • 23. SPARK 2.0 ApproxCountDistinct en función del margen elegido
  • 25. SPARK 2.0 3. SPARK CORE > ACUMULADORES 3.1 Acumuladores • Nueva API de acumuladores con un performance mejorado • AccumulatorContext para acceder y crear • API para implementar nuestros acumuladores propios • Implementado el Long - Double con cosas como sum, count, and averages val acc = new LongAccumulator acc.setValue(100L) acc.metadata = AccumulatorMetadata(1L, Some("longAccumulator"), false) AccumulatorContext.register(acc) val accAvg = acc.avg val accSum = acc.sum val accCount = acc.count val longAccumulator = AccumulatorContext.get(acc.id)
  • 26. SPARK 2.0 3. SPARK CORE > Block Manager 3.2 External Block Manager Genérico • Se han eliminado las clases que hacían uso de Tachyon • Se han eliminado en ciertos casos movimiento de datos por Http
  • 28. SPARK 2.0 4. SPARK SQL Principales funcionalidades • Olvidar SqlContext y pensar en SparkSession • Unificar API DataFrames/Datasets en Scala/Java en DataSets • Lenguaje SQL extendido para un soporte del 99% TPC-DS queries • Ejecutar SQL directamente sobre ficheros hadoop - text - csv - parquet
  • 29. SPARK 2.0 4. SPARK SQL > SPARK SESSION 4.1 SparkSession • Deprecamos SQLContext • Varias sesiones simultáneas independientes con sus propios catálogos • Crea un SparkContext si no ha sido creado previamente • Asignacion de parametros en caliente sparkSession.conf.set("spark.some.config", "abcd") • Funciones para listar, buscar y modificar el catálogo de tablas • Opciones de configuración como variables de sustitución en SQL sparkSession.sql("select '${spark.some.config}'") Veámos un poco de código en Intellij ...
  • 30. SPARK 2.0 4. SPARK SQL > API DataSet 4.2 API Dataset • Unificada la API de DataFrames y Dataset • type DataFrame = DataSet[Row] • No disponible en R ni Python • DataSet tipados y no tipados: Operaciones sobre tipados y no tipados (map, select, etc...) Agregaciones
  • 32. SPARK 2.0 5. SPARK STREAMING Principales funcionalidades • Sql sobre streaming estructurado: Triggers Agregaciones continuas • Eliminados los módulos: Twitter ZeroMQ MQTT Akka
  • 33. SPARK 2.0 5. SPARK STREAMING > SQL STREAMING API 5.1 SQL Streaming API • Implementado dentro del módulo de SQL • API batch y streaming unificada • Static DataFrame -> Infinite DataFrame • Independiente de DStreams API Cambiar queries en tiempo real, aplicar a ML y sink por JDBC
  • 35. SPARK 2.0 5. SPARK STREAMING > SQL STREAMING API Continuous aggregations val peopleAgg = sparkSession.read.json("/home/jcgarcia/meetupSql.json") peopleAgg.groupBy("id").agg(sum("age")) .write .mode(SaveMode.Overwrite) .parquet("/home/jcgarcia/parquetAgg1.parquet") val peopleAgg2 = sparkSession.read.format("json").stream("/home/jcgarcia/streamingexample") peopleAgg2.groupBy("id").agg(sum("age")) .write .option("queryName", "queryStreaming") .mode(SaveMode.Overwrite) .parquet("/home/jcgarcia/parquetAgg2.parquet") Batch aggregation Continuous aggreg ation
  • 36. SPARK 2.0 5. SPARK STREAMING > SQL STREAMING API Triggers val peopleAgg2 = sparkSession.read.format("json").stream("/home/jcgarcia/streamingexample") peopleAgg2.groupBy("id").agg(sum("age")) .write .option("queryName", "queryStreaming") .trigger(ProcessingTime("10 seconds"))
  • 37. SPARK 2.0 5. SPARK STREAMING > SQL STREAMING API Ejecución val peopleAgg2 = sparkSession.read.format("json").stream("/home/jcgarcia/streamingexample") peopleAgg2.groupBy("id").agg(sum("age")) .write .option("queryName", "queryStreaming") .trigger(ProcessingTime("10 seconds")) .startStream() .awaitTermination()
  • 39. SPARK 2.0 6. SPARK MLlib > PERSISTENCIA PIPELINES 6.1 Persistencia Pipelines • Salvar y cargar Pipelines completos • Salvar y cargar modelos individuales Veamos dos ejemplos ....
  • 40. SPARK 2.0 6. SPARK MLlib > PERSISTENCIA PIPELINES K-Means clustering model val kmeans = new KMeans().setK(10).setSeed(12345) val model = kmeans.fit(training) model.save(basePath + "/model") val sameModel = KMeansModel.load(basePath + "/model") from pyspark.ml.clustering import KMeansModel pyModel = KMeansModel.load(basePath + "/model")
  • 41. SPARK 2.0 6. SPARK MLlib > PERSISTENCIA PIPELINES Pipeline val scaler = new StandardScaler().setInputCol("features").setOutputCol("scaledFeatures") kmeans.setFeaturesCol("scaledFeatures") val pipeline = new Pipeline().setStages(Array(scaler, kmeans)) pipeline.save(basePath + "/pipeline") val samePipeline = Pipeline.load(basePath + "/pipeline")
  • 42. SPARK 2.0 Y para otro meetup ….. Re Architecting Spark for Mobile Platforms??? ;) https://databricks.com/blog/2015/04/01/spark-2-rearchitecting-spark-for-mobile.html
  • 43. BIG DATA CHILD`S PLAY Gracias!! Stratio busca Talento Contacto: jcgarcia@stratio.com es.linkedin.com/in/gserranojc