Loading presentation...

Present Remotely

Send the link below via email or IM

Copy

Present to your audience

Start remote presentation

  • Invited audience members will follow you as you navigate and present
  • People invited to a presentation do not need a Prezi account
  • This link expires 10 minutes after you close the presentation
  • A maximum of 30 users can follow your presentation
  • Learn more about this feature in our knowledge base article

Do you really want to delete this prezi?

Neither you, nor the coeditors you shared it with will be able to recover it again.

DeleteCancel

Make your likes visible on Facebook?

Connect your Facebook account to Prezi and let your likes appear on your timeline.
You can change this under Settings & Account at any time.

No, thanks

Hadoop: La plataforma para las bases de datos Big Data

Hadoop
by

Francho Gonzalez

on 1 May 2015

Comments (0)

Please log in to add your comment.

Report abuse

Transcript of Hadoop: La plataforma para las bases de datos Big Data

Hadoop
Cassandra
Hive
HBase
Pig
Avro
Oozie
Mahout
Zookeeper
HADOOP: la plataforma para las bases de datos Big Data
Es modelo de procesos de datos distribuidos y entorno de ejecucion que corre en grandes clusters
Es un modelo de programacion
linelamente escalable
funciones Map
función Reduce
job tracker
tasktrackers 1 ...n
función Map
funciones Reduce
funciones Map
MapReduce
Se creo a partir de la arquitectura del Google File System (GFS) y del motor de busqueda Nutch (MapReduce de Google)
Es un modelo de programación para el procesamiento de datos en grandes clusters

Utiliza al maximo el procesamiento de datos distribuido y en paralelo.
MapReduce
linealmente escalable
RDBMS
HADOOP
Gigabytes
Petabytes
Interactivo y Batch
Batch
Lectura y escritura frecuentes
Una escritura, muchas lecturas
Esquema estático
Esquema dinámico
Alta integridad de datos
Baja integridad de datos
No linealmente escalable
Linealmente escalable
n procesos Maps, n procesos Reduce
Pares (Clave, Valor)
n procesos Maps
El Filesystem de Hadoop es distribuido y esta ideado para trabajar con grandes ficheros.
HDFS fue diseñado para guardar millones de grandes ficheros pero no para guardar billones de pequeños ficheros.
Hasta 100 TB de tamaño para un solo fichero.
Soporta replicación de ficheros, se configura mediante una "property"
Hadoop File System (HDFS)
Como realiza las
lecturas HDFS
Como escribe HDFS
Distancia entre nodos: dx, rx, nx ....... dy, ry, ny
El bloque por defecto es de 64 MB
% hadoop fs -mkdir libros
% hadoop fs -copyFromLocal /home/libros/docs/untexto.txt
hdfs://localhost/libros/untexto.txt
% hadoop fs -ls .
Comandos basicos de HDFS
Flujo de datos en MapReduce
BBDD Cassandra
Codigo Abierto
Distribuida
Descentralizada
Linealmente Escalable
Tolerante a fallos
Alta disponibilidad.
Orientada a columnas
Utiliza hadoop como soporte y es:
¿Que replica lee HDFS?
¿Donde escribe las replicas HDFS?
¿QUE ES PIG?
Pig es un framework para el procesamiento de ficheros en paralelo
Es codigo abierto
Utiliza MapReduce y HDFS
El lenguaje asociado se llama Pig Latin, cuyas sentencias pueden realizar ordenamiento, filtros, joins
En la actualidad Hadoop es utilizado por ...
Clusters de hasta 100 nodos
Millones de sesiones diarias
Hadoop, HDFS y HBase
Cluster de 80 nodos
Clusters de 532 nodos
Java MapReduce, Pig, Hive, HBase
Hadoop, Hive
Un Cluster de 2000 nodos
Cluster de 100 nodos
Java MapReduce
Clusters con 4200 nodos
Hadoop, Pig, Hive, Avro
Java MapReduce, Pig, Hive, HBase y Cassandra
Hadoop, Pig
40.000 nodos en Hadoop
Cluster de 4500 nodos
RENDIMIENTO
HARDWARE
Como funciona MapReduce


mapred.compress.map.output=false Si la salida se comprime
mapred.map.output.compresion.codec Nombre del codec si hay compresion
COMPRESION
Instalación Hadoop
Instalar Java (JDK)
Configurar SSH
Instalar Hadoop (Hadoop 2.2.0)
hadoop-env.sh (JAVA_HOME=/usr/lib/jvm/java-6-openjdk)
core-site.xml
hdfs-site.xml
mapred-site.xml
masters
slaves
Como arrancar Hadoop
start-dfs.sh / stop-dfs.sh
start-mapred.sh / stop-mapred.sh
start-all.sh / stop-all.sh
hadoop/conf
hadoop/bin
modos de ejecucion
Modo local
Modo pseudo-distribuido
Modo distribuido (cluster)
Componente Propiedad Local Pseudo-distribuido Distribuido
Common fs.default.name file:/// (default) hdfs://localhost/ hdfs://Saturno/

