Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes...

18
Meetup: Bluemix y Spark Luis Reina IBM Analytics

Transcript of Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes...

Page 1: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

Meetup: Bluemix y Spark

Luis ReinaIBM Analytics

Page 2: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

2

Hadoop es un Software para analizar Big Data

�Un framework de desarrollo y un entorno de ejecuciónpara realizar aplicaciones capaces de procesar gran volumen de datos (Big Data).

�Además proporciona un Sistema de ficheros para almacenar los datos.

�Las aplicaciones generadas son de tipo batch y de lectura intensiva.

� Basado en tecnología de Google.

� Es Open Source: Apache Hadoophttp://hadoop.apache.org/

Page 3: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

3

Hadoop NO es un Sistema Gestor de Base de Datos

�Es un framework de desarrollo y ejecución no un SGBD. No pretende sustituir los Data Warehouse actuales.

�Las aplicaciones funcionan en Cluster de muchas máquinas trabajando en paralelo.

�Se pueden añadir máquinas sin cambiar las aplicaciones, ni como se cargan los datos, ni los formatos de datos.

�Si se “rompe” una máquina otra realiza su trabajo.

Page 4: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

4

Publishes

MapReduce,

GFS Paper

Apache OpenSource

MapReduce & HDFS

projects created

Runs 4,000

node Hadoop

Cluster

Wins Terabyte

sort benchmark

Launches SQL

Support for

Hadoop

BigInsights

early researchopen source dev

momentuminitial success stories

Commercial-ization

Origen y Evolucion de Hadoop

Page 5: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

5

Hadoop tiene 2 componentes clave

• Sistema de Ficheros: HDFS

–Donde Hadoop almacena los datos.

–Usa discos locales pero trababa como un gran sistema

de ficheros entre multiples nodos.

• Map/Reduce

–Algoritmo para procesar los datos en el cluster.

–Son 2 pasos MAP y REDUCE.

–Divide y Vencerás

Page 6: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

6

HDFS es un Sistema de Ficheros para el Cluster

�HDFS= HADOOP Distributed FILESYSTEM

�HDFS es un sistema de ficheros para almacenar los datos que se van a analizar.

�Es un único sistema de ficheros distribuido.

�Los datos se reparten por todo el cluster.

�Cada nodo del cluster tiene un “cachito” de los datos .

�Esto “cachitos” se llamas bloques y son de 64MB por defecto.

Page 7: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

7

HDFS

�HDFS asume que un nodo puede fallar replicando los datos en multiples nodos.

�Por defecto 3 copias

�No hay una SAN o NAS los nodos tienen discos localessolamente.

�Los nodos pueden hablar entre si para rebalancear y mover los de datos si fuese necesario.

�Existe un Nodo (NodeName) que guarda la información de quien tiene que (metadatos), i.e. en que nodo estan que datos.

�Las aplicaciones no se tienen que preocupar de la ubicación de los datos.

Page 8: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

8

¿Qué es Map/Reduce?

� Algoritmo para analizar los datos.�Partimos de que se han distribuido los datos por el

cluster (HDFS).�El programa que analiza estos datos hace uso del

algoritmo Map/Reduce. Estos programas se llaman Jobsque se dividen en Tareas (Tasks) de tipo Map y Reduce

�Paso 1: Tarea Map

�Función que Convierte los datos en Tuplas: (clave, valor)

�Paso 2: Tarea Reduce

�Reduce el número de Tuplas generadas por Map (e.g. agregando)

Page 9: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

9

Ejemplo de MapReduce

Hola Mundo Adios Mundo

Hola Meetup

Reduce (salidafinal):

< Adios, 1>

< Meetup, 1>

< Hola, 2>

< Mundo, 2>

Map 1 emite:< Hola, 1>

< Mundo, 1>

< Adios, 1>

< Mundo, 1>

� Contar el número de apariciones de cada palabra

Map 2 emite:< Hola, 1>

< Meetup, 1>

Datos

Entrada

Proceso

Map

Proceso

Reduce

Todos los procesos deMaps son equivalentesy se hacen en paralelo

También en paralelo

Page 10: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

10

Como se ejecuta una aplicación Hadoop

Aplicación MapReduce

1. Fase de Map

2. Shuffle

3. Fase de Reduce

Devuelve un único conjunto

