Está en la página 1de 36

Hadoop programming

Javier Alexander Hurtado


javhur@unicauca.edu.co
Tecnologías Big Data

MODELOS DE PROGRAMACIÓN
MAPREDUCE
El Contexto: Big-Data
• Minería de datos. Enormes cantidades de datos recogidos en una amplia gama
de dominios: astronomía, atención sanitaria, clima, etc.
• Esencial para la planificación y el rendimiento.
• Estamos en una economía del conocimiento.
– Los datos son un activo importante para cualquier organización.
– Descubrimiento del conocimiento, habilitar el descubrimiento, anotación de
los datos
– Modelos computacionales complejos.
– Un ambiente simple no es suficientemente bueno: necesita capacidades de
elasticidad y bajo demanda.
• Estamos buscando nuevos…
– Modelos de Programación, y
– Soporte de algoritmos y estructuras de datos.

Wipro Chennai 2011


Google File System
• Internet presenta un nuevo reto en la forma de
datos web, gran escala → “peta-bytes”
• Este tipo de datos tiene una característica diferente
a su forma transaccional, los datos a “la orden del
cliente”: “write once read many (WORM)”
• Información privada y protegida de salud;
• Datos financieros históricos;
• Otros datos históricos
• Google explotó esta característica en su Google File
System (GFS)
¿Qué es Hadoop?
• Una operación Google MapReduce se ejecuta en
un sistema de archivos especial (Google File System
– GFS) altamente optimizado para este propósito.
• GFS no es open source.
• Doug Cutting y otros en Yahoo! Realizaron un
proceso de ingeniería inversa al GFS, lo llamaron
Sistema de Archivos Distribuido Hadoop (HDFS).
• El software que soporta HDFS, MapReduce y otras
entidades relacionadas hacen parte del Proyecto
Hadoop.
• Open source y distribuido por Apache.
Tolerancia a Fallas
• Failure is the norm rather than exception
• Una instancia HDFS puede consistir de miles de
máquinas servidores, cada una almacenando una
parte de los datos del sistema de archivos.
• Se tiene un gran número de componentes con
probabilidad de falla, lo que significa que siempre hay
n componente que no es funcional.
• La detección de fallas y la recuperación automática y
rápida de ellas es una meta de la arquitectura de
HDFS.
HDFS Architecture
Metadata(Name, replicas..)
Metadata ops Namenode (/home/foo/data,6. ..

Client
Block ops
Read Datanodes Datanodes

replication
B
Blocks

Rack1 Write Rack2


Job Tracker
Client Task Tracker Task Tracker

Task Tracker
Wipro Chennai 2011
Hadoop Distributed File System
HDFS Server Master node

HDFS Client
Application

Local file
system
Block size: 2K
Name Nodes
Block size: 128M
Replicated

Wipro Chennai 2011


¿Qué es MapReduce?
• MapReduce modelo de programación que Google ha usado
exitosamente para procesar sus “big-data” (~20000 peta bytes por
día)
– Una función de mapa/mapeo extrae algo inteligente de datos en
bruto.
– Una función de reducción adiciona, de acuerdo a algunas guías, los
datos de salida del mapa.
– Los Usuarios especifican el cálculo en términos de una función de
mapa y reducción,
– Un sistema de ejecución divide (paraleliza) los cálculos a través de
cluster de máquinas de gran escala, y
– El sistema también se ocupa de los fallos de las máquina, las
comunicaciones eficaces y los problemas de rendimiento.
Reference: Dean, J. and Ghemawat, S. 2008. MapReduce: simplified data processing
on large clusters. Communication of ACM 51, 1 (Jan. 2008), 107-113.

Wipro Chennai 2011


Clases de problemas “MapReducable”

• Benchmark para comparaciones: Jim Gray’s challenge


Computación de datos intensivos. Ej: “Sort”
• Google lo usa para conteo de palabras, adwords, ranqueo de
páginas, indexación de datos.
• Algoritmo simple tal como grep, text-indexing, reverse indexing
• Clasificación Bayesiana: dominio del data mining
• Facebook lo usa para varias operaciones demográficas
• Servicios financieros lo usan para análisis
• Astronomía: Análisis Gausiano para localiazación de objetos
extra-terrestres.
• Se espera que tenga un rol crítico en la web semantica y en la
web 3.0

Wipro Chennai 2011


Large scale data splits Map <key, 1>
<key, value>pair Reducers (say, Count)

Parse-hash

Count
P-0000
, count1

Parse-hash

Count
P-0001
, count2
Parse-hash

Count
P-0002
Parse-hash ,count3

Wipro Chennai 2011


Motor MapReduce
• MapReduce requiere un Sistema de archivos distribuido y
un motorque pueda distribuir, coordinar, monitorear y
obtener los resultados.
• Hadoop brinda ese motos a través de su HDFS y el
sistema JobTracker + TaskTracker.
• JobTracker es un simple scheduler.
• TaskTracker es el trabajador, se le asigna una operación
de Mapeo o Reducción (u otras operaciones)
• Mapeo o Reducción corren en un nodo al igual que el
TaskTracker; cada tarea corre en su propia JVM en un
nodo.

Wipro Chennai 2011


HDFS access options, applications
• Able to access/use HDFS via command line
• Know about available application
programming interfaces
– Java
– Python (general)
– R language (statistics)
– Perl
HDFS Commands
• Invoked via bin/hdfs (bin/Hadoop) script. Running
the hdfs script without any arguments prints the
description for all commands.

hdfs [SHELL_OPTIONS] COMMAND [GENERIC_OPTIONS]


[COMMAND_OPTIONS]

• Where:
– SHELL_OPTIONS: --config –loglevel
(config. Dir. / FATAL, ERROR, WARN, INFO, DEBUG,
TRACE)
HDFS Commands
– USER COMMAND:
(classpath, dfs, fetchdt, fsck, getconf, groups,
lnSnapshottableDir, jmxget, oev, oiv, oiv_legacy,
snapchotDiff, version)
– ADMINISTRATION COMMAND:
(balancer, cacheadmin, crypto, datanode,
dfsadmin, haadmin, journalnode, mover, namenode,
nfs3, portmap, secondarynamenode,
storagepolicies, zkfc)
– DEBUG COMMAND:
(verify, recoverLease)

http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-
hdfs/HDFSCommands.html
Application programming interfaces
• Native Java API : Base class
org.apache.hadoop.fs.FileSystem

• C API for HDFS: libhdfs, header file (hdfs.h)

• WebHDFS REST API: HTTP Get, Put, Post, and


Delete operations
HDFS NFS Gateway
• Mount HDFS as a filesystem on the client

• Browse files using regular filesystem


commands

• Upload/download files from HDFS

• Stream data to HDFS

https://hadoop.apache.org/docs/r2.7.2/hadoop-project-dist/hadoop-
hdfs/HdfsNfsGateway.html
Other options?
• Apache Flume: collecting, aggregating
streaming data and moving into HDFS

• Apache Sqoop: Bulk transfers between


Hadoop and datastores.
Applications using HDFS
• Can use APIs to interact with HDFS
• Core component of Hadoop stack – used by all
applications
• HBase is a good example of an application that
runs on top of HDFS with good integration
• Spark can run directly on HDFS without other
Hadoop components
HDFS Commands
• Use HDFS commands to move data in/out of
HDFS
• Get detailed information on files in HDFS
• Use administrator commands to get info on
state of HDFS
HDFS User Commands
• List files in /: hdfs dfs –ls /
HDFS User Commands
• Make a directory: hdfs dfs –mkdir /user/test
Create a local test file
• Now lets create a local file and copy it into
HDFS.
• We create a file with random data using the
linux utility dd.
• Command:
dd if=/dev/urandom of=sample.txt bs=64M
count=16
• Creates 1GB file called sample.txt on the local
filesystem.
HDFS user commands
hdfs dfs –put sample.txt /user/test
HDFS fsck
• Command:
hdfs fsck /user/test/sample.txt
HDFS user commands
HDFS Administrator commands
• Summary report: hdfs dfsadmin -report
The framework
• User defines:
a. <key, value>
b. mapper & reducer functions
• Hadoop handles “the logistics”
The logistics
• Hadoop handles the distribution and
execution process
Map/Reduce flow
• User defines a map function: read data and
output <key, value>

map() <key, value>

Data Function Output


Map/Reduce flow
• Reduce() function: reads <key, value> and
output your result

<key, value> reduce() Result

Input Function Output


Map/Reduce flow
• How to works? Hadoop distributes map() to data

D1 map()
D2 map()
D3 map()
… …
Dn map()
Map/Reduce flow
• How to works? Hadoop groups <key, value> data

D1 map()
D2 map()
D3 map()
… …
Dn map()
Map/Reduce flow
• How to works? Hadoop groups <key, value> data

D1 map() reduce() O1

D2 map()
D3 map() reduce() O2

… …
Dn map() reduce() Om
Practice
• Example: Word Counter
MapReduce Tutorial: WordCount v1.0
https://goo.gl/KxhJWy (java)
http://goo.gl/FhX1rf (python)

Look out:

Evironment var: $HADOOP_CLASSPATH


Optional: $HADOOP_HOME → $PATH
¿Preguntas?

¡Gracias por su atención!


javhur@unicauca.edu.co

También podría gustarte