Está en la página 1de 105

We make

it happen

Hadoop
ALMACENAMIENTO Y PROCESAMIENTO

eae.es
Para modificar título del PPT, cambiar pie de página

Índice

01. Introducción
02. Instalación y configuración hadoop
03. HDFS
04. MAP-REDUCE
05. Yarn
06. Ecosistema Hadoop
2
1. Introducción

Problemas BIG DATA

• Fallos de Hardware
• Replicación  HDFS

• Combinar datos de múltiples discos


• MapReduce
1. Introducción

EL ORIGEN DEL NOMBRE "HADOOP"

“El nombre que mi hijo le dio a un


elefante amarillo de peluche”.
• Los proyectos en el ecosistema de Hadoop también tienden a
tener nombres que no tienen relación con su función
• Los componentes más pequeños si son más descriptivos
1. Introducción
1. Introducción

¿QUÉ ES HADOOP?
• Apache Hadoop es una infraestructura de software
bajo licencia libre
• Almacenamiento de datos en clúster HDFS
• Procesamiento paralelo de tipo maestro-esclavo
MapReduce.
• Hadoop permite
• Procesar y analizar un enorme bloque de información
en paralelo al mismo tiempo.
• Tolerancia a fallos.
1. Introducción

CARACTERÍSTICAS
• Tolerante a fallos:
• Replicacion de datos, minimiza los fallos

• Robusto:
• Nodos y procesos maestros que se encargan de gestionar las
cargas de trabajo

• Escalable:
• Su diseño permite pasar de pocos nodos a miles de nodos de
forma ágil y sin perder calidad.
1. Introducción

CARACTERÍSTICAS
• Disponible:
• Redundancia para asegurar una alta disponibilidad
• Distribuido y de alto rendimiento:
• La capacidad de cálculo y almacenamiento conjunta de todos sus
nodos puede llegar a ser muy alta.
• Simple
• Permite escribir rápidamente código, que funcione eficientemente de
forma distribuida
• Distribución de código:
• Hadoop mueve el código hacia los datos y no al revés
1. Introducción

NOVEDADES que introdujo HADOOP


• El volumen de los datos que almacena/procesa
• La variedad de los datos que almacena/procesa
• Commodity Hardware
• Data Locality
• Escalado horizontal
• Open Source
1. Introducción

Componentes Hadoop

ALMACENAMIENTO PROCESAMIENTO
2. Instalación
INSTALACIÓN DE HADOOP
Instalación de Hadoop

• Desde la web de apache, en su proyecto hadoop http://hadoop.apache.org/releases.html


podemos descargar la última versión
• Como únicos requisitos, tener la JDK de java instalada estableciendo el JAVA_HOME en las
variables de entorno y configurar SSH para la comunicación entre nodos
Instalación de Hadoop

• Una vez descomprimido el paquete encontramos los


siguientes directorios entre los que cabe destacar
• sbin, con scripts de ejecución
• bin con aplicaciones para ejecutar
• etc/hadoop, ficheros de configuración
Configuración básica de Hadoop

• Dentro del directorio etc/hadoop encontramos los siguientes ficheros de


configuración

• Para configurar un cluster pseudodistribuido (maestro y esclavo en la


misma máquina) como mínimo es necesario configurar
• core-site.xml
• hdfs-site.xml
3. Hadoop Distributed
Filesystem
HDFS
3. HDFS
3.1 Sistemas distribuidos (DFS)
Cuando un conjunto de datos supera
la capacidad de almacenamiento de
una sola máquina física, es necesario
dividirla en varias máquinas
separadas.
3. HDFS
3. HDFS

Los sistemas distribuidos deben ser muy confiables.

Ventajas:
• Aumenta la confiabilidad al sistema.
• Crecimiento de la empresa es soportable.
• Tomas de decisiones locales.
• No está centralizada los datos de la empresa. Si la lógica de negocio
en tener datos locales en las tomas de decisiones es factible, si no,
irse a un sistema centralizado.
• Uso de ancho de banda local. Permite tener interfaz muy amigable
o vistosa. Solo se consume el ancho de la banda de una red local.
• Velocidad de respuesta rápida, si los datos están en la red local.
3. HDFS

