SlideShare a Scribd company logo
1 of 43
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

More Related Content

Viewers also liked

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.pptxPablo 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 ProductMahmoud 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/16pdx_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 presentationlordjoe
 
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 2015Chris Fregly
 
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 LaptopDatabricks
 
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 MalaskaSpark 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 SparkDatabricks
 
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 OptimizerDatabricks
 
Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0Introduction to Apache Spark 2.0
Introduction to Apache Spark 2.0Knoldus 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 SparkDatabricks
 

Viewers also liked (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 to 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 - ExasolJavier 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 CasadoBig Data Spain
 
Personalización Data Collectors
Personalización Data CollectorsPersonalización Data Collectors
Personalización Data CollectorsSolidQ
 
Introducción a Apache Spark
Introducción a Apache SparkIntroducción a Apache Spark
Introducción a Apache SparkSocialmetrix
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatosdevsco63
 
Lps 18 basesdedatos
Lps 18 basesdedatosLps 18 basesdedatos
Lps 18 basesdedatosRobert Wolf
 
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 serverEnrique Catala Bañuls
 
Introduccion a Apache Spark
Introduccion a Apache SparkIntroduccion a Apache Spark
Introduccion a Apache SparkGustavo Arjones
 
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 2Sefira111
 
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 WarehouseJoseph Lopez
 
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 elkJosé Ignacio Álvarez Ruiz
 

Similar to 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
 

Recently uploaded

CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOLUISDAVIDVIZARRETARA
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacajeremiasnifla
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptCRISTOFERSERGIOCANAL
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAJOSLUISCALLATAENRIQU
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingKevinCabrera96
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxJuanPablo452634
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaAlexanderimanolLencr
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdfCristhianZetaNima
 
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdfTEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdfXimenaFallaLecca1
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónXimenaFallaLecca1
 
Ingeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedicaIngeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedicaANACENIMENDEZ1
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASfranzEmersonMAMANIOC
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxBrayanJavierCalle2
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfedsonzav8
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Dr. Edwin Hernandez
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023RonaldoPaucarMontes
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrialGibranDiaz7
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfAntonioGonzalezIzqui
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdffredyflores58
 

Recently uploaded (20)

CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESOCAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
CAPITULO 4 ANODIZADO DE ALUMINIO ,OBTENCION Y PROCESO
 
Reporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpacaReporte de Exportaciones de Fibra de alpaca
Reporte de Exportaciones de Fibra de alpaca
 
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.pptaCARGA y FUERZA UNI 19 marzo 2024-22.ppt
aCARGA y FUERZA UNI 19 marzo 2024-22.ppt
 
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICAINTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
INTEGRALES TRIPLES CLASE TEORICA Y PRÁCTICA
 
Principales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards DemingPrincipales aportes de la carrera de William Edwards Deming
Principales aportes de la carrera de William Edwards Deming
 
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptxProcesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
Procesos-de-la-Industria-Alimentaria-Envasado-en-la-Produccion-de-Alimentos.pptx
 
Tinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiologíaTinciones simples en el laboratorio de microbiología
Tinciones simples en el laboratorio de microbiología
 
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
04. Sistema de fuerzas equivalentes II - UCV 2024 II.pdf
 
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdfTEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
TEXTO UNICO DE LA LEY-DE-CONTRATACIONES-ESTADO.pdf
 
Obras paralizadas en el sector construcción
Obras paralizadas en el sector construcciónObras paralizadas en el sector construcción
Obras paralizadas en el sector construcción
 
Ingeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedicaIngeniería clínica 1 Ingeniería biomedica
Ingeniería clínica 1 Ingeniería biomedica
 
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIASTEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
TEXTURA Y DETERMINACION DE ROCAS SEDIMENTARIAS
 
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptxCONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
CONCEPTOS EN HIDROGEOLOGIA-diapositivas varias.pptx
 
Manual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdfManual_Identificación_Geoformas_140627.pdf
Manual_Identificación_Geoformas_140627.pdf
 
Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...Propuesta para la creación de un Centro de Innovación para la Refundación ...
Propuesta para la creación de un Centro de Innovación para la Refundación ...
 
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
COMPEDIOS ESTADISTICOS DE PERU EN EL 2023
 
desarrollodeproyectoss inge. industrial
desarrollodeproyectoss  inge. industrialdesarrollodeproyectoss  inge. industrial
desarrollodeproyectoss inge. industrial
 
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdfVALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
VALORIZACION Y LIQUIDACION MIGUEL SALINAS.pdf
 
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdfTAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
TAREA 8 CORREDOR INTEROCEÁNICO DEL PAÍS.pdf
 
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdfECONOMIA APLICADA SEMANA 555555555555555555.pdf
ECONOMIA APLICADA SEMANA 555555555555555555.pdf
 

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