Skip to content

ElRojo7u7/fes-hadoop

Repository files navigation

Alpine_hadoop

Image size: 1.54G

Primero

  • Se debe descargar hadoop-3.3.5.tar.gz y se debe ubicar justo al lado del Dockerfile
  • Se debe descargar jdk-8u371-linux-x64.tar.gz y se debe ubicar justo al lado del Dockerfile

Ejecutar una vez

  1. Iniciar docker swarm
docker swarm init --advertise-addr 127.0.0.1
  1. Crear la network
docker network create --driver bridge --scope=swarm swarm-net

Construcción de la imágen y deployment

  1. Construir la imagen
docker build -t hadoop_alpine --build-arg HADOOP_FILE=hadoop-3.3.5 .
  1. Correr los contenedores
docker stack deploy -c docker-compose.yaml swarm

Como funciona?

Al montarse los esclavos estos mandan sus llaves al maestro (~/.ssh/config, ~/.ssh/authorized_keys y /opt/hadoop/etc/hadoop/workers)

Todos tienen el usuario hadoop con la contraseña 1234 La configuración del contenedor puede tener las sig. variables de entorno:

MASTER_HADOOP_PASSWORD=<contraseña del maestro (usuario hadoop)> *requerido para nodo esclavo
MASTER_HOSTNAME=<hostname del maestro> *requerido para nodo esclavo
HOSTNAME=<escojer un hostname diferente para resolucion dns, util en caso de usar servicios> (opcional, tiene el valor del hostname del contenedor por defecto)
PASSWORD=<la contraseña para el usuario hadoop> (opcional, por defecto es 1234. Procura que la contraseña sea la misma para todos los nodos esclavo)
REPLICAS=<no. de replicas> *requerido para todos
SLAVE_HADOOP_PASSWORD=<contraseña del usuario hadoop de los nodos esclavo> *requerido para nodo maestro
ISMASTER=<si es nodo maestro o no> (false por defecto)

El nodo maestro debe mander las variables: "MASTER_HOSTNAME" y "REPLICAS", una vez montado es deber del usuario mandar sus llaves a todos los nodos hijo, esto se puede hacer fácilmente entrando al contenedor maestro (con docker container exec -it <container> bash y su -l hadoop) y ejecutando:

ssh_config="Host $(hostname)\nUser hadoop\nHostName $(hostname -i | cut -d ' ' -f 1)"; echo -e $ssh_config >> /home/hadoop/.ssh/config

cat /home/hadoop/.ssh/id_ed25519.pub >> /home/hadoop/.ssh/authorized_keys

Remover localhost del archivo /opt/hadoop/etc/hadoop/workers

while read p; do < /home/hadoop/.ssh/authorized_keys sshpass -p "1234" ssh -o StrictHostkeyChecking=no hadoop@"$p" 'cat >> /home/hadoop/.ssh/authorized_keys'; < /home/hadoop/.ssh/config sshpass -p "1234" ssh -o StrictHostkeyChecking=no hadoop@"$p" 'cat >> /home/hadoop/.ssh/config'; done < /opt/hadoop/etc/hadoop/workers

Finalmente el nodo maestro inicia el servicio

hdfs namenode -format

start-dfs.sh

Consideraciones

Iniciar el servicio siendo root no le gusta a hadoop y manda error, se debe iniciar como usuario hadoop

Refrescar los namenodes

while read p; do hdfs dfsadmin -refreshNamenodes "$p":9867; done < /opt/hadoop/etc/hadoop/workers

TODO:

  1. Mejorar el script del entrypoint
  2. Vincular logs
  3. Agragar soporte para múltiples maestros

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published