Desventajas:
• Soporte local de la tecnología.
• Una mala distribución de los datos, es peor que un sistema centralizado, uso
en exceso de la red.
• Costo y complejidad del SW.
• Costo en llevar los cambios del SW a cada lugar..
• Integridad de los datos es más difícil de controlar.
• Uso de otra área de la tecnología, SW de seguridad, protección y de redes.
3. HDFS

3.2 HDFS

• Hadoop viene con un sistema de archivos distribuido


llamado HDFS, que significa (Hadoop Distributed
Filesystem).

• HDFS es el sistema de archivos insignia de Hadoop


pero Hadoop en realidad tiene una abstracción del
sistema de archivos de propósito general.
3. HDFS

3.2.1 Diseño de HDFS

HDFS es un sistema de archivos diseñado para almacenar


archivos muy grandes con patrones de acceso a
datos en streaming, que se ejecutan en grupos de
hardware básico.
3. HDFS

3.2.2 Aplicaciones para las que el uso de HDFS no


funciona

• Acceso a datos de baja latencia

• Muchos archivos pequeños

• Múltiples fuentes o con modificaciones de archivos


arbitrarios.
3. HDFS

3.3 Conceptos de HDFS

• BLOQUES
• Ficheros particionados

• NAMENODES AND DATANODES


• Procesos en ejecución
3. HDFS

3.3.1 BLOQUES

• Los sistemas de archivos para tradicionales graban los datos en


bloques.

• Los bloques del sistema de archivos suelen tener un tamaño de


unos pocos kilobytes, mientras que los bloques de disco
normalmente tienen 512 bytes

• HDFS, también, tiene el concepto de un bloque, pero es una


unidad mucho más grande: 128 MB por defecto
3. HDFS

¿POR QUÉ ES UN BLOQUE EN HDFS TAN GRANDE?


• Minimizar el coste de las búsquedas
• Es más rápido hacer una búsqueda en un bloque grande que miles en
bloques más pequeños

 Tiempo Búsqueda ~= 10 ms
 Tasa de transferencia = 100 MB/s
 Si queremos búsqueda 1% del tiempo de transferencia
 bloque ~= de 100 MB.

El valor predeterminado es en realidad 128 MB


3. HDFS

Ventajas
• Un archivo puede ser más grande que cualquier disco
en la red.

• Simplifica el subsistema de almacenamiento mediante


uso de metadatos

• Los bloques encajan bien con la replicación para


proporcionar tolerancia a fallos y disponibilidad

• Distribuir la carga de lectura en el clúster


3. HDFS

3.3.2 NAMENODES AND DATANODES


• Un clúster HDFS tiene dos tipos de nodos que
operan en un patrón maestro-esclavo
Namenode (el maestro)
Datanodes (trabajadores)

• El cliente presenta una interfaz de sistema de


archivos similar a una interfaz de sistema
operativo portátil (POSIX)
3. HDFS

3.3.2 NAMENODES AND DATANODES

A:
LECTURA/ESCRITURA
B: ACCESO
METADATOS
C: ALMACEN
METAINFO
D: ACCESO A DATOS
E: HEARTBEATS/INFO
• Principales tipos de nodo en Hadoop
• Un cluster Hadoop se compone como mínimo de
un nodo Maestro y un nodo Esclavo.
Demonio NameNode
• Responsables de gestionar el “espacio de nombres” del sistema
de archivos y, por tanto, son los que indican a los procesos
dónde se encuentran los datos.
• El NameNode es el encargado de almacenar los metadatos del
cluster Hadoop:
Información de la localización de los ficheros del HDFS
Información de permisos y usuarios
Nombre de los bloques
Localización de los bloques
• Los NameNode no se encargan de almacenar los datos. De esto
se encargan los DataNodes, que veremos más adelante.
Demonio NameNode
• Los metadatos son almacenados en el disco y son cargados en memoria
cuando el NameNode arranca por primera vez:
• Se almacenan en el fichero fsimage (los nombres del bloque no
son almacenados en el fichero)
• Los cambios realizados en los metadatos son almacenados en
memoria y en el fichero edits.
• Almacena toda la metainformación del sistema de archivos en el clúster,
esto significa que HDFS implementa una arquitectura maestro/
esclavo.
• La existencia de un único maestro en un clúster simplifica en gran
medida la arquitectura del sistema, pero tiene como debilidad que es un
único punto de fallo (Single Point of Failure)
Demonio NameNode