HDFS dfs.replication N/A 1 3 (default)

MapReduce mapred.job.tracker local (default) localhost:8021 Jupiter:8021
Tabla de configuración para diferentes modos
1 jobtracker
n tasktracker
1 namenode,
n namenodes secundarios
n datanodes
-- Cargar el fichero quijote.txt y cargar cada linea en entrada
entrada
= LOAD 'quijote.txt' AS (linea);

-- TOKENIZE trozea la linea en palabras
palabras
= FOREACH
entrada
GENERATE FLATTEN (TOKENIZE(linea)) as palabra;

-- Agrupamos por palabras
grupoPalabras
= GROUP
palabras
BY palabra;

-- Contamos las palabras.
contador
= FOREACH
grupoPalabras
GENERATE group, COUNT(palabras);

-- Imprimimos los resultados.
DUMP contador;
Cuenta Palabras en PIG
Disponibilidad
Consistencia
Tolerancia a fallos
Relacionales: MySql, SQL Server, Postgres
Cassandra
, Voldemort, CouchDB, Riak
Neoj4J, Google Bigtable, MongoDB,
HBase,
Hypertable
Dentro de un sistema de datos distribuidos a gran escala es imposible satisfacer simultaneamente los siguientes requerimientos:
Hadoop y el teorema CAP
Teorema CAP
(Eric Brewer)
modelo de datos
SalasDeReuniones Super Familia de Columnas
SCkey: Salas Primera Planta Super Columna

key: Sala Australia Clave Fila
tlfno: 917440304 Columna:Valor
desc: Sala pequeña Columna:Valor

key: Sala Alemania Clave Fila
tlfno: 917442403, Columna:Valor
desc: sala con telefono cisco IP Phone 7911 Columna:Valor
SCkey: Salas Segunda Planta Super Columna

key: Brasil Clave Fila
desc: Sala espaciosa y muy luminosa Columna:Valor

key: Belgica Clave Fila
orientado a columnas
Un ejemplo ...
21 PB de almacenamiento en cluster (100 PB en Julio de 2012)
2000 equipos
12 TB por equipo (unos pocos tiene 24 TB)
1200 equipos con 8 procesadores + 800 equipos con 16 procesadores
32 GB por RAM por equipo
15 tareas map-reduce por equipo
12 TB de datos comprimidos añadidos por dia
800 TB de datos comprimidos tratados por dia
25,000 trabajos map-reduce por dia
65 millones de ficheros en HDFS
30,000 accesos simultaneos al HDFS

