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

Post on 29-Sep-2018

226 views 0 download

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

Meetup: Bluemix y Spark

Luis ReinaIBM Analytics

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/

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.

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

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

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.

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.

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)

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

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

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).

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

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

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

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

16

Map/Reduce vs Spark

Task1

HDFS

read write

HDFS

Task2read write

HDFS

Task1

HDFS

read write

Task2read write

• Map/Reduce:

• Spark:

Memory Memory

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..

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…