Tecnologas Hadoop
Una introduccin al ecosistema Hadoop
Quien soy
Angel Llosa Guillen
Architecture Manager in Capgemini
https://es.linkedin.com/in/anllogui
https://twitter.com/anllogui
Esta charla
Introduccin al ecosistema Hadoop
Visin de conjunto de las principales tecnologas
Orientada a desarrolladores y analistas de datos
Agenda
Qu es BigData
Ecosistema Hadoop
Distribuciones Hadoop
Arquitecturas de referencia
Recomendaciones y consideraciones
Qu es BigData?
(Volumen)
DW vs BigData
Fuentes datos actuales (estructuradas)
Las capacidades analticas te las dan los orgenes de datos
La velocidad y el volumen tienen costes altos
Fuentes datos actuales (estructuradas) Nuevas fuentes datos (estructuradas
Las capacidades analticas te las dan y no)
los orgenes de datos Nuevas capacidades analticas
La velocidad y el volumen tienen Nuevas opciones de disponer de
costes altos velocidad y volumen a costes
reducidos
Tecnologas Big Data 2016
ndice
Qu es BigData
Ecosistema Hadoop
Distribuciones Hadoop
Arquitecturas de referencia
Recomendaciones y consideraciones
Hadoop ecosystem
Qu es Hadoop?
Principales productos del ecosistema Hadoop
Stack tecnolgico
Qu es Hadoop?
Hadoop es un framework que permite el proceso distribuido de grandes volmenes
de datos entre clusters de computacin.
Est diseado para escalar desde un solo servidor a miles de mquinas, cada una
ofreciendo capacidad de clculo y de almacenamiento.
Tolerante a fallos
Incluye:
Hadoop Commons
Hadoop Distributed File System (HDFS)
Hadoop YARN (yet another resource negotiator)
Hadoop MapReduce
Yahoo: 4500 nodos (2*4cpu boxes w 4*1TB disk & 16GB RAM)
Stack Tecnolgico
MapReduce 2
YARN
HDFS
General Purpose
Execution Engines
Storage managers
HDFS
Almacenamiento de datos distribuido, tolerante a fallos.
Analoga con un sistema de ficheros, no una BD.
HDFS ha demostrado que es escalable hasta 200 PB de almacenamiento
en un cluster de 4500 nodos
hdfs dfs -ls /user/hadoop/file1
hdfs dfs -mkdir /user/hadoop/dir1 /user/hadoop/dir2
hdfs dfs -rm hdfs://nn.example.com/file /user/hadoop/emptydir
YARN / Mapreduce
Procesamiento de bajo nivel.
Distribuido, tolerante a fallos y orientado a batch
MapReduce:
Fwk con servicios para distribuir trabajos y recolectar resultados, ordenar,
filtrar, etc.
YARN:
Gestiona el acceso a los recursos de la aplicacin (memoria, CPU)
Monitoriza los nodos.
Planifica los trabajos.
Soporta distintos tipos de aplicacin (no solo MR).
Stack Tecnolgico
Cascading
Mahout
Giraph
Sqoop
Hive
Pig
MapReduce 2
YARN
HBase
HDFS
General Purpose Graph processing
Abstraction Engines
Execution Engines Engines
Storage managers SQL Engines Machine Learning
HBase
Base de datos distribuida, columnar y no relacional, basada en Bigtable de
Google
Almacenamiento distribuido en un cluster de mquinas
Modelo de datos sin esquemas predefinidos (NoSQL)
Particiones de datos autogestionadas.
HBase
Qu no es:
No es una BBDD SQL
No es relacional
No soporta Joins
Sin un motor de consultas sofisticado
No es transaccional por defecto
No es un sustituto a una RDBMS
Entonces, para qu sirve? e.g.: para almacenar y procesar logs
HBase
Hive
SQL-Like HiveSQL
Reduce el tiempo de desarrollo.
Se ejecuta sobre Mapreduce, Spark o Tez.
Orientado a batch. En progreso modo interactivo Stinger Initiative
SELECT customers.cust_id, SUM(cost) AS total
FROM customers
JOIN orders
ON customers.cust_id = orders.cust_id
GROUP BY customers.cust_id
ORDER BY total DESC;
PIG
Lenguaje de alto nivel para procesado de datos
Procedural data flow:
Joining and transforming data.
Se pueden utilizar funciones programadas en Java dentro de PIG
people = LOAD /user/training/customers AS (cust_id, name);
orders = LOAD /user/training/orders AS (ord_id, cust_id, cost);
groups = GROUP orders BY cust_id;
totals = FOREACH groups GENERATE group, SUM(orders.cost) AS t;
result = JOIN totals BY group, people BY cust_id;
DUMP result;
Sqoop
Herramienta para realizar transferencias de datos masivas entre RDBMs y
Hadoop (HDFS, HIVE, HBase).
Bases de datos soportadas:
MySQL
PostgreSQL
Oracle
HSQLDB
Paralelizado (MR), incremental, etc.
Sqoop
[root@quickstart.cloudera ~] sqoop import-all-tables \
-- num-mappers 1 \
--connect jdbc:mysql://quickstart.cloudera:3306/retail_db \
--username=retail_dba \
--password=cloudera \
--compression-codec=snappy \
--as-avrodatafile \
--warehouse-dir=/user/hive/warehouse/userXX
[root@quickstart.cloudera ~] sqoop import \
--query 'SELECT a.*, b.* FROM a JOIN b on (a.id == b.id) WHERE
$CONDITIONS' \
Otros
Cascading: ETL basado en Java/Scala
Giraph: Proceso de grafos
Mahout: Libreras para machine learning
Stack Tecnolgico
Spark Streaming
Spark SQL
Cascading
BlinkDB
Mahout
GraphX
Giraph
Sqoop
MLib
Hive
Pig
MapReduce 2 Spark
YARN
HBase
HDFS / MapR-FS / HBase
General Purpose Graph processing
Abstraction Engines
Execution Engines Engines
Storage managers SQL Engines Machine Learning Streaming
Spark
Diferencias con Mapreduce:
Es ms rpido: Optimizado para trabajar en memoria
Menos costoso mover datos durante el procesado
Una API ms potente que MR Ms fcil para desarrollar
APIs en Scala, Python y Java.
Spark se puede ejecutar en modo standalone o sobre clusters:
Amazon EC2
Standalone Deploy Mode
Apache Mesos
Hadoop YARN
Escalable desde la fase de desarrollo
Spark
Daytona GraySort contest:
Spark SQL
Integrado con Spark: Se pueden lanzar consultas desde cdigo.
Acceso a distintas fuentes de datos: JSON, tablas Hive
Compatibilidad con Hive: HiveQL, datos y user defined functions.
Trabaja con dataframes
Spark Streaming
Fcil de usar, tolerante a fallos, integrado con Spark...
Se puede usar con Mlib.
Microbatches (input & output)
Stack Tecnolgico
Spark Streaming
Spark SQL
Cascading
Cascading
BlinkDB
Mahout
GraphX
Giraph
Sqoop
MLib
Hive
Hive
Pig
Pig
MapReduce 2 Spark
YARN
HBase
HDFS / MapR-FS / HBase
General Purpose Graph processing
Abstraction Engines
Execution Engines Engines
Storage managers SQL Engines Machine Learning Streaming
Stack Tecnolgico
Spark Streaming
Spark SQL
Cascading
Cascading
BlinkDB
Mahout
GraphX
Giraph
Sqoop
MLib
Hive
Hive
Pig
Pig
MapReduce 2 Spark
Impala
Storm
Flume
Hawq
Kafka
YARN
HBase
HDFS / MapR-FS / HBase
General Purpose Graph processing
Abstraction Engines Pub / Sub
Execution Engines Engines
Storage managers SQL Engines Machine Learning Streaming
Impala
Creado por Cloudera
Open Source - Apache (incubating)
Orientado a consultas interactivas:
Consultas ad-hoc
Para herramientas BI (Pentaho, Microstrategy)
10 ms rpido que Hive o Pig (sobre MR)
Motor de ejecucin propio (no MapReduce)
Hawq
Creado por Pivotal
100% ANSI SQL compatible
Benchmark (hecho por Pivotal):
mejores resultados que Impala
21x ms rpido que Stinger (Hive).
Diseado para gestionar PB
Kafka
Sistema de mensajera de publicacin-suscripcin
Rpido, escalable, durable y tolerante a fallos
Posible sustituto a JMS y AMQP por su rendimiento, fiabilidad y
replicacin
Casos de uso:
Stream Processing
Seguimiento de actividad web
Recoleccin de mtricas y monitorizacin
Recopilacin de logs
Flume
Sistema distribuido y seguro para recolectar, agregar y
mover grandes volmenes de datos
Flume
Sources: Channels: Sinks:
Avro Source Memory Channel HDFS Sink
Thrift Source JDBC Channel Logger Sink
JMS Source File Channel Avro Sink
Converter Kafka Channel Thrift Sink
Spooling Directory Source Spillable Memory IRC Sink
BlobDeserializer Channel File Roll Sink
NetCat Source Pseudo Transaction Null Sink
Sequence Generator Channel HBaseSink
Syslog Sources Custom Channel MorphlineSolr Sink
HTTP Source ElasticSearch Sink
... ...
Flume vs. Kafka
Kafka es multipropsito, con algunas fuentes y sumideros.
Flume fu creado para recopilacin de logs y escritura en HDFS, an as,
soporta ms fuentes y sumideros por defecto que Kafka.
Los dos son zero data loss, pero Kafka es high-available
Kafka y Flume pueden ser utilizados juntos: Por ejemplo, para hacer
streaming a HDFS es recomendable utilizar Kafka como fuente y Flume
como sumidero.
Storm
Open Source y adquirido por Twitter
Capacidades:
Rpido - un milln de mensajes procesados por segundo por nodo
Escalable Procesamiento en paralelo en distintos nodos
Tolerante a fallos
Seguro Cada mensaje se procesa slo una vez.
Stack Tecnolgico
Spark Streaming
Spark SQL
Cascading
Cascading
BlinkDB
Mahout
GraphX
Giraph
Sqoop
MLib
Hive
Hive
Pig
Pig
MapReduce 2 Spark
Impala
Storm
Flume
Hawq
Kafka
YARN
HBase
HDFS / MapR-FS / HBase
General Purpose Graph processing
Abstraction Engines
Execution Engines Engines
Storage managers SQL Engines Machine Learning Streaming
ndice
Qu es BigData
Ecosistema Hadoop
Distribuciones Hadoop
Arquitecturas de referencia
Recomendaciones y consideraciones
Distribuciones Hadoop
Distribucin: empaquetado de tecnologas del ecosistema Hadoop con
una capa de gestin aadida y soporte empresarial.
Las tres principales:
Cloudera
Hortonworks
MapR
Cloudera
Distribuye Cloudera Enterprise
Contribuyente principal del proyecto Impala.
Incluye, entre otros, los siguientes servicios:
Seguridad
Gobierno de dato
Gobierno operacional
Cloudera Manager y Cloudera Navigator no son OS.
Cloudera
HortonWorks
Distribuye la Hortonworks Data Platform (HDP)
Contribuyente principal del proyecto Hive.
HDP incluye los siguientes servicios:
Seguridad
Gobierno de dato
Gobierno operacional
Propulsor de la "Stinger Initiative:
Mejorar Hive para tratar consultas interactivas (no batch)
Consultas a escala de petabyte
Todo Opensource
HortonWorks
MapR
Mapr-FS en vez de HDFS:
Mejor rendimiento, confiabilidad, eficiencia, mantenibilidad y
facilidad de uso.
Se puede montar va NFS.
Posix-compliant
Soporta Impala
MapR
Mapr-DB en vez de HBase:
MapR
Bonus track: Stratio
ndice
Qu es BigData
Ecosistema Hadoop
Distribuciones Hadoop
Arquitecturas de referencia
Recomendaciones y consideraciones
Conceptual Architecture
Data Lake
Un data lake es un repositorio donde se almacenan TODOS los datos de la
compaa, estructurados y sin estructurar, sin ningn tipo de
preprocesamiento (raw data) y sin ningn tipo de esquema, para ser
analizados posteriormente.
Los datos son vertidos en l y recuperados cuando es necesario. Solo en
ese instante se les da un orden y una estructura que permita su posterior
anlisis.
Ejemplo Data Lake con Cloudera
Arquitectura Lambda
Equilibrar la latencia, rendimiento y tolerancia a fallos mediante el uso de
procesamiento por lotes para proporcionar puntos de vista pre-computados
completos y exactos, mientras que al mismo tiempo utilizando el procesamiento de
flujo en tiempo real para proporcionar vistas dinmicas.
ndice
Qu es BigData
Ecosistema Hadoop
Distribuciones Hadoop
Arquitecturas de referencia
Recomendaciones y consideraciones
Recomendaciones
Para los proyectos de Big Data, no hay que "obsesionarse" con la tecnologa.
Las tecnologas Big Data son un facilitador
permiten hacer a un coste razonable lo que antes era sencillamente
imposible o estaba solo al alcance de unos pocos.
La arquitectura tcnica, Hadoop s o no, la distribucin a elegir, etc son
decisiones estratgicas basadas en qu queremos hacer y por tanto, cmo
vamos a usar la tecnologa para conseguir esos fines. Y no al revs.
Pequea gua
Si se tienen consultas ad-hoc, las consultas y necesidades analticas se conocen de
antemano y los datos son de menos de 600TB, la recomendacin sera un Data
warehouse.
Si el volumen de datos a gestionar es mayor de 600TB, la recomendacin sera ir
hacia un modelo basado en Hadoop pero teniendo en cuenta la complejidad de las
consultas requeridas.
Si los volmenes de datos son pequeos, no se requiere analtica, pero se requiere
alta velocidad la recomendacin podra ser NoSQL
Consideraciones
Tecnologa emergente. En continua evolucin (cada menos de 6 meses
cambia)
El % de implantacin en el mercado Espaol es muy escaso por lo que no
hay experiencias y referencias maduras (Telcos en su mayora)
Gartner Magic Quadrant DW
Cloudera y MapR
consideradas plataformas
de DW
http://www.gartner.com/technology/reprints.do?id=1-2A7BNGD&ct=150219&st=sb
Forrester Wave Big Data Hadoop Solutions
2014 2016
https://www.cloudera.com/content/dam/www/static/documents/analyst-reports/forrester-wave-big-data-hadoop-distributions.pdf
Q&A
Sesin Prctica
CCP: Data Scientist Challenge One Solution Kit:
http://certification.cloudera.com/prep/dsc1sk/intro.html
www.capgemini.com