Docker - alkemyTech/OT301-python GitHub Wiki

https://www.docker.com/

Get Docker

https://docs.docker.com/get-docker/

Aprende Docker

https://youtu.be/4Dko5W96WHg

Hadoop con Docker (en Windows)

Les paso a dejar todos los pasos que tuve que hacer para lograr la instalación de Docker en Windows, y posteriormente hacer funcionar Hadoop.

Docker

  • Usé la misma VM de Ubuntu que usamos para airflow
  • Me aseguré de estar usando WSL 2
  • Lo más importante de todo, habilitar la integración de Ubuntu con Docker (en Configuración de Docker Desktop -> Resources -> WSL Integration) image

Luego:

  • Monté las unidades de windows en el directorio raíz para evitarme problemas de pathing (https://youtu.be/M521KLHGaZc?t=292 hasta el min 8 nomás)
  • Seguí la instrucciones de este simple video: https://www.youtube.com/watch?v=_et7H0EQ8fY (no hace nada especial pero me hizo darme cuenta que tenía que correr Docker desde la consola de Ubuntu, y no desde windows). En teoría debería andar la imagen de prueba que muestra el video.

Hadoop

Una vez funciona Docker:

  • Siguiendo el Tutorial de Hadoop, desde la consola de Ubuntu me paro dentro la carpeta docker-hadoop, y recién ahí ejecuto docker-compose up -d. (Importante hacerlo con sudo, o antes haber puesto sudo su, porque sino te tira un error de config file).
  • En teoría ya levanta todos los containers correctamente y quedan funcionando. Entonces seguimos el tutorial y cuando tenemos que crear los archivos "mapper.py" y "reducer.py" es importarte guardarlos con formato de final de linea "LF", porque sino te va a tirar un montón de errores java con exit code 127 en los subprocesos del mapReduce. Para hacer esto, fijarse en VSCode a la hora de guardar estos archivos:

image

  • Ya debería funcionar correctamente, y para chequear los resultados: hadoop fs -cat output11/part-00000 cambiando "output11" por el nombre que le hayas dado al output (los podés chequear todos con hadoop dfs -ls -R).

Hadoop con Docker (chip Apple M1)

Uso de Repo propuesto en Tutorial de Hadoop

  • Se prueba sin poder correr correctamente por diferencia de arquitectura entre chip M1 (máquina local) y AMD64 (imagen de nodos Docker).
  • Se decide buscar otro repo que se adapte a la máquina local.

Repo para M1

  • Se siguen los pasos del repo de Matt y se levantan los nodos de Hadoop sin problemas.
  • Captura de Pantalla 2022-09-20 a la(s) 14 02 20
  • Se realiza la configuración de los archivos de forma manual siguiendo los pasos del repo.
  • Se utilizan los archivos mapper.py y reducer.py del tutorial de Boyu1997 y se experimenta el error: Error: java.lang.RuntimeException: PipeMapRed.waitOutputThreads(): subprocess failed with code 127.
  • Para arreglar este error, es necesario revisar instalación de python2 o python3 en el nodename. En caso de no estar presentes, se procede a instalar desde la carpeta donde está el repo de Docker-Hadoop como se detalla en la wiki de este repo:
  • Para python2: docker exec -it namenode bash -c "apt update && apt install python -y"
  • Para python3: docker exec -it namenode bash -c "apt update && apt install python3 -y"
  • El uso de cada python en particular se debe a como inicia el código del mapper.py y el reducer.py (shebang):
  • Para python2: #!/usr/bin/env python.
  • Para python3: #!/usr/bin/env python3.