Skip to content

Run Hadoop Custer within Docker Containers (sequenceiq/hadoop-docker image)

Notifications You must be signed in to change notification settings

hordiales/hadoop-cluster-docker

 
 

Repository files navigation

Nota: Fork del proyecto kiwenlau/hadoop-cluster-docker adaptado para usar la imagen de base recomendada por la documentación de Hadoop: sequenceiq/hadoop-docker (soporta diferentes versiones)

Modo: Master/slave (no es autodiscovery) Reference: http://www.michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-multi-node-cluster/#confslaves-master-only

Cluster Hadoop de 4 nodos (1 master y 3 slaves) usando Docker

Configuración inicial

1. Crear una docker red hadoop
$ docker network create --driver=bridge hadoop

hadoop master slave diagram

2. Construir la imagen docker

$ ./build-image.sh

Parte de la imagen base mencionada y configura ssh, los nodos esclavos, la configuración general, etc.

Uso

Lanzar los containers (master y los esclavos)
$ ./start-container.sh

Crea el container master y los slaves con configuraciones diferentes, usando la misma red. Cuando inicia el master, bindea el puerto 50070 y el 8088 con el host.

Abre un bash en el master.

TIP: agregar --rm para que los containers sean temporarios.

En caso de agregar más nodos, actualizar el archivo config/slaves

Iniciar hadoop en el master

(desde el bash del master)

$ ./start-hadoop.sh

Para monitorear, con el browser conectarse a: http://localhost:50070

Pruebas/Ejemplos

Paper original sobre Map Reduce (Google) Simplified Data Processing on Large Clusters

Ejemplo default de la documentación oficial (WordCount)

Dado un input, cuenta el número de ocurrencias para cada palabra.

$ VERSION=2.7.0
$ cd /usr/local/hadoop-$VERSION
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-$VERSION.jar grep input output 'dfs[a-z.]+'

(o correr ~/run-wordcount.sh)

Referencia: https://hadoop.apache.org/docs/r2.8.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/MapReduceTutorial.html#Example:_WordCount_v1.0

Copiar a localhost y ver el resultado

$ bin/hdfs dfs -get output output
$ cat output/*

O mirar directamente el resultado en el filesystem distribuido (DFS)

$ bin/hdfs dfs -cat output/*

wordcount example

$ ./run-wordcount.sh

output

input file1.txt:
Hello Hadoop

input file2.txt:
Hello Docker

wordcount output:
Docker    1
Hadoop    1
Hello    2

Output log

Output log

NOTA: Testeado con Hadoop versión 2.7.0. En caso de que la imagen docker cambie de versión, será necesario actualizar varios scritps. Buscar donde con 'fgrep 2.7.0 -R .'

About

Run Hadoop Custer within Docker Containers (sequenceiq/hadoop-docker image)

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Shell 68.3%
  • Java 20.0%
  • Dockerfile 11.7%