Monta una Infraestructura Big Data para tu Empresa - Sesión I

Preview:

Citation preview

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

– Twitter

– 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!!

Recommended