Post on 16-Jul-2015
Taller:
“Monta una infraestructura Big Data para tu Empresa”
Urko Zurutuza
Dpto. Electrónica e Informática
Mondragon Goi Eskola Politeknikoa JMA
Mondragon Unibertsitatea
• http://bit.ly/bigdata_sesion1
• bit.ly/bigdatadocs
Agenda
• Día 1: Introducción al Big Data
• Día 2: Instalación de un cluster Cloudera
• Día 3: Ejercicios sobre Cloudera
Índice
1. Introducción
2. Big Data
3. Ecosistema Big Data
4. Distribuciones Big Data
5. Herramientas Big Data
6. Conclusiones
Data
CRECIMIENTO DE DATOS
PARA EL 2020
Big Data
Un poco de historia…
Un poco de historia…
Un poco de historia…
Big Data
“Big Data” hace referencia al conjunto de
información que es demasiado compleja
como para ser procesada mediante TI
tradicionales de manera aceptable
–Min Chen, Shiwen Mao, and Yunhao Liu. Big Data: A Survey. Mobile Networks and
Applications,
19(2):171–209, 2014.
Big Data
“Big Data hace referencia al conjunto de
información que es demasiado compleja
como para ser procesada mediante TI
tradicionales de manera aceptable
–Min Chen, Shiwen Mao, and Yunhao Liu. Big Data: A Survey. Mobile Networks and
Applications,
19(2):171–209, 2014.
Big Data
Big Data
Big Data – Cambio de Paradigma
Big Data – Cambio de Paradigma
Ecosistema Big Data
Ecosistema Hadoop (simplificado)
Apache
Pig:
Scripting
Almacenamient
o redundante y
fiable
YARNGestiona
recursos del
Cluster
Procesamiento
Distribuido de
datosZookee
per:
Coordin
a la
distribuc
ión
Data
Warehous
e
Machine
LearningColector
de datos
Conector
BBDDR-
HDFS
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
Distribuciones Hadoop
Distribuciones Hadoop
• Cloudera
• HortonWorks
• MapR
• IBM BigInsights
• Amazon EC2
• Microsoft Azure HDInsight
• …
Cloudera CDH
HortonWorks
MapR
IBM BigInsights
Oracle Big Data
Amazon EMR
Microsoft Azure HDInsight
Componentes
Apache Hadoop
• Sistema que permite una computación
– Fiable,
– Escalable, y
– Distribuida
• Un Framework que permite el procesamiento distribuido de grandes conjuntos de datos sobre clusters de ordenadores
Apache Hadoop
• Hadoop common: utilidades comunes que dan soporte al resto de los módulos de Hadoop
• Hadoop Distributed File System (HDFS): sistema de ficheros distribuido.
• Hadoop YARN: sistema para la planificación de trabajos y gestión de recursos del cluster
• Hadoop MapReduce: sistema basado en YARN para procesamiento paralelo de grandes volúmenes de datos
¿Quién usa Hadoop?
• Adobe– We use Apache Hadoop and Apache HBase in
several areas from social services to structureddata storage and processing for internal use.
– We currently have about 30 nodes running HDFS, Hadoop and HBase in clusters ranging from 5 to14 nodes on both production and development. We plan a deployment on an 80 nodes cluster.
– We constantly write data to Apache HBase and run MapReduce jobs to process then store it back to Apache HBase or external systems.
¿Quién usa Hadoop?
• EBay
– 532 nodes cluster (8 * 532 cores, 5.3PB).
– Heavy usage of Java MapReduce, Apache
Pig, Apache Hive, Apache HBase
– Using it for Search optimization and Research.
¿Quién usa Hadoop?
• Facebook– We use Apache Hadoop to store copies of internal log
and dimension data sources and use it as a source for reporting/analytics and machine learning.
– Currently we have 2 major clusters:• A 1100-machine cluster with 8800 cores and about 12 PB raw
storage.
• A 300-machine cluster with 2400 cores and about 3 PB raw storage.
– Each (commodity) node has 8 cores and 12 TB of storage.
– We are heavy users of both streaming as well as the Java APIs. We have built a higher level data warehousing framework using these features called Hive (see the http://hadoop.apache.org/hive/).
¿Quién usa Hadoop?
• Last.fm
– 100 nodes
– Dual quad-core Xeon L5520 @ 2.27GHz & L5630 @ 2.13GHz , 24GB RAM, 8TB(4x2TB)/node storage.
– Used for charts calculation, royalty reporting, log analysis, A/B testing, dataset merging
– Also used for large scale audio feature analysis over millions of tracks
¿Quién usa Hadoop?
• LinkedIn– We have multiple grids divided up based upon purpose.
– Hardware:• ~800 Westmere-based HP SL 170x, with 2x4 cores, 24GB RAM, 6x2TB SATA
• ~1900 Westmere-based SuperMicro X8DTT-H, with 2x6 cores, 24GB RAM, 6x2TB SATA
• ~1400 Sandy Bridge-based SuperMicro with 2x6 cores, 32GB RAM, 6x2TB SATA
– Software:• RHEL 6.3
• Sun JDK 1.6.0_32
• Apache Hadoop 0.20.2+patches and Apache Hadoop 1.0.4+patches
• Pig 0.10 + DataFu
• Azkaban and Azkaban 2 for scheduling
• Apache Hive, Apache Avro, Apache Kafka, and other bits and pieces...
– We use these things for discovering People You May Know and other fun facts.
¿Quién usa Hadoop?
• Spotify
– We use Apache Hadoop for content generation, data aggregation, reporting and analysis
– 690 node cluster = 8280 physical cores, 38TB RAM, 28 PB storage
– +7,500 daily Hadoop jobs (scheduled by Luigi, our home-grown and recently open-sourced job scheduler - code and video)
¿Quién usa Hadoop?
• Twitter– We use Apache Hadoop to store and process tweets,
log files, and many other types of data generated across Twitter. We store all data as compressed LZO files.
– We use both Scala and Java to access Hadoop'sMapReduce APIs
– We use Apache Pig heavily for both scheduled and ad-hoc jobs, due to its ability to accomplish a lot with few statements.
– We employ committers on Apache Pig, Apache Avro, Apache Hive, and Apache Cassandra, and contribute much of our internal Hadoop work to opensource (see hadoop-lzo)
Almacenamiento
Almacenamiento: HDFS
• Diseñado para ejecutarse en Hw común(commodity)
• Tolerante a fallos
• Diseñado para trabajo por lotes (batch)
• Diseñado para manejar ficheros grandes, enfocadoen muchos accesos (throughput), más que en velocidad (latencia)
• Modelo: escribir una vez, leer muchas
• Importancia: es más barato mover la computaciónque los datos
• Portabilidad
Almacenamiento: HDFS
Almacenamiento: NoSQL (Not
Only SQL)
• Base de Datos de nueva generación que
en su mayoría aborda algunas de las
siguientes características:
– no relacional,
– distribuida,
– open-source, y
– horizontalmente escalable
[fuente: http://nosql-database.org/]
Almacenamiento: NoSQL (Not
Only SQL)
Tipo Descripción Ejemplo
Clave-
Valor
Cada elemento tiene una
clave y su valor asociado. emcached
Familias
de
Columnas
Para consultas sobre grandes
conjuntos de datos. Enfoque
en columnas no en filas
Document
os
Empareja una clave con una
estructura de datos o
documento.
Grafos
Guarda nodos y sus
relaciones. RRSS,
estructuras de redes,…
http://db-engines.com/en/ranking/
Almacenamiento: Base de Datos
HBase
• Qué es Hbase?
– En Hbase los datos se almacenan en tablas, lascuales tienen filas y columnas… pero mejor verlocomo un mapa u objeto multidimensional
– Una tabla de Hbase contiene multiples filas.
– Una fila de datos tiene una clave ordenable y un número arbitrario de columnas. La tabla se almacena de forma dispersa, de modo que lasfilas de una misma tabla pueden tener columnastan variadas como se quiera.
Almacenamiento: Base de Datos
HBase
• Map: filas de datos
{
"zzzzz" : "woot",
"xyz" : "hello",
"aaaab" : "world",
"1" : "x",
"aaaaa" : "y"
}
Almacenamiento: Base de Datos
HBase
• Sorted Map: filas ordenadas por la clave
{
"1" : "x",
"aaaaa" : "y",
"aaaab" : "world",
"xyz" : "hello",
"zzzzz" : "woot"
}
Almacenamiento: Base de Datos
HBase
• Multidimensional: familias de columnas por
cada fila{
"1" : {
"A" : "x",
"B" : "z"
},
"aaaaa" : {
"A" : "y",
"B" : "w"
},
"aaaab" : {
"A" : "world",
"B" : "ocean"
},
"xyz" : {
"A" : "hello",
"B" : "there"
},
"zzzzz" : {
"A" : "woot",
"B" : "1337"
}
}
Almacenamiento: Base de Datos
HBase
• Multidimensional: una familia de columnas
puede tener varias columnas, identificadas
por una etiqueta o qualifier{
// ...
"aaaaa" : {
"A" : {
"foo" : "y",
"bar" : "d"
},
"B" : {
"" : "w"
}
},
"aaaab" : {
"A" : {
"foo" : "world",
"bar" : "domination"
},
"B" : {
"" : "ocean"
}
},
// ...
}
Almacenamiento: Base de Datos
HBase
• Multidimensional: timestamp{
// ...
"aaaaa" : {
"A" : {
"foo" : {
15 : "y",
4 : "m"
},
"bar" : {
15 : "d",
}
},
"B" : {
"" : {
6 : "w"
3 : "o"
1 : "w"
}
}
},
// ...
}
Procesamiento de datos
Procesamiento de Datos
• Varios modos de alimentar un sistema
Hadoop:
– Por lotes (batch): tengo todos los datos y los
proceso
– En tiempo real (streaming): según se generan
los eventos los computo
Procesamiento en batch:
MapReduce
• Marco para escribir aplicaciones que procesanenormes cantidades de datos de forma paralela en grandes clusters formados por hardware común.
• MapReduce job– Divide el conjunto de datos de entrada en pedazos
(chunks) que son procesados por tareas “map” de forma paralela.
– Ordena las salidas de los “maps”, que son entrada a las tareas “reduce”.
– Opera sobre pares clave-valor.
– No necesariamente en Java.
Procesamiento en batch:
MapReduce
, 4
, 2
, 4
, 3
, 4
, 2
, 4
, 3
Split MapShuffle
&
Sort
Reduce
Master
assign
sassigns
Procesamiento en batch:
MapReduce
• Ejemplo:
$ bin/hadoop dfs -cat /usr/joe/wordcount/input/file01
Hello World Bye World
$ bin/hadoop dfs -cat /usr/joe/wordcount/input/file02
Hello Hadoop Goodbye Hadoop
Procesamiento en batch:
MapReduce
• Mapper: – procesa cada línea (cada línea un map)
– Divide en tokens separados por espacios (palabras)
– Emite un conjunto de claves-valor, en modo <palabra, 1>
– Map 1:• < Hello, 1>
• < World, 1>
• < Bye, 1>
• < World, 1>
– Map 2:• < Hello, 1>
• < Hadoop, 1>
• < Goodbye, 1>
• < Hadoop, 1>
Procesamiento en batch:
MapReduce
• Combiner:
– Cada map se ordena y genera agregadoslocales:
– Salida del primer Map:• < Bye, 1>
• < Hello, 1>
• < World, 2>
– Salida del segundo Map:• < Goodbye, 1>
• < Hadoop, 2>
• < Hello, 1>
Procesamiento en batch:
MapReduce
• Reducer:
– Suma los valores (ocurrencias de cada clave):• < Bye, 1>
• < Goodbye, 1>
• < Hadoop, 2>
• < Hello, 2>
• < World, 2>
Procesamiento en batch: Apache
Pig
• Plataforma para análisis/tratamiento de datos
• Tiene un compilador que genera lassequencias de MapReduce
• Lenguaje de alto nivel: Pig Latin:
A = LOAD 'student' USING PigStorage() AS (name:chararray, age:int, gpa:float);
X = FOREACH A GENERATE name,$2;
DUMP X;
(John,4.0F)
(Mary,3.8F)
(Bill,3.9F)
(Joe,3.8F)
Procesamiento en streaming:
Storm
• Sistema de computación distribuido en tiempo real
• “El hadoop del tiempo real”
• Lo que en Hadoop son trabajosMapReduce, en Storm son topologías.
– El MapReduce es un trabajo específico,
– Una topología está haciendo el trabajo de forma persistente
• Se pueden crear clusters de Storm
Proceso en streaming: Spark
streaming
• Procesamiento en memoria (vs.
MapReduce)
• Muy rápido
• Java, Scala, Python
Ingestión de datos
Ingestión de Datos
• Varios modos de alimentar un sistema
Hadoop:
– Por lotes (batch): hacer un volcado
– En tiempo real (streaming): según se
generan los eventos
Ingestión de Datos por lotes:
HDFS
• La forma más sencilla, pero debemos tener
los datos en ficheros
$ hadoop fs –put <nombre_fichero>
• Rara vez, pero podría ser…
Ingestión de Datos por lotes:
Apache sqoop
• Transfiere datos entre Hadoop y datos
estructurados como Bases de Datos
Relacionales
$ sqoop import --connect jdbc:mysql://database.example.com/employees
--username aaron --password 12345
• No siempre tenemos los datos
empaquetados en un único fichero
Ingestión de Datos por lotes:
Apache sqoop
tablas tablasFicheros
distribuidos
BBDD
Relacional
BBDD
RelacionalHDFS
Tratamiento
(MapReduce) (MapReduce)
(MapReduce)
Ingestión de Datos en streaming:
Apache Flume
• Servicio distribuido y fiable para recopilar,
agregar y mover grandes volúmenes de datos
(de log) de forma eficiente
• De muchas y variadas fuentes de logs a un
lugar centralizado de almacenamiento de
datos (ej. Hadoop)
• Cuando los datos se generan de forma
continua
• No solo logs, también sirve para p.e. datos de
tráfico de red, datos generados por social
media, emails, …
Ingestión de Datos en streaming:
Apache Flume
• Una fuente externa envía eventos a un
agente Flume, en un formato que Flume
pueda reconocer.
• El evento se guarda en el canal, hasta que
es consumido por el sumidero (Sink)
• El Sink quita el evento del canal y lo pone
en un repositorio externo o en otro origen
de Flume
Ingestión de Datos en streaming:
Apache Flume
Ingestión de Datos en streaming:
Apache Flume
• Origenes Flume:
– Avro
– Thrift
– Exec (el resultado de la ejecución de un comando Unix)
– Un directorio a la espera de nuevos ficheros y sus contenidos
– NetCat
– Syslog
– HTTP
Ingestión de Datos en streaming:
Apache Flume
• Canales Flume:
– Memoria
– JDBC
– Fichero
– …
Ingestión de Datos en streaming:
Apache Flume
• Sinks Flume:
– HDFS
– Avro
– Thrift
– IRC
– Fichero
– Hbase
– …
Ingestión de Datos en streaming:
Apache Flume
• El Sink HDFS crea un fichero, lo abre, mete datos, y cierra el fichero de forma constante
• Se falla el Sink antes de cerrar el fichero, se pierden los datos: falta persistencia
• En contra de la filosofía de Hadoop: ficheros grandes Vs. muchos ficherospequeños
– Sus metadatos se guardan en memoria del NameNode!!
Ingestión de Datos en streaming:
Apache Kafka
• Servicio para registro de logs distribuido y particionado
• Rápido: un Kafka “broker” puede manejarcientos de megabytes de lecturas y escrituras por segundo de miles de clientes
• Escalable: los flujos de datos se puedendividir por el cluster, y así ser consumidosde forma distribuida
• Durable: los mensajes son persistentes (en disco)
Consulta de datos
Consulta: Hive
• Provee un mecanismo para proyectar
estructuras de datos y ser consultadas en
un lenguaje pseudo-SQL: HiveQL
• La consulta genera un conjunto de
MapReduces, donde su resultado se
muestra como una tabla
Consulta: Impala
• Mediante Impala se pueden consultar
datos de HDFS o de Hbase
• Se integra con Apache Hive, para
compartir sus tablas y BBDD.
• No usa MapReduce
• Es de Cloudera (MapR tiene Drill)
Consulta: Search (Solr)
• Indexación de contenidos escalable, fiable
y distribuido
• Capaz de Indexar:
– Texto
– JSON
– XML
– CSV
Análisis de Datos
Análisis de datos
• In-Memory Analytics vs. In-Hadoop Analytics
• El fondo es el mismo, pero ahora: – Distribuido
– Escalable
• Herramientas– R
– Spark (Mllib)
– TODOS: RapidMiner, SAS, Teradata,…
Análisis de datos: Apache Mahout
• Un entorno para generar aplicacionesescalables de machine learning– El entorno mismo
– Algoritmos de Scala + Spark, H2O y Flink
– Algoritmos Mahout para Hadoop MapReduce
• Algoritmos:– Recomendador
– K-Means, Fuzzy K-Means clustering
– Clasificadores Naïve Bayes, Random Forest
– …
Análisis de datos: Apache Spark
• Procesamiento en memoria (vs.
MapReduce)
• Muy rápido
• Java, Scala, Python
Análisis de datos: RHadoop
• R: Software estadístico muy extendido
• RHadoop:
– ravro: lee/escribe ficheros en formato Avro
– rmr: funcionalidad MapReduce en R
– rhdfs: funciones de gestión de ficheros en
HDFS
– rhbase: gestión de base de datos HBase
desde R.
Otros…
Orquestador: ozzie
• Programa flujos de trabajo para gestionar
trabajos Hadoop
• Orquesta trabajos MapReduce, generados
en Java, Pig, Hive, Sqoop,…
El cuidador: Zookeeper
• Servicio de mantenimiento de:
– Información de configuración
– Información de nombres (nodos)
– Sincronización de la distribución
Conclusiones
Ecosistema Hadoop (simplificado)
Apache
Pig:
Scripting
Almacenamient
o redundante y
fiable
YARNGestiona
recursos del
Cluster
Procesamiento
Distribuido de
datosZookee
per:
Coordin
a la
distribuc
ión
Data
Warehous
e
Machine
LearningColector
de datos
Conector
BBDDR-
HDFS
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
S.
O.
Objetivos: ¿Qué valor añadido quiero
obtener?
• Alinea la necesidad de Big Data con los
objetivos de negocio
• Implementar Big Data es decisión de
negocio, no de TI
• Evalúa los requisitos de los datos (V’s!)
Selecciona la infraestructura
• En casa?
– Hardware (mínimo): 2*6core CPU, 24-64GB RAM, 1-2TB HDD
– Distribuciones Hadoop: Cloudera, MapR, Hortonworks
• En la nube?
– IaaS (Amazon Elastic Compute Cloud, Azure,…)
– PaaS (Amazon Elastic MapReduce, AzureHDInsight,…)
– SaaS (Teradata, sqlstream,…)
Fórmate
• Diferentes perfiles:– Sistemas:
• Administración del cluster, servidores y nodos
– Desarrollo• NoSQL
• Procesamientos (Map/Reduce, Storm, Spark, Pig,…)
• Visual Analytics (d3.js, CartoDB, Gephi, Tableu,…)
– Machine Learning / Data Mining• Conocimiento de Algoritmos y procesos
• Herramientas/Lenguajes (R, SAS, …)
Une las piezas
• ¿Qué preguntas debo responder?
• ¿Cómo recojo los datos?
• ¿Cómo los almaceno?
• ¿Cómo los analizo?
• ¿Cómo muestro los resultados?
Realiza implementaciones ágiles e
iterativas
Empieza con objetivos simples e
integra los resultados
• Según se van obteniendo pequeños
resultados, aparecen nuevas preguntas a
responder.
• Integrar resultados con el Sistema de
Producción/Sistema de Gestión actual
Conclusiones
• Objetivos, estrategia, ROI
• Datos: ¿Estamos preparados?
• Infraestructura Local o en la Nube?
• Big Data está relacionado con:
Análisis de Datos = Data Science
• Analizas tus datos en “Small Data” ahora?
Conclusiones
Las bases de datos tradicionales
y data warehouses siguen
siendo necesarias!
Conclusiones
Hadoop no es bueno en
analítica en tiempo real!!
Conclusiones
Una estrategia única basada en
Hadoop no tiene sentido
Conclusiones
Hadoop es complicado…
Conclusiones
No necesitas el ecosistema
completo
Eskerrik asko
www.mondragon.edu
Urko Zurutuza
Mondragon Unibertsitatea
uzurutuza@mondragon.edu
https://es.linkedin.com/in/uzurutuz
a/
@urkovain
Montando la infraestructura
• VMWare
• Ubuntu Server 14.04:
http://www.ubuntu.com/download/server
Montando la infraestructura
• Atención: Evitar “Easy Install” de VMWare.
Montando la infraestructura
• VMWare, características:
– RAM: 8GB
– 2 Procesadores
– Red en modo “Bridge”
– CD/DVD: usar la imagen .iso de Ubuntu
Montando la infraestructura
• Ubuntu, características:
– Nombres de las máquinas (hostname):
• taldeanodo1, taldeanodo2,…
• taldebnodo1, taldebnodo2,...
• Taldecnodo1, taldecnodo2,...
– Usuario: user
– Password: eskola2016
Montando la infraestructura
• Ubuntu, características:
– Instalar Open SSH (al final)
– Putty
• A por ello!!