Qué vas a hacer
Hadoop guarda un archivo muy grande cortándolo en bloques y repartiéndolos entre muchas máquinas, y lo procesa allí donde están los bloques. HDFS es el sistema de archivos: un NameNode que sabe qué bloques forman cada archivo y varios DataNodes que los guardan. MapReduce es la forma de procesar: cada máquina cuenta su propia parte y después se suman los resultados. Tu laboratorio es un clúster pequeño con uno de cada. Vas a subir un archivo, a leerlo de vuelta y a mirar un recuento de palabras.
Antes de empezar
Nota
Pulsa Iniciar el laboratorio en la barra de la parte superior de esta lección y espera a que diga que está en marcha. Los servicios son namenode, datanode, resourcemanager, nodemanager y client, y se encuentran unos a otros por esos nombres. Cada botón Ejecutar de abajo escribe su comando en el terminal de tu laboratorio, uno detrás de otro y en la misma sesión. Para verlos, o para escribir los tuyos, pulsa Abrir el terminal (pestaña nueva) en la barra.
1. Sube un archivo a HDFS
El primer comando escribe una frase en un archivo de tu propio terminal. El segundo lo envía a HDFS: se lo pide al NameNode, que responde con la dirección de un DataNode, y curl la sigue gracias a la opción -L y envía allí los bytes. No imprime nada si todo va bien. La carpeta /user/lab/mine no existía, así que HDFS la creó.
echo 'one fish two fish red fish blue fish' > /tmp/fish.txtSe muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
curl -s -L -X PUT -T /tmp/fish.txt 'http://namenode:9870/webhdfs/v1/user/lab/mine/fish.txt?op=CREATE&user.name=lab'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
2. Enuméralo y léelo de vuelta
El primer comando enumera la carpeta: la respuesta es JSON, y para fish.txt dice "length":37 (la frase y el final de línea) y "replication":1, una copia de cada bloque, porque este clúster tiene un solo DataNode. El segundo lee el archivo y imprime la frase. El mismo archivo aparece en la página del NameNode, en tu navegador, en Utilities y después Browse the file system (explorar el sistema de archivos).
curl -s 'http://namenode:9870/webhdfs/v1/user/lab/mine?op=LISTSTATUS'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
curl -s -L 'http://namenode:9870/webhdfs/v1/user/lab/mine/fish.txt?op=OPEN'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
3. Lee el recuento de palabras
Cuando arrancó el laboratorio, el clúster ejecutó el recuento de palabras de Hadoop sobre una frase de ejemplo y dejó el resultado en HDFS. El primer comando lo imprime, una línea por cada palabra con su recuento: the es 4, dog y fox son 2. El segundo le pregunta al ResourceManager cómo fue el trabajo e imprime "finalStatus":"SUCCEEDED". Tu terminal no tiene el comando hadoop, así que no puede empezar un recuento de tu propio archivo: esta lección lee el recuento que el laboratorio ya hizo.
curl -s -L 'http://namenode:9870/webhdfs/v1/user/lab/wordcount-out/part-r-00000?op=OPEN'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
curl -s http://resourcemanager:8088/ws/v1/cluster/apps | grep -o '"finalStatus":"[A-Z]*"'Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.
Para el profesorado
Consejo
Esta lección es un pequeño ejemplo de una lección practicada en un laboratorio: los pasos y los botones Ejecutar son la lección, y el laboratorio es la copia propia de cada alumno. El laboratorio son cinco servicios y ningún volumen, y nada de lo que hay aquí se corrige solo: el alumno entrega la ruta de un archivo que ha subido a HDFS, las líneas del recuento de palabras hecho con él y una frase sobre lo que hace cada uno, el NameNode y el DataNode. Cada alumno elige su propio texto, así que las respuestas son distintas. Cópiela en su propio módulo y modifíquela, o cree una desde cero con el menú Laboratorio del constructor de lecciones.