Crea una cuenta o inicia sesión

¡Continúa aprendiendo sin ningún costo! Únete y comienza a potenciar tu carrera

Curso de Hadoop

Curso de Hadoop

Benjamín Casazza

Benjamín Casazza

Crear tu propio dockerfile para tu entorno de pruebas con Hadoop

5/22
Recursos

Aportes 13

Preguntas 4

Ordenar por:

Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.

Me parece que falta mayor claridad en el proceso de instalación de hadoop

Se le pasó mencionar que debemos de clonar el repositorio que se encuentra en: https://github.com/terranigmark/curso-hadoop-platzi

git clone https://github.com/terranigmark/curso-hadoop-platzi.git
checkout 1_Crear_tu_propio_dockerfile_para_tu_entorno_de_pruebas_con_Hadoop
cd 1_Crear_tu_propio_dockerfile_para_tu_entorno_de_pruebas_con_Hadoop
vim start-conteiner.sh

esc + : + q

tree
sudo docker network create --driver=bridge hadoop
sudo ./start-container.sh
./start-hadoop.sh
echo "texto para hadoop" > ejemplo.txt
hdfs dfs -mkdir -p platzi
hdfs dfs -put ejemplo.txt platzi

localhost:50070

Para quienes quieran montar el entorno con docker-compose, les comparto mi file de configuración:

version: "3.8"

services: 
  hadoop-master:
    image: uracilo/hadoop
    container_name: hadoop-master
    hostname: hadoop-master
    ports:
      - '50070:50070'
      - '8088:8088'
    stdin_open: true
    tty: true
  
  slave_1:
    image: uracilo/hadoop
    container_name: hadoop-slave1
    hostname: hadoop-slave1
    stdin_open: true
    tty: true
    depends_on: 
      - hadoop-master
  
  slave_2:
    image: uracilo/hadoop
    container_name: hadoop-slave2
    hostname: hadoop-slave2
    stdin_open: true
    tty: true
    depends_on: 
      - hadoop-master

  slave_3:
    image: uracilo/hadoop
    container_name: hadoop-slave3
    hostname: hadoop-slave3
    stdin_open: true
    tty: true
    depends_on: 
      - hadoop-master
  
  slave_4:
    image: uracilo/hadoop
    container_name: hadoop-slave4
    hostname: hadoop-slave4
    stdin_open: true
    tty: true
    depends_on: 
      - hadoop-master
  
  slave_5:
    image: uracilo/hadoop
    container_name: hadoop-slave5
    hostname: hadoop-slave5
    stdin_open: true
    tty: true
    depends_on: 
      - hadoop-master

Tiene demasiados huecos esta explicación, no cumple lo que promete Platzi, muy decepcionado, lleva varios cursos en la escuela de data science en los cuales quedo muy perdido, pero esto ya rebozo el vaso

Resumen:

■■■■■■■

¿Te ha pasado que a ti te corre tu app en tu pc, pero en otras máquinas tu app crashea?


Docker es un software de virtualización a nivel de sistema operativo que te va a permitir desarrollar, desplegar, administrar y correr tus aplicaciones en espacios llamados “contenedores” los cuales contienen todas las librerías y dependencias necesarias para que tu app funcione sin importar en qué máquina la corras.

  • En otras palabras empaquetar apps y dependencias en contenedores.

Estos contendores son gestionados por el motor de Docker que usa recursos de tu computador para simular estos ambientes de trabajo. Es decir puedes simular multiples computadoras virtuales que poseen ambientes de desarrollo como en este caso el ambiente de Hadoop.

  • Hadoop trabaja con sistemas distribuidos, en un modelo llamado “esclavo-maestro”, un maestro gestiona multiples nodos o multiples computadoras, es decir un clusters. Hadoop particiona la data por ti, y tu no tienes que preocuparte, distribuye la data en los nodos o en este caso nuestros containers.
  • Docker network nos permite orquestar nuestro múltiples computadoras virtuales en contenedores, en otras palabras un cluster
  • Si juntamos ambos podemos explorar el potencial de hadoop para procesamiento/almacenamiento de datos distribuidos en ambientes que pueden escalarse, ya que si necesitan más recursos añadirías otro contenedor.

  • ¿Estas trabajando en Windows?, tranqui. En la terminal oprime wsl o el Windows Subsystem for Linux (si lo tienes instalado) esto te permitirá trabajar con Ubuntu, una distribución de Linux, sin problemas.

  • Aquí configuras tu docker (después de instalarlo) para que tu máquina reconozca en el WSL a Docker, y puedas trabajar los comandos del curso. Docker WSL


Terminal


NOTA: Haz un fork del repo de la clase, dale una estrellita si quieres y clonalo en tu pc.


  • A Docker network podemos pensarlo como una serie de comandos que nos permitirán simmular el cluster con el que vamos a poder explorar hadoop.
sudo docker network create --driver=bridge hadoop
  • Este comando levanta el contenedor general del cluster
sudo ./start-container.sh
  • Con este comando de bash levantas el servicio de hadoop.

./start-hadoop.sh
  • Estos comandos me permitirán entrar manipular el sistema de almacenamiento distribuido de Hadoop, HDFS. En este caso para almacenar el archivo de prueba que acabamos de crear para probar un poco de Hadoop.
echo "texto para hadoop" > ejemplo.txt  # creo archivo
hdfs dfs -mkdir -p platzi # En el HDFS creo un directorio 
hdfs dfs -put ejemplo.txt platzi # Pongo el archivo recién creado dentro

  • Para verificar el comportamiento de tu cluster de hadoop, puedes acceder en el navegador accediendo así: localhost:puerto_cluster , si te fijas en el script de bash del curso para inicializar la red de contenedores de docker, veras un 50070 ese es tu puerto.

  • La pantalla que ves te facilitará tareas de administración del cluster, ver jobs en funcionamiento, ver los data_nodes o las computadoras virtuales que creaste para ver como queda particionado el archivo ejemplo.txt , como una muestra del almacenamiento distribuido de hadoop.

Nota:


Si estás en windows, y no te corren los scripts de bash aunque el script esté en el lugar correcto, sucede que debes cambiar la forma en la que tu IDE entiende el término “End lines Sequence” UNIX funciona un poco diferente, en VS code oprime:

  • ctrl+shit+p, abres la paleta de comandos
  • escribe : “Change End line Sequence”
  • Ponla en la función LF.

Y ya, pudes hacer el curso sin problemas. ❤️

Pienso que al curso le falta profundidad, no es para personas que quieran aprender Hadoop desde cero, la estructura del curso debe analizarse y orientarla a niveles de iniciación, intermedios y avanzados. El profesor está bien, pero faltó estructurar bien el curso para un nivel básico y desde las raíces de lo que Hadoop.

Este man a va toda, hay clases malas pero esto es el colmo >:I

Para crear cinco contenedores esclavos se debe modificar la definición de la variable N del archivo start container . sh:


# Número default de nodos
N=${1:-6}


Tengo un error solo se configuran es server rmaster, el esclavo1, el esclavo2 y el resto tengo error con el error is not running. Me pueden indicar porque puede suceder esto

wow, aunque tome el curso de docker sentí que solo seguí pasos en forma automática,