• Además, el NameNode debe tener la mayor cantidad de memoria RAM


posible porque, para que el acceso a datos sea óptimo, la consulta sobre la
ubicación de los datos debe ser muy rápida. Y esto último solo se consigue
manteniendo todos sus metadatos en memoria RAM.

• A grandes rasgos, además de un mínimo de 1 GB para que el sistema


funcione, en sistemas Hadoop “pequeños”, se estima 1 GB de memoria
por cada 100 TB de espacio (distribuido) en disco, y es habitual sistemas
con más de 10.000 TB
Web UI del NameNode
• A través de la web UI del NameNode seremos capaces de ver el estado de
nuestro cluster:
• Espacio total del HDFS
• Espacio ocupado del HDFS
• Espacio disponible del HDFS
• Estado de los Nodos
• Navegación por el sistema de ficheros
• Por defecto se encuentra en el puerto 50070 ó 9870
Web UI del NameNode
Demonio DataNode (esclavo)
• El DataNode es el encargado de acceder a los bloques almacenados en cada
uno de los nodos esclavos:
• El nombre de los bloques es: blk_xxxxxxxxx
• En los nodos esclavo únicamente se almacenan los datos, no se
almacena ningún tipo de información referente al bloque (nombre,
parte de.., etc).
• Cuando un usuario solicita un archivo, el NameNode se encarga de
identificar qué DataNodes contienen los datos solicitados y proveen dicha
información para que se pueda acceder directamente a los bloques de los
DataNodes individuales.
• Por su parte, cada DataNode informa periódicamente al NameNode de su
clúster sobre la lista de datos que almacena.
Demonio DataNode (esclavo)

• Requisitos de hardware para los DataNodes no tienen por qué ser muy
elevados, ya que la potencia del sistema es consecuencia directa del
gran número de DataNodes, y no de su potencia individual.
• Tampoco es necesario que sean iguales entre ellos en cuanto a
hardware o sistema operativo.
• Un DataNode almacenará varias porciones distintas de datos, y
además el sistema de archivos de Hadoop exige que estos segmentos se
encuentren por triplicado (o según un parámetro de configuración) y
en distintos DataNodes.
• Esto permite que los DataNodes se respalden unos a otros.
Demonio Secondary NameNode (master)
• El Secondary NameNode no es un NameNode en standby.
• El Secondary NameNode se encarga de operaciones de mantenimiento:
• El NameNode escribe las modificaciones de los metadatos en el fichero
edits.
• El Secondary NameNode periódicamente obtiene el fichero edits del
NameNode y lo une con el fichero fsimage y envía el nuevo snapshot al
NameNode.
• El Secondary NameNode se debe poner en otro nodo maestro en un cluster
de un tamaño considerable.
Cada hora o cada 1.000.000 de transacciones o cada 128 MBs
alamacenados (por defecto) el Secondary NameNode realiza el
checkpoint de los metadatos:
1. Llama al NameNode para obtener el fichero edits
2. Obtiene los ficheros fsimage y edits del NameNode
3. Carga el fichero fsimage en memory y agrega los cambios del fichero edits
4. Crea el nuevo fichero consolidado de fsimage
5. Envía el nuevo fichero consolidado al NameNode
6. El NameNode reemplaza el antiguo fsimage por el nuevo
HDFS: Data Locality

• Data Locality

• Llevar el código a los datos y no al revés: Hadoop intenta ejecutar el