Hadoop: The Definitive Guide -Tom White- (O'Reilly)
Hadoop in Action -Chuck Lam- (Manning)
Programming Pig, Dataflow Scripting with Hadoop -Alan Gates- (O'Reilly)
Cassandra. The Definitive Guide -Eben Hewitt- (O'Reilly)
HBase. The Definitive Guide -Lars George- (O'Reilly)
Programming in Hive (O'Reilly)
Hadoop Operations (O'Reilly)
Base de Datos Relacionales - HADOOP
BBDD HBASE
Es una versión en codigo abierto del Bigtable de Google:
Orientada a columnas
Distribuida
Escalable
Estrictamente Consistente
Tolerante a fallos
HBASE esta organizado como:
Tabla
Clave (Fila)
Familia de Columnas
Columna
Fecha
Valor
(tabla, clave, familia, columna, fecha)
valor
HBASE a nivel superior esta organizado en Regiones
Hive
Hive es una infraestrutura de data warehouse basado en Hadoop

Desarrollada por Facebook en 2008.

Contiene un lenguaje tipo SQL llamado Hive QL
1 namenode,
1 namenodes secundario
n datanodes
1ª Replica: En el mismo del cliente
2ª Replica: En un nodo otro rack
3ª Replica: En otro nodo del mismo rack
n Replica: Random de cualquier nodo
fs.default.name=localhost Equipo donde se ejecuta el
NameNode, el filesystem por defecto
dfs.block.size=128 MB

Tamaño del bloque en MB
dfs.replication=3 Numero de replicación de cada fichero
dfs.name.dir
dfs.data.dir

mapred.reduce.tasks=1 Numero de tareas Reduce que intervienen por cada MapReduce
mapred.job.tracker=localhost Equipo donde se va a ejecutar el JobTracker
mapred.tasktracker.map.tasks.maximum=2 Maximo numero de tareas map en un tasktracker por job
mapred.tasktracker.reduce.tasks.maximum=2 Maximo numero de tareas reduce en un tasktracker por job
mapred.job.reuse.jvm.num.tasks=1
HDFS

io.sort.mb=100 Memoria del buffer de ordenacion del map.
io.sort.record.percent=0.05
io.sort.spill.percent=0.80
io.sort.factor=10
ORDENACION
MAP REDUCE
Tamaño de datos
Modo de Acceso
Modificaciones
Estructura
Integridad
Escalabilidad
Tabla
Fila
Columna
Columna particionada
Bucket
/user/hive/data warehouse/ventas/fecha=20120201/tienda=Madrid/
part-00000
/user/hive/data warehouse/ventas/fecha=20120201/tienda=Madrid/
part-00001
...
/user/hive/data warehouse/ventas/fecha=20120201/tienda=Barcelona/part-00000
...
/user/hive/data warehouse/ventas/fecha=
20120201
/tienda=Valencia/part-00000
...
/user/hive/data warehouse/ventas/fecha=
20120212
/tienda=Madrid/part-00000
...
/user/hive/data warehouse/ventas/fecha=20120213/tienda=Barcelona/part-00000
....
/user/hive/data warehouse/ventas/fecha=20120216/tienda=Valencia/part-00000
...
CREATE TABLE ventas (tienda STRING, seccion STRING, vendedor STRING,
articulo STRING, precio INT, fecha DATE, )
PARTITIONED BY (fecha DATE, tienda STRING)
CLUSTERED BY (vendedor) INTO 20 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
LINES TERMINATED BY '\n'
STORED AS SEQUENCEFILE;
vendedor
Modelo de Datos
Bibliografia
CONSISTENCIA(Consistency)
: leer el mismo valor para una query
DISPONIBILIDAD (Availability)
:ser capaz de leer y escribir datos
TOLERANCIA A FALLOS (Partition tolerance)
: seguir funcionando con fallos en la red
Un sistema de serialización de datos
Es un servicio para la coordinación de grandes aplicaciones distribuidas
Libreria Java para el procesados de datos
Es un servidor para la coordinación de aplicaciones Hadoop
HADOOP= MAPREDUCE + HDFS
MapReduce se encarga de procesar los datos

HDFS se encarga de gestionar el almacenamiento de datos
SELECT vendedores.nombre, ventas.facturacion
FROM vendedores vd JOIN ventas vt ON (vd.idusr = vt.idusr)
WHERE vt.date = '2012-01-03';
Hadoop es un framework para el procesamiento en paralelo de grandes volumenes de datos utilizando un almacenamiento distribuido.
n procesos Maps, n procesos Reduce
Pares (Clave, Valor)
Utiliza la mayoria de los comandos para trabajar con el filesystem de unix (linux)
Desde el 2005 ha habido un crecimiento exponencial del volumen de datos digitales: Redes Sociales, Moviles, Fotografia, Video, Busquedas, Sensores, Comercio Electronico, etc ...
Hadoop aparece ante la demanda generada por esta explosión de datos (Big Data)
Amazon EMR
(Amazon Elastic MapReduce
Este servicio fue introducido por Amazon en 2009.
Amazon provee un servicio total de Hadoop en la nube, utiliza los servicios amazon de procesamiento: Amazon Elastic Compute Cloud (EC2) y de almacenamiento: Amazon Simple Storage Service (S3)
Flume
Es un servicio para unir, agrupar, y mover
grandes ficheros a HDFS.
Impala
Es un servicio de base de datos HBASE, utiliza SQL para el acceso.
Map
Map
Map
Grandes: >9
Medianas: 5..9
Pequeñas: 2..4
Una Letra: 1
Reduce
Reduce
(Grandes, 15)
(Medianas,20)
(Pequeñas, 14)
(UnaLetra, 5)
(Grandes, 16)
(Medianas,21)
(Pequeñas, 10)
(UnaLetra, 7)
(Grandes, 9)
(Medianas, 19)
(Pequeñas, 15)
(UnaLetra, 12)
(Medianas,60)
(UnaLetra, 24)
(Grandes, 40)
(Pequeñas, 39)
Sqoop
Es un servicio para la transferencia de datos entre BBDD relacionales y Hadoop
Hue
Es un interfaz web para interactuar con elementos del ecosistema hadoop: pig, hive, hbase, hdfs, sqoop, impala, ...
Full transcript