El documento explica conceptos clave de Hadoop como HDFS, MapReduce y YARN. Describe que HDFS almacena los datos de forma fragmentada en múltiples nodos para tolerar fallos, y que MapReduce procesa los datos de forma distribuida mediante las fases de map y reduce. También cubre la instalación de un clúster Hadoop simple usando Docker para probar aplicaciones como el contador de palabras.
2. Aprendizaje
• Comprender sobre las tecnologías para el
procesamiento de big data.
• Entender el sistema de archivos
distribuidos (HDFS)
• Visualizar la arquitectura Maestro-Esclavo.
• Diferenciar los tipos de archivos: texto y
secuencias
• Comprender sobre el administrador de
recursos YARN
Objetivos
3. Hadoop HDFS
• Hadoop es un sistema no
relacional de almacenamiento y
procesamiento de datos
distribuido en clústers de
computadoras.
• Fue diseñado para afrontar los
desafíos de analizar y procesar
grandes volúmenes de datos a
gran escala.
¿Qué es Hadoop?
Procesamiento Big Data
4. Fragmentación de datos
• Debido a proveer una arquitectura
escalable usando software básico,
donde cada nodo sirve como
servidor de datos y
procesamiento, los archivos se
dividen en fragmentos de 64MB
c/u (configurable) y se almacenan
cada porción en múltiples nodos.
• Afronta los desafíos: de fallos de
nodos, redes de cuello de botella
y programación distribuida.
¿Por qué la computación distribuida?
5. Fragmentación de datos
• Sólo un nodo puede ser definido
como maestro, el resto son
esclavos.
• El NameNode es el encargado
de realizar los seguimientos de
los contenidos de todos los
DataNodes.
• Cada uno de estos nodos de
datos contienen los fragmentos
de los datos
Arquitectura Maestro - Esclavo
7. Fragmentación de datos
• Todos los datos se almacenan en partes de 64MB com tamaño estándar, pero es
configurable.
• Para evitar fallas del servidor y racks, se realizan una copia de seguridad en dos o tres
ubicaciones de todos los datos.
• Los datos se almacenan lo más cercano posible para garantizar el procesamiento
veloz.
• Garantiza la integridad de los datos, una vez escritos no se pueden destruir.
• Para garantizar la velocidad de almacenamiento e integridad de los datos, sólo
funciona en modo APPEND, donde se agregan los registros al final del
almacenamiento existente y no se pueden actualizar.
Características HDFS
8. • Almacenamiento distribuido: Hadoop permite almacenar grandes cantidades de datos en clústeres de servidores, utilizando una
arquitectura distribuida. Los datos se dividen en bloques y se distribuyen entre los nodos del clúster, lo que proporciona alta
disponibilidad y tolerancia a fallos.
• Procesamiento distribuido: Hadoop utiliza el modelo de programación MapReduce para procesar datos distribuidos en paralelo.
MapReduce divide las tareas en etapas de "map" y "reduce", donde el procesamiento se realiza en los nodos del clúster de forma
independiente y luego se combinan los resultados.
• Escalabilidad: Hadoop es altamente escalable, lo que significa que puede manejar eficientemente grandes volúmenes de datos y
aumentar el tamaño del clúster según sea necesario. Esto permite el procesamiento y almacenamiento de datos a gran escala.
• Tolerancia a fallos: Hadoop es capaz de manejar fallos en los nodos del clúster de forma transparente. Si un nodo falla durante el
procesamiento, los datos y las tareas se redistribuyen automáticamente a otros nodos disponibles, lo que asegura la continuidad
del procesamiento sin interrupciones.
• Análisis de datos: Hadoop es utilizado para el análisis de datos a gran escala, como la minería de datos, el procesamiento de
registros, el análisis de texto, la generación de informes y el análisis de patrones. Las herramientas y bibliotecas de Hadoop,
como Apache Hive, Apache Pig y Apache Spark, permiten realizar consultas y análisis complejos sobre los datos almacenados
en el clúster.
• Almacenamiento de datos no estructurados: Hadoop es adecuado para el almacenamiento y procesamiento de datos no
estructurados o semiestructurados, como archivos de registro, documentos de texto, imágenes, videos y datos de redes sociales.
Usos HDFS
9. Yet another resource negotiator
• Es un sistema operativo
distribuido a gran escala para
aplicaciones Big Data.
• Gestiona los recursos y supervisa
las cargas de trabajo al tiempo
que garantiza la alta disponibilidad
en múltiples clusters de Hadoop.
• Es una plataforma para ejecutar
múltiples herramientas y
aplicaciones
YARN
10. • Es un marco para el procesamiento paralelo
con un movimiento mínimo de datos y
resultados casi en tiempo real.
• Tienen dos tipos de trabajos para sus
tareas:
Map: Mapea el trabajo en muchas tareas.
Reduce: combina las entradas de todos
nodos en una salida.
• Sólo un proceso es maestro el resto
esclavo.
• Hay un JobTracker que realiza el
seguimiento de los contenidos de todos los
TaskTraker.
• Cada TaskTracker realiza un seguimiento
de los procesos en un nodo de cálculo.
Map Reduce
16. Lo que aprenderás
• Concepto de docker.
• Instalar docker en tu maquina local.
• Instanciar un contenedor de Hadoop.
• Copiar archivos al contenedor.
• Instanciar comandos HDFS
• Correr la aplicación de contador de palabras
17. ¿Qué es docker?
Docker es una solución de contenedor de
código abierto que le permite en
contenedores y empaquetar una aplicación y
sus dependencias en contenedores Docker
para fines de desarrollo y implementación.
Un contenedor Docker es un entorno
preconfigurado que incluye todas las
instalaciones necesarias para la aplicación
que se ejecuta dentro de él. Cada
contenedor tiene una aplicación en
ejecución, y cada contenedor funciona en el
motor Docker, que a su vez se ejecuta en la
parte superior del sistema operativo host.
19. Configurar Docker y docker-compose
Para configurar este único clúster
Hadoop usando Docker, asegúrese
de que Docker está instalado en su
computadora. Ejecute los siguientes
comandos para asegurarse de que
Docker ya esté configurado para
ejecutar docker-compose.
20. Configurar Docker y docker-compose
Ejecutar el comando en su terminal:
docker —version y
docker-compose —version, debería
visualizar de la siguiente manera,
puede diferir el número de versión
21. Comandos utiles docker
Ejecutar el comando en su terminal:
docker ps
Para listar los contenedores activos
y sus características.
22. Instalar github
Asegúrate de tener git o GitHub
instalado en su computadora.
Corremos el comando git —version
para visualizar nuestra versión.
23. Configurar un solo clúster Hadoop usando docker-compose
Comenzamos clonando el repositorio docker-Hadoop de Github de la siguiente manera:
git clone https://github.com/big-data-europe/docker-hadoop.git
24. Configurar un solo clúster Hadoop usando docker-compose
El repositorio de muestra anterior tiene un Hadoop docker-compopose.yml listo y listo para ser desplegado en contenedores
Docker. Navegue a la carpeta clonada y luego ejecute el siguiente comando para iniciar el contenedor usando docker-compose:
Dentro de la carpeta inicia el contenedor con el comando: docker-compose up -d
25. Configurar un solo clúster Hadoop usando docker-compose
Una vez corrido e instanciado los contenedores corremos el comando docker ps para listar los contenedores activos
Podemos visualizar varios contenedores activos tanto en la terminal como en la aplicación docker
26. Configurar un solo clúster Hadoop usando docker-compose
Verificamos si el programa inicio correctamente accediendo a nuestro navegador en la siguiente dirección:
http://localhost:9870/ y listo!
27. Prueba de la aplicación Hadoop usando MapReduce Job
Abrimos una terminal o visual estudio y corremos el siguiente comando:
docker exec -it namenode bash
Y nos ingresara de la siguiente manera, luego ingresamos a la carpeta tmp con el comando cd /tmp
mkdir input
echo "Hello World" >input/f1.txt
echo "Hello Docker" >input/f2.txt
Luego creamos una carpeta y dos archivos con el siguiente
comando.
28. Prueba de la aplicación Hadoop usando MapReduce Job
Continuamos en la terminal
o visual estudio y corremos
el siguiente comando para
crear un directorio HDFS
llamado input:
hadoop fs -mkdir -p input
Y colocamos todos los
archivos de input en todos
los nodos en HDFS
hdfs dfs -put ./input/* input
29. Prueba de la aplicación Hadoop usando MapReduce Job
Descargamos el
programa de
contador de
palabras .jar del
siguiente enlace
Y lo copiamos en el
root de la carpeta.
30. Prueba de la aplicación Hadoop usando MapReduce Job
Abrimos otra
terminal y
corremos el
comando docker
ps para saber el id
de nuestro
namenode
31. Prueba de la aplicación Hadoop usando MapReduce Job
Corremos el comando
docker cp para copiar el
archivo a nuestro
namenode:
De nuestro computador a
la carpeta tmp de nuestro
server:
docker cp hadoop-
mapreduce-examples-
2.7.1-sources.jar
c84bfe7a5ab6:/tmp
c84bfe7a5ab6 es el ID del contenedor
32. Prueba de la aplicación Hadoop usando MapReduce Job
Ingresamos de vuelta a
nuestro contenedor con
el comando
docker exec -it namenode bash
Dentro de nuestro
contenedor corremos la
aplicación
hadoop jar hadoop-mapreduce-examples-2.7.1-sources.jar
org.apache.hadoop.examples.WordCount input output
33. Prueba de la aplicación Hadoop usando MapReduce Job
Imprimimos el resultado
del contador con el
comando:
hdfs dfs -cat output/part-r-
00000
La impresión muestra la
cantidad de palabras en
los dos archivos creados!
34. Prueba de la aplicación Hadoop usando MapReduce Job
Visualizamos los
archivos desde el
navegador
35. Prueba de la aplicación Hadoop usando MapReduce Job
Visualizamos los
archivos desde el
navegador
36. Prueba de la aplicación Hadoop usando MapReduce Job
Visualizamos los
archivos desde el
navegador
38. Siguientes pasos
En base a lo aprendido
✓Responder las preguntas de las tareas 1 y 2
✓Las preguntas sobre algunos problemas en la instalación pueden ser
remitidas vía correo a la siguiente dirección contra.fer08@gmail.com