Upload
nguyendat
View
220
Download
0
Embed Size (px)
Citation preview
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…