Lado oscuro de big data y el ingeniero del siglo xxi
1. 17 Mayo 2016
Del lado oscuro de BIG DATA
al INGENIERO del SIGLO XXI
2. Quién soy
DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
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. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
Filosofía de Silicon Valley en España
Un modelo organizativo distinto a la consultoría
4. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
I+D y proyectos Big Data Pure SPARK
5. José Carlos García Serrano
Arquitecto Big Data
jcgarcia@stratio.com
CONTACTO
DICE
BIG DATA PASADO,
PRESENTE Y FUTURO
• Google
• Hadoop / Spark
• Marco social/empresarial
1 2 3HADOOP
• HDFS
• Map / Reduce
• Hive - Pig - Mahout -
HBase
SPARK
• Paradigma
• Arquitectura
• Sql - Streaming -
Mllib - GraphX
NOSQL
• MongoDB
• Cassandra
• ElasticSearch
4 5 6EL MUNDO REAL DEMO
11. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
1. BIG DATA, PASADO - PRESENTE - FUTURO > GOOGLE
GOOGLE CONTIGO EMPEZÓ TODO!!
1.1 Google (C++)
• 2003 - Google File System (GFS).
http://static.googleusercontent.com/media/research.google.com/es//archive/gfs-sosp2003.pdf
• 2004 - Map Reduce (Simplified Data Processing on Large Clusters).
http://static.googleusercontent.com/media/research.google.com/es//archive/mapreduce-osdi04.pdf
ALMACENAMIENTO + PROCESAMIENTO
12. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
1. BIG DATA, PASADO - PRESENTE - FUTURO > HADOOP
1.2 Apache Hadoop (Java)
• 2006 - Doug Cutting ficha por Yahoo.
20 - 40 Nodos trabajando simultáneamente
• 2008 - Hadoop es una realidad y nace Cloudera
Google tiene su propio sistema
• 2011 - Hortonworks
42000 Nodos en Yahoo
• 2011 + Es usado por las grandes empresas del mundo
13. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
1. BIG DATA, PASADO - PRESENTE - FUTURO > SPARK
1.3 Apache Spark (Scala)
• 2009 - Matei Zaharia comenzó el proyecto en UC Berkeley's AMPLab
• 2010 - Open Source
• 2014 - Forma parte de Apache 2.0. Top Level Project
• 2015 - Más de 1000 contributors
• 2016 + La mayoría de los clústeres de Hadoop son migrados a Spark
14. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
FUTURO ?? NADIE LO SABE ....
1. BIG DATA, PASADO - PRESENTE - FUTURO > FUTURO
18. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
1. BIG DATA, PASADO - PRESENTE - FUTURO > SOC. / EMP
1.4 Marco social / empresarial
• La sociedad cambió con la llegada de:
Internet
Redes Sociales
SmartPhones
• Empresas como Google, Yahoo, Facebook, Amazon, Twitter son los grandes que dominan el mundo
• Otras empresas como Netflix, Uber, Spotify o Airbnb han cambiado el modelo de negocio
• La banca, las constructoras, las retails o las telcos están condenadas a cambiar o morir
http://pennystocks.la/battle-of-internet-giants/
19. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
1. BIG DATA, PASADO - PRESENTE - FUTURO > SOC. / EMP
Y EN ESPAÑA?? ATRASADOS COMO
SIEMPRE
• Todos quieren hacer Big Data pero nadie sabe qué hacer con sus datos
• La mayoría de los proyectos fracasarán
• Los ingenieros y los datos deberían ser el core de su negocio, pero
siguen externalizando
• Seguimos anclados tecnológicamente en el pasado tanto a nivel
empresarial como educativo
• La mayoría de proyectos Big Data son de BBVA, Telefónica, Santander,
Retail y Seguros
• Los ingenieros Big Data necesitan tener un gran número de skills
Persona anclada en el pasado!!
20. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
SOMOS INGENIEROS Y DEPENDEN DE NOSOTROS
21. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
SOMOS INGENIEROS Y DEPENDEN DE NOSOTROS
22. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
PERO EN ESPAÑA SOMOS CARNE DE CONSULTORA
24. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
2. HADOOP > ECOSISTEMA
25. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
2. HADOOP > HDFS
2.1 HDFS (Hadoop Distributed File System)
• Envuelve al sistema de ficheros del SO
• Instalado en maquinas commodity
• Podemos tener nuestros datos repartidos por el mundo (Amazon)
• HA (High Availability)
• Los SSD evitaron muchos cuellos de botella
• Es la base para todo entorno de Big Data: Spark, Hadoop, Flink
• Permite la creación de “Data Lakes”
• Apache Parquet + Hdfs es la solución para muchos problemas de Big Data
26. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
HDFS tiene en cuenta la localidad del dato: racks, topología de red ...
27. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
El tamaño de bloque es clave para la optimización de lecturas, escrituras y
trabajos de Map/Reduce
28. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
2. HADOOP > MAP - REDUCE
2.2 Map Reduce
• Algoritmo que permite la resolución de problemas de forma distribuida
• Las máquinas del cluster trabajan en paralelo
• Tolerante a fallos
• Todos recordamos divide y vencerás, verdad?? no inventaron la rueda…
• La fase de shuffle es su mayor problema
• Datos key - value
Recordemos… el verdadero cuello de botella en todos los entornos de Big Data:
La red!!
29. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
Split: [k, v] Sort by: [k] Merge: [k, [v1, v2, …. vn]]
30. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
Pero… somos desarrolladores!! esto en qué se traduce??
32. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
2. HADOOP > Hive - Pig - Mahout - HBase
• Capa SQL sobre datos de HDFS
• Son almacenados de forma que sean leídos rápidamente
• Una consulta SQL es traducida a trabajos Map Reduce
• Es usado por la mayoría de las empresas
• Lenguaje de scripting para manejar datos de ficheros
de HDFS
• Permite realizar ETL básicas y avanzadas
• Funciones como JOIN, GROUP BY, UNION, etc ...
• Es extensible mediante clases de Java
33. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
2. HADOOP > Hive - Pig - Mahout - HBase
• Basada en Big Table de Google
http://static.googleusercontent.com/media/research.google.com/es//archive/bigtable-osdi06.pdf
• Base de datos Columnar. El modelado es la clave.
• No permite SQL, para eso está Apache Phoenix (ODBC, JDBC)
• Almacena en HDFS y guarda en memoria (Bloom Filters)
• Fault Tolerance
• Accedemos entre millones de registros en ms
• Librería de Algoritmos de Machine Learning
• Son implementados de forma distribuida
• Se ejecutan dentro de Hadoop con la filosofía Map Reduce
• Se está migrando todo a Spark y Flink
35. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
3. SPARK > PARADIGMA
3.1 Paradigma
• Es un sistema de computación distribuida, optimizando el rendimiento
• Usa la memoria RAM de todos los nodos del cluster
• El disco duro es usado para ser Fault Tolerance, está integrado con HDFS
• Resuelve problemas de Big Data tan dispares como:
Machine Learning
Sql
Real Time
ETL
• Usa cluster managers para ejecutarse: Yarn, Mesos y Spark StandAlone
• Tiene una API para Scala, Java y Python
37. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
3. SPARK > ARQUITECTURA
38. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
3. SPARK > ARQUITECTURA
Spark StandAlone - YARN - MESOS
39. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
RDD (Resilient Distributed Dataset) es la unidad básica de procesamiento
40. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
3. SPARK > ARQUITECTURA
RDD
• Es una colección de elementos distribuida en memoria
• Un RDD no puede ser modificado (Inmutable)
• Está dividido en particiones y cada una de ellas puede estar en un nodo distinto
• Cuando se ejecuta una transformación o una acción, es computada en cada partición
• Podemos distribuir tanto a nivel de cluster como a nivel de cores
Programación distribuida by the face!! Yeah!!
41. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
Las transformaciones son Lazy
Si no implican Shuffle se ejecutan en la memoria de cada nodo
44. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
3. SPARK > SQL - STREAMING - MLlib - GRAPHX
3.3 SQL
• Permite tener una abstracción para acceder a múltiples Datasources
• Lenguaje SQL para BBDD NoSQL que no soporten operaciones como Joins, Group by, Where…
• El proceso resumido normalmente es:
● Parser
● Logical Plan
● Physical Plan
• Su API es extensible y podemos tener datasources propios
Un lenguaje SQL único para dominarlos a todos!!
46. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
3. SPARK > SQL - STREAMING - MLlib - GRAPHX
3.3 Streaming
• API de Real Time para realizar operaciones sobre datos de Streaming
• No es un Streaming puro, realiza micro batches
• Cada n milisegundos realizamos operaciones sobre los RDDs generados
• Podemos mezclar batch + streaming
• Su API es extensible y podemos tener fuentes de datos propias
Los datos en Streaming multiplican su valor
47. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
APIs extensibles, implementando pocos métodos tenemos uno propio
Kafka es la niña bonita del baile, verdadero streaming con un throughput único
49. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
3. SPARK > SQL - STREAMING - MLlib - GRAPHX
3.3 MLlib
• API de Machine Learning para ejecutar algoritmos de forma distribuida
• La API se está extendiendo para ejecutar algoritmos sobre Streaming
• Clustering, redes neuronales, clasificación, etc...
• Su API es extensible, implementemos nuestros algoritmos si somos capaces de paralelizarlos!
La magia de Big Data está aquí, pero tenemos que ser Data Scientists ...
51. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
3. SPARK > SQL - STREAMING - MLlib - GRAPHX
3.3 GraphX
• API de Grafos para tener una abstracción y algoritmos de uso específico
• Muchas bbdd de grafos en el mercado, GraphX no se casa con nadie
• Algoritmos como pagerank se realizan con pocas líneas de código
• La velocidad de cómputo es optimizada con su filosofía sobre datos en memoria
No necesitamos tener una BBDD de grafos instalada en una
arquitectura Big Data para ejecutar un algoritmo sobre nuestros datos!!
55. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
Recordemos conceptos...
56. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
4. NOSQL > MONGODB
4.1 MongoDB
• Base de datos orientada a documentos BSON (Binary-JSON)
• Útil para desarrollar backends y frontends Web, pero es mucho más…
• Alta disponibilidad y Tolerancia a Fallos (Replica Set)
• Particionado (Sharding)
• Lenguaje de consulta propio: Find, match, aggregation…
• El modelado de la base de datos es clave para realizar las consultas
• No es transaccional
• No permite tener joins entre tablas hasta esta última versión
• Subdocumentos JSON, tipos de dato array ...
57. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
HA y Fault Tolerance Replica Set
58. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
Particionado Sharding
59. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
4. NOSQL > CASSANDRA
4.2 Cassandra
• Orientado a filas, híbrido entre una base de datos Key-Value y una columnar
• Apadrinada por DataStax
• Optimizada para realizar escrituras y lecturas basadas en la PK (índices sec.)
• Tolerante a fallos, Particionado y Alta disponibilidad
• El modelado de datos nos define las consultas que podemos hacer
• Lenguaje SQL limitado, no hay joins
• Los datos al leerlos pueden no ser consistentes, si no se cumple:
W + R > N
Un anillo para gobernarlos a todos
60. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
HA - FT - Particionado Anillo de Cassandra
Todos los nodos son iguales,
no hay roles distintos
La clave de particionado,
Partition Key
Podemos definir un nivel de
réplica
Escalado uniforme:
+nodos = +throughput
tokens
61. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
4. NOSQL > ELASTICSEARCH
4.3 ElasticSearch
• Es un motor de búsqueda y analítica distribuido. No es una BBDD!!
• Se basa en Índices distribuidos en memoria (Invertex Index)
• Basado en Apache Lucene
• Apadrinado por Elastic
• Ligada a documentos JSON
• Libre de esquema, con autodescubrimiento y creación de mappings
• RESTful API para consulta, lenguaje propio basado en Lucene (facets, percolate, tokenize, etc...)
• Auto descubrimiento de nodos y escalado horizontal
• Tolerante a fallos, Particionado y Alta disponibilidad
62. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
La memoria se corrompe, los índices también!!
63. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
Pero en elastic hacen las cosas muy muy bien…
67. Imposible competir con ellos, y si hacemos las cosas bien??
● Batch + Real Time
● Extraer inteligencia de los datos
● Machine Learning + Big Data
● Nuevas fuentes de datos como IoT, social sentiment ...
● Integrar obsoletos sistemas de BI, mejor juntos que separados
● Confianza, no quedarse en PoC y llegar a producción
● Exponer el dato como el core del negocio
http://pennystocks.la/battle-of-internet-giants/
68. DATA CENTRIC
DATA
Mobile APP Campaign
Management
E-commerce
Digital
Marketing
Legacy
Application
Call centerSAP : ERP
ATG
TPV APP
CRM
69. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
Y nosotros qué?? Somos desarrolladores!!
Lo quieren para mercadear con el!!
Hay que evangelizar...
Estos no existen, son malos
desarrolladores Back y Front
70. • Uso óptimo de los recursos y la memoria
• Sobre la JVM, tenemos todas las librerías de Java
• Herencia y Polimorfismo
• Programación funcional
• No queremos efectos de lado
• Spark - Flink => funciones de orden superior
• En pocas líneas hacemos mucho
• Modelo de actores con Akka, concurrencia controlada!!
• Recursividad elevada a la máxima potencia
• Asincronía => Promesas => Futuros => API REST de
nueva generación
DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
71. DEL LADO OSCURO DE BIG DATA AL INGENIERO DEL SIGLO XXI
De qué más tenemos que saber?? y que mole??
Pero esto lo dejamos para otro día ...