Comparación de Hadoop y los sistemas de archivos Ceph

Completado

Ahora se resume1 las principales diferencias entre HDFS y Ceph.

  • Diferencias de arquitectura: HDFS sigue el modelo de colocación del proceso y el almacenamiento. Los DataNodes de HDFS suelen convivir con los nodos de MapReduce, y la idea clave tras el modelo es llevar el cálculo a los datos. Ceph está diseñado como servicio de almacenamiento independiente, aunque los OSD que almacenan datos en Ceph podrían convivir con los nodos de MapReduce.
  • Compatibilidad: los clientes de HDFS deben implementarse mediante alguna de las API. HDFS no se ha diseñado como sistema de archivos POSIX ni admite parte de la semántica de POSIX (por ejemplo, la apertura de archivos existentes para escritura). Existen soluciones alternativas, como un controlador FUSE, que permiten montar HDFS. Pero la mayoría de las aplicaciones tienen que volver a implementarse con un cliente de HDFS si todavía no admiten la solución alternativa. Ceph, por otro lado, expone varias API, incluido el controlador de Ceph FS compatible con POSIX, lo que facilita su integración con aplicaciones existentes si se compara con HDFS.
  • Distribución de datos: los NameNodes de HDFS exponen la ubicación física de los bloques a las aplicaciones cliente, que pueden usar esta información para mejorar potencialmente la localidad de los accesos a datos. Ceph es similar, los servidores de metadatos siempre exponen la ubicación del objeto de datos al cliente cuando se realiza una solicitud de datos.
  • Compatibilidad con archivos pequeños: HDFS carece de compatibilidad con los archivos pequeños porque está optimizado para grandes tamaños de bloque (de forma predeterminada, 64 MB). En Ceph, la anchura de sección suele andar en el orden de los kilobytes, lo que lo convierte en un sistema más de uso general que HDFS.
  • Escrituras simultáneas: HDFS es un modelo de una sola escritura que únicamente permite a un archivo escribir en un archivo cada vez. Ceph admite varias escrituras simultáneas y, por tanto, es el más flexible de los dos sistemas de archivos.
  • Modelo de coherencia: HDFS garantiza la coherencia mediante la restricción de las escrituras a un solo cliente y no permite actualizaciones de archivos, mientras que Ceph puede garantizar la coherencia secuencial, salvo en situaciones excepcionales que implican una partición de red de algunos de los OSD.
  • Almacenamiento en caché: HDFS admite el almacenamiento en caché de lectura anticipada en el cliente por medio del modelo de transmisión. Los clientes de Ceph pueden tener cachés de lectura y búferes de escritura únicamente si el servidor de metadatos le ha proporcionado al cliente una concesión (cuando el cliente tiene acceso exclusivo a un archivo). Cuando varios clientes acceden al mismo archivo en Ceph, estas concesiones se revocan, lo que obliga a que la E/S sea sincrónica para poder administrar la coherencia.
  • Tolerancia a errores: HDFS está diseñado para la tolerancia a errores con compatibilidad integrada con la replicación en el nivel de bloque y tiene reconocimiento de bastidores, aunque el NameNode es un único punto de error en HDFS. Por otro lado, Ceph es bastante sólido, ya que usa complejos protocolos de punto a punto para garantizar que es bastante tolerante a errores. La recuperación de errores en Ceph también es bastante rápida debido a la presencia de registros de escritura que se pueden reproducir para poner un nodo en marcha.

Referencias

  1. Maltzahn, C., Molina-Estolano, E., Khurana, A., Nelson, A. J., Brandt, S. A. y Weil, S. (2010). Ceph como una alternativa escalable al sistema de archivos distribuido de Hadoop USENIX Magazine vol. 35