procesado de los datos donde están almacenados éstos.

• Existen tres niveles, por orden de preferencia:


•Local
•On-rack
•Off-rack
HDFS: Data Locality

• Modo Local, cuando el dato está en el propio nodo que tiene que
procesarlos
HDFS: Data Locality

• OnRack, Cuando el dato está en el mismo rack que el nodo que lo tiene
que procesar
HDFS: Data Locality

• Off-Rack, Cuando el dato está en un rack distinto del nodo que lo tiene
que procesar
HDFS: Replicación de datos

• Cada fichero dividido en bloques


• Cada bloque está presente N veces en el clúster, siendo N el factor de
replicación
• Estará almacenado en diferentes datanodes
• Normalmente, pueden fallar hasta N-1 nodos y podríamos seguir
leyendo todos los bloques de un fichero.
HDFS: Replicación de datos
HDFS:
Replicación
de datos
HDFS:
Replicación
de datos
HDFS:
Replicación
de datos
HDFS: interacción programática

Comandos básicos
• ls
• cp
• mv
• copyFromLocal
• copyToLocal
• mkdir

• Es posible interactuar con HDFS desde código, usando sus APIs


• Normalmente se hace desde Java
• Librerías como snakebite permiten hacerlo desde otros lenguajes como
Python.
Insertar datos en HDFS
• Supongamos que tenemos los datos en el archivo llamado archivo.txt en el
sistema local que debe guardarse en el sistema de archivos hdfs. Para
insertar el archivo requerido en el Hadoop sistema de archivos es necesario
seguir los pasos siguientes.
• Paso 1. Crear un directorio de entrada.
$HADOOP_HOME/bin/hdfs dfs -mkdir /user/input
• Paso 2. Transferir y almacenar un archivo de datos de sistemas locales a la
Hadoop sistema de archivos utilizando el comando put.
$HADOOP_HOME/bin/hdfs dfs -put /home/file.txt /user/input
• Paso 3. Se puede comprobar el archivo mediante comando ls.
$HADOOP_HOME/bin/hdfs dfs -ls /user/input
Listado de los archivos en los HDFS
• Después de cargar la información en el servidor, podemos encontrar la
lista de los archivos de un directorio, el estado de un archivo, utilizando
"ls".
• A continuación se muestra la sintaxis de ls que se puede pasar a un
directorio o un nombre de archivo como argumento.

$HADOOP_HOME/bin/hadoop fs -ls <args>


Recuperar datos de HDFS
Supongamos que tenemos un archivo llamado into outfile en HDFS. A
continuación se ofrece una demostración sencilla para recuperar el archivo
necesario de la Hadoop sistema de archivos.
• Paso 1: En un primer momento, ver los datos de los HDFS con comando
cat.
>$HADOOP_HOME/bin/hadoop dfs -cat /user/output/outfile

• Paso 2: Obtener el archivo de HDFS al sistema de archivos local mediante


get.
>$HADOOP_HOME/bin/hadoop dfs -get /user/output/
/home/hadoop_tp/
• ls <path>
Muestra el contenido de un directorio especificado en la ruta, con los
nombres, los permisos, el propietario, tamaño y fecha de modificación de
cada entrada.

• lsr <path>
Se comporta como -ls, pero muestra las entradas de forma recursiva
todos los subdirectorios de la ruta.