de ResultadosResultado

Shuffle

public static class TokenizerMapper

extends Mapper<Object,Text,Text,IntWritable> {

private final static IntWritable

one = new IntWritable(1);

private Text word = new Text();

public void map(Object key, Text val, Context

StringTokenizer itr =

new StringTokenizer(val.toString());

while (itr.hasMoreTokens()) {

word.set(itr.nextToken());

context.write(word, one);

}

}

}

public static class IntSumReducer

extends Reducer<Text,IntWritable,Text,IntWrita

private IntWritable result = new IntWritable();

public void reduce(Text key,

Iterable<IntWritable> val, Context context){

int sum = 0;

for (IntWritable v : val) {

sum += v.get();

. . .

Lanzar las tareas

MAP al cluster

Nodos de Datos de Hadoop

Page 11: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

11

Cluster de Hadoop: Tipos de nodos

Vamos a encontrar 2 tipos de Nodos (máquinas)

en un cluster de Hadoop:

1) Nodo Maestro: NameNode

• Contiene los Metadatos.

• Es muy importante.

• Se puede montar en Alta Disponibilidad (HA).

2) Nodo de Datos: Nodo esclavo

• Contiene los datos.

• Ejecuta Maps y Reduce en local.

• Datos Redundados en otros nodos (Fault Tolerance).

Page 12: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

12

Nodo Maestro

(NameNode)

Nodo de

Datos 1

Nodo de

Datos 2

Nodo de

Datos n

NameNode Secundario

LAN (tcp/ip)

Cluster de Hadoop: Tipos de nodos

Page 13: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

13

¿Cómo desarrollar Aplicaciones Hadoop? (Jobs Map/Reduce)

• Desarrollos Map/reduce en JAVA

� Muy Complejo

• PIG

� Lenguaje Open/Source de más alto nivel

� Estándar

• HIVE

� Lenguaje Open/Source

� Similar al SQL

• JAQL

� Lenguaje similar a PIG, mayor funcionalidad

• Herramientas tipo BigSheets

�Navegador/Hoja de Cálculo

�No requiere desarrolloFácil

PIG

Difícil

Page 14: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

14

Entorno a la idea de Hadoop existe un rico Ecosistema

• El Ecosistema enriquece Hadoop.

• Incluye herramientas como:– Flume: Para cargar datos en Hadoop

(HDFS).

– HBase: Base de datos sobre HDFS.

– Oozie: Control de Flujos (workflow).

– Lucene: Indexador y motor de búsqueda

en HDFS.

– Jaql, Pig, Hive: Lenguajes de alto nivel

que generan Map/Reduce jobs.

– Text Analytics: Análisis de Texto usando

Map/Reduce.

– Zookeeper: Coordinador.

– ……………………………………………………

PIG

ZooKeeper

Page 15: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

15

HDFS

MapReduce v1

Evolución de Hadoop: YARNYARN=YET ANOTHER RESOURCE NEGOTIATOR

HDFS

MapReduce v2

Hadoop 2.0

Gestión de Recursos del Clustery

Procesamiento de los Datos

Hadoop 1.0

YARN

Procesamiento de los Datos

Gestion de Recursos del

Cluster

Page 16: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

16

Map/Reduce vs Spark

Task1

HDFS

read write

HDFS

Task2read write

HDFS

Task1

HDFS

read write

Task2read write

• Map/Reduce:

• Spark:

Memory Memory

Page 17: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

17

Map/Reduce vs Spark

• Spark es mucho más rápido:

• En las subsiguientes iteraciones que ya tiene el dato en memoria.

• Pruebas donde mejora 40 veces a Hadoop.

• Spark es más funcional:

• Tiene más operadores:

• Map, Reduce, GroupBy, Sort, Join, Union, Count, filter etc..

Page 18: Meetup: Bluemix y Sparkfiles.meetup.com/18480826/Introduccion a Hadoop.pdf · 4 Publishes MapReduce, GFS Paper Apache OpenSource MapReduce & HDFS projects created Runs 4,000 node

18

Spark on Hadoop

Apache Spark

Spark SQLSpark

StreamingGraphX MLlib SparkR

Apache Hadoop-HDFS

Apache Hadoop-YARNResource

management

Storage management

Compute layer

Slave node 1 Slave node 2 Slave node n…