Dice el enunciado que nuestro proceso Nodo conoce un «espacio de datos». Este espacio está a disposición del proceso FileSystem MDFS dividido en unidades de 20MB (bloques).
Abran mientras la página 18 del enunciado
Esto quiere decir que si uno mirara dentro de este archivo un byte al lado del otro y si observara en detalle vería fragmentos de archivos de 20 MBs uno a continuación del otro.
Supongamos, para ejemplificar, bloques de 34 caracteres. Este caso entonces se vería asi:
Esta frase es ejemplo de un bloqueFrase al comienzo de otro bloque dLorem ipsum dolor sit amet, consec
Como se ve no hay una marca de comienzo o fin ni información de administración guardada. Todo lo referido a la gestión lo debe saber y almacenar el FileSystem MDFS
Volviendo al caso del Nodo (y sus bloques de 20MB), si este proceso recibiera la solicitud de enviar el bloque 4 entonces lo que debe hacer es devolver 20 MB comenzando desde el byte 4 * BLOCK_SIZE, siendo BLOCK_SIZE=1024 * 1024 * 20 (20MB)
0 20MB 40MB 60MB 80MB 100MB ...etc |-------|-------|-------|-------|-------|-------|-- |bloque0|bloque1|bloque2|bloque3|bloque4|bloque5|--
Lo mismo para almacenar. Como dijimos, la unidad que procesa el Nodo es el bloque. Entonces puede recibir 20 MB para ser almacenados y el número de bloque. Deberá ubicarse en la posición correspondiente y escribir los datos recibidos.
Bueno, bien, por ahora esto es todo!
En el próximo post vamos a contar como enviar, dada una solicitud de un Job el contenido del bloque a un mapper por entrada estándar (STDIN).
De mientras pueden mirar este post de Mati: https://gist.github.com/mgarciaisaia/5893b74b80ae07b24d69