• du <path>
Muestra uso de disco, en bytes, de todos los archivos que coincidirá
con la ruta
• dus <path>
Como -du, pero imprime un resumen del uso del disco de todos los
archivos/directorios de la ruta.
• mv <src><dest>
Mueve el archivo o directorio indicado por src a dest, en HDFS.
• cp <src> <dest>
Copia el archivo o directorio identificado por src a dest, en HDFS.
• rm <path>
Elimina el archivo o directorio vacío identificado con la ruta de acceso.
• put <localSrc> <dest>
Copia el archivo o directorio del sistema de archivos local identificado
por localSrc al dest en el SLE.
• copyFromLocal <localSrc> <dest>
Idéntico a -put
• moveFromLocal <localSrc> <dest>
Copia el archivo o directorio del sistema de archivos local identificado
por localSrc al dest en HDFS, y, a continuación, elimina la copia local en el
éxito.
• get [-crc] <src> <localDest>
Copia el archivo o directorio en HDFS identificados por src a la ruta del
sistema de archivos local identificado por localDest.
• getmerge <src> <localDest>
Recupera todos los archivos que coinciden con la ruta src en HDFS, y
copia en un único archivo, se funden en el sistema de archivos local
identificado por localDest.
• cat <filen-ame>
Muestra el contenido del archivo en stdout.
• copyToLocal <src> <localDest>
Idéntico a -get
• moveToLocal <src> <localDest>
Funciona de forma similar -get, pero elimina la HDFS copia en caso de
éxito.
• mkdir <path>
Crea los directorios en la ruta principal que faltan (p. ej., mkdir -p en
Linux).
• setrep [-R] [-w] rep <path>
Establece el objetivo de replicación de archivos identificados en la ruta
de acceso a rep. (La replicación real factor se moverá hacia la meta en el
tiempo)

• touchz <path>
Crea un archivo en la ruta que contiene la hora actual como una marca
de tiempo. No se si ya existe un archivo en la ruta, a menos que el archivo ya
está tamaño 0.

• test -[ezd] <path>


Devuelve 1 si existe una ruta; tiene longitud cero; o es un directorio o
de lo contrario, 0.
• stat [format] <path>
Imprime la información acerca de camino. Format es una cadena que
acepta tamaño del archivo en bloques ( %b), nombre ( %n), tamaño de
bloque ( %o), la replicación ( %r), y fecha de modificación ( %y, %Y).
• tail [-f] <file2name>
Muestra el último archivo de 1KB en stdout.
• chmod [-R] mode,mode,... <path>...
Cambia los permisos de archivo asociado con uno o más objetos
identificados en la ruta... Realiza los cambios recursivamente con R. es el
modo 3-dígitos modo octal o {augo}+/-{rwxX}. Asume si no se especifica
scope y no aplicar un umask.
• chown [-R] [owner][:[group]] <path>...
Establece el usuario propietario y/o un grupo de archivos o directorios
identificados por la ruta... Conjuntos recursivamente si propietario -R es
especificado.
• chgrp [-R] group <path>...
Establece el grupo propietario de los archivos o directorios
identificados por la ruta... Grupo Conjuntos recursivamente si se especifica -R.
• help <cmd-name>
Devuelve información sobre el uso de uno de los comandos listados
anteriormente. Debe omitir las principales caracter '-' en cmd.
• Alta Disponibilidad en HDFS
• Alta Disponibilidad en HDFS
• Alta Disponibilidad en HDFS (Arquitectura)
4. Procesamiento en Hadoop:
Mapreduce
Procesamiento en Hadoop

• HDFS sistema de almacenamiento de ficheros

• Para los procesos existen dos versiones en este momento

• MapReduce V1
• MapReduce V2 (YARN)
Procesamiento en Hadoop: Mapreduce

• MapReduce es el sistema que utiliza Hadoop para procesar los datos en


modo BATCH dentro de un clúster

• Estructura para ejecutar algoritmos altamente paralelizables y distribuidos


utilizando ordenadores “básicos”

• Origen del concepto de combinador Map y Reduce de lenguajes de


programación

• Encargado tanto del proceso de los datos como gestión del cluster.
PROBLEMA!!!
Procesamiento en Hadoop: Mapreduce

• Hadoop se ejecuta en clústeres formados por un gran número


de equipos básicos (nodos) agrupados a su vez en racks.

• En Hadoop se define un clúster como un conjunto de


computadoras que se comportan como si fuesen una única
computadora

• Un rack es una colección de 30 o 40 nodos que se almacenan


físicamente juntos y que todos están conectados al mismo
switch de red.
Nodos del tipo MapReduce en v1
• Se encargan tanto de la ejecución de tareas de computo en sí, como de la
gestión del entorno para facilitar dicha ejecución.

