La principal característica de uno de estos sistemas es su adaptación a contextos en los que contamos con un conjunto de múltiples máquinas (cluster) que se van a repartir las tareas tanto de almacenamiento como de procesamiento de los datos. En un sistema de ficheros distribuidos, los ficheros se guardan "partidos" en trozos (chunks) de los que se guardan varias réplicas a lo largo de las máquinas que componen el cluster. Esta redundancia de datos es lo que le permite al sistema aumentar su tolerancia a fallos ya que, al tener gran cantidad de máquinas, la probabilidad de que una cualquiera de ellas falle en un momento dado no es un factor despreciable, y por tanto la existencia de esas réplicas asegura la disponibilidad de los datos en todo momento.
Otra característica importante es que las máquinas no son meros almacenes de datos, a la espera de que estos sean enviados a algún nodo central donde ser procesados, sino que a su vez se convierten en "centros de proceso" de las tareas que sean necesarias sobre los datos que almacenan. De alguna manera podríamos decir que los sistemas de ficheros distribuidos le dan la vuelta al planteamiento y consiguen que "Mahoma vaya a la montaña" (la tarea, procesamiento o cómputo a realizar se "acerca" a los datos), ya que lo contrario supondría muchísimo tiempo perdido en las tareas de transmisión de datos, sobre todo teniendo en cuenta que hablamos de contextos con enormes cantidades de los mismos.
De esta manera, los elementos que gestionan el funcionamiento de todo el framework (el nodo maestro del sistema de ficheros distribuidos que tiene la información de dónde están qué datos, el programador de tareas para indicar dónde se ejecutarán qué tareas, ...) resuelven toda la "magia" por debajo de un programa MapReduce. Así, por ejemplo, las tareas Map (que se lanzarán en paralelo para trabajar con todos los trozos de datos al mismo tiempo) le serán encargadas a cada máquina sobre su porción de datos en particular. El momento donde sí habrá un cierto "trasiego de datos" será el paso intermedio entre la finalización de esas tareas Map (que guardarán sus resultados en el nodo donde se han ejecutado) y el inicio de las tareas Reduce, ya que para que éstas puedan iniciar su trabajo es necesario concentrar en el mismo nodo aquellos datos generados en el paso anterior que ahora deban ser procesados conjuntamente (es decir, los que compartan clave).
Otra característica importante es que las máquinas no son meros almacenes de datos, a la espera de que estos sean enviados a algún nodo central donde ser procesados, sino que a su vez se convierten en "centros de proceso" de las tareas que sean necesarias sobre los datos que almacenan. De alguna manera podríamos decir que los sistemas de ficheros distribuidos le dan la vuelta al planteamiento y consiguen que "Mahoma vaya a la montaña" (la tarea, procesamiento o cómputo a realizar se "acerca" a los datos), ya que lo contrario supondría muchísimo tiempo perdido en las tareas de transmisión de datos, sobre todo teniendo en cuenta que hablamos de contextos con enormes cantidades de los mismos.
De esta manera, los elementos que gestionan el funcionamiento de todo el framework (el nodo maestro del sistema de ficheros distribuidos que tiene la información de dónde están qué datos, el programador de tareas para indicar dónde se ejecutarán qué tareas, ...) resuelven toda la "magia" por debajo de un programa MapReduce. Así, por ejemplo, las tareas Map (que se lanzarán en paralelo para trabajar con todos los trozos de datos al mismo tiempo) le serán encargadas a cada máquina sobre su porción de datos en particular. El momento donde sí habrá un cierto "trasiego de datos" será el paso intermedio entre la finalización de esas tareas Map (que guardarán sus resultados en el nodo donde se han ejecutado) y el inicio de las tareas Reduce, ya que para que éstas puedan iniciar su trabajo es necesario concentrar en el mismo nodo aquellos datos generados en el paso anterior que ahora deban ser procesados conjuntamente (es decir, los que compartan clave).
No hay comentarios:
Publicar un comentario