• Los nodos MapReduce se pueden clasifican en dos tipos


nodos JobTracker o maestros, que se encargan de planificar y
distribuir los procesos que hay que ejecutar.
nodos TaskTracker o esclavos, que se encargan de la ejecución
de los procesos.
Nodos JobTracker
• Los nodos JobTracker tienen como objetivo planificar y distribuir los
trabajos MapReduce.

Para realizar esta tarea, estos nodos realizan las siguientes funciones:
• Buscar y catalogar los nodos en función de su utilidad para realizar una
determinada tarea. Los nodos candidatos para ejecutar un trabajo serán
aquellos que estén más cercanos a los datos que consumir y con menor
carga de trabajo en ese momento.
• Enviar los trabajos MapReduce a los nodos seleccionados.
• Nodos JobTracker

• Solo puede existir un JobTracker por clúster, por lo que se recomienda,


debido a su importancia, que el servicio JobTracker disponga de un
equipo completo y en exclusividad.

• Que este nodo deje de funcionar implicaría que todo el clúster dejara de
funcionar. Por tanto, también será recomendable elegir un hardware de
alta disponibilidad para este nodo.
Nodos TaskTracker
• Los nodos TaskTracker tienen como objetivo ejecutar tareas MapReduce.

• Para lograr el paralelismo de los trabajos MapReduce, y así un alto


rendimiento, hay multiples TaskTracker en un clúster Hadoop.

• Cada nodo de tipo TaskTracker está configurado con una serie de


«divisiones». Cada división indica una tarea que puede ejecutar. Las
divisiones pueden estar ocupadas (ejecutando alguna tarea) o disponibles
(no están ejecutando ninguna tarea).

• Los nodos TaskTracker se sitúan muy cerca de los nodos DataNode, y es


muy habitual que compartan equipo hardware.
Procesamiento en Hadoop: Mapreduce

Proceso Map-Reduce
Procesamiento en Hadoop: Mapreduce

Proceso Map-Reduce
Procesamiento en Hadoop: Mapreduce

• ¿Cómo cuento el número de ocurrencias de cada palabra en un documento?


Procesamiento en Hadoop: Mapreduce

• Uso de una colección de claves / valores


Procesamiento en Hadoop: Mapreduce

• ¿qué ocurre si el documento es realmente GRANDE?


Procesamiento en Hadoop: Mapreduce

• Clase java para fase Map


Procesamiento en Hadoop: Mapreduce

• Clase java para fase Reduce


Procesamiento en Hadoop: Mapreduce

• Clase java para Job


Procesamiento en Hadoop: Mapreduce

• Limitaciones de MapReduce v1
Procesamiento en Hadoop:
YARN

eae.es
YARN y MapReduce

• YARN (Yet Another Resource Negotiator): Evolución de Mapreduce,


• Fue introducido en Hadoop 2, para mejorar Mapreduce, y permitir diferentes tipos de
procesamiento de datos: Tez, Spark, Mapreduce… no solo BATCH

• YARN es el encargado de gestionar un clúster, lo que quiere decir, que se encarga de


gestionar los recursos (memoria, disco, procesos).

• YARN expone una serie de APIs que son aprovechadas por frameworks de cómputo
como Mapreduce, Spark … etc (todos ellos pueden ejecutar sobre YARN).

• Tiene procesos distintos para el proceso de datos y para la gestión del cluster
YARN y MapReduce
YARN y MapReduce
Arquitectura YARN
• En esta arquitectura, existen cuatro elementos
• Dos de infraestructura del cluster,
+ Resource Manager: Gestiona asignación de recursos en un clúster completo
de YARN

+ Node Manager: Gestiona los contenedores de un nodo concreto del clúster

• y dos que dependen de las tareas Map-Reduce,


+ AppMaster: Gestiona una aplicación YARN concreta (por ejemplo, un job
mapreduce concreto)

+ Container
Resource Manager

• Su función principal es la de conocer, únicamente, que slots están


libres y ocupados en cada nodo del cluster.

• (Un slot o ranura es una “partición” del hardware de cada nodo “Worker”,
una porción de memoria y un tiempo de cpu, en la que dichos nodos se
dividen y que van siendo asignadas a las tareas por el Resource Manager)

• La principal mejora en la segunda versión es que el nodo master del


agrupamiento no controla a las tareas en ejecución, cosa que antes
si hacía
Nodo Manager.
• Cada nodo Worker del cluster ejecuta su propio nodo Manager, cuya
misión es la de
• conocer la carga del nodo, todos los slots ocupados por los
distintos trabajos Map–Reduce que se ejecutan en el cluster
• comunicar su estado al Resource Manager del nodo Master.

• El nodo Master, no se encarga de la supervisión de los trabajos Map-


Reduce en ejecución. Esta es la principal diferencia con la versión
1 de Hadoop.
AppMaster.
• Este Proceso se instancia cuando se lanza un trabajo Map-
Reduce
• El Resource Manager, que se ejecuta en el nodo Master del agrupamiento,
selecciona un nodo Worker e instancia el proceso
• Este proceso es el que realmente se encarga de la ejecución de la
tarea Map-Reduce, preguntando al Resource Manager en que nodo
puede instanciar los Containers, que ejecutarán la tarea MR.

Container
• Cada uno de los slots, de los nodos Worker que ejecutan parte de la tarea
Map-Reduce que se lanza en el cluster.
2.
Arquitectura
2.
Arquitectura
2.
Arquitectura
2.
Arquitectura
2.
Arquitectura
2.
Arquitectura
2.
Arquitectura
• Ejemplo de la vida real que muestra la potencia de Hadoop 2.0 sobre
Hadoop 1.0.

o Yahoo fue capaz de ejecutar casi el doble de jobs al día con YARN
que con Hadoop 1.0.
o También experimentaron un aumento considerable en la
utilización de la CPU.
o Yahoo incluso llegó a afirmar que la actualización a YARN
equivalía a añadir 1000 máquinas a su cluster de 2500 máquinas
YARN. Planificación de Recursos
• Asignación de recursos del cluster a aplicaciones que se están ejecutando en
el cluster.

• Uno de los componentes principales del servicio ResourceManager y es el


responsable de la asignación de recursos basado en los requerimientos de
recursos de los container.

• Los procesadores y la RAM son dos recursos críticos para la ejecución de cada
container.

• ResourceManager.scheduler.class: Clase utilizada en planificación de


recursos.
YARN. Planificación de Recursos
YARN define dos tipos de planificadores predefinidos:
• Capacity scheduler: como un porcentaje del total de recursos del cluster y
permite:
• Ejecución de múltiples aplicaciones compartiendo recursos del cluster.
• Multi-tenencia y capacidad garantizada.
• Uso colas CSQueue para la definición de colas.

• Fair scheduler: como una proporción justa de recursos a todas las


aplicaciones que se están ejecutando en el cluster.
• Cuando una sola aplicación es enviada al cluster, todos los recursos están disponibles para
esta.
• Cuando otra aplicación es enviada al cluster, una parte de los recursos es dado a la segunda
aplicación.
ECOSISTEMA HADOOP

eae.es
Procesamiento en Hadoop: Hadoop Streaming

• Permite la ejecución de jobs mapreduce desde lenguajes distintos a Java


• Utiliza la entrada y salida estándar para comunicarse con Hadoop
• Librerías como MRJob nos facilitan esta tarea

Ecosistema Hadoop

• Facilitar procesamiento ó ETL: Pig


• DataWarehousing sobre Hadoop: Hive
• NoSQL “BigTable” sobre Hadoop: HBase
• Facilitar ingestión de datos: Sqoop, Flume
• Machine Learning sobre Hadoop: Mahout
• Orquestación: Oozie
• Facilitar la coordinación del clúster: Zookeeper
Procesamiento en Hadoop: Hadoop Streaming
We make
it happen

FIN UNIDAD

Click para editar el tercer nivel

eae.es

También podría gustarte