Red de conocimiento informático - Aprendizaje de código fuente - ¿Cuál es la diferencia entre los sistemas de archivos y el almacenamiento de objetos OpenStack?

¿Cuál es la diferencia entre los sistemas de archivos y el almacenamiento de objetos OpenStack?

Aunque existen algunas similitudes entre HDFS y Openstack Object Storage (Swift), el diseño general de los dos sistemas es bastante diferente.

1. HDFS utiliza un sistema central para mantener los metadatos de los archivos (Namenode, nodo de nombre), mientras que en Swift, los metadatos se distribuyen y replican entre clústeres. El uso de un sistema de metadatos central equivale a un único punto de falla para HDFS, lo que dificulta la ampliación a entornos muy grandes.

2. Swift se diseñó teniendo en cuenta la arquitectura multiinquilino, mientras que HDFS no tiene el concepto de arquitectura multiinquilino.

3. HDFS está optimizado para archivos más grandes (esto es lo que suele ocurrir cuando se procesan datos) y Swift está diseñado para almacenar archivos de cualquier tamaño.

4. En HDFS, un archivo se escribe una vez y solo se puede escribir un archivo a la vez; en Swift, un archivo se puede escribir varias veces en un entorno de operación concurrente; prevalecerá la operación.

5. HDFS está escrito en Java, mientras que Swift está escrito en Python.

Además, HDFS está diseñado para almacenar una cantidad moderada de archivos grandes para admitir el procesamiento de datos, mientras que Swift está diseñado para ser una solución de almacenamiento más general que puede almacenar de manera confiable una gran cantidad de archivos. tamaños variables.

La respuesta en segundo lugar proviene de Joshua McKenty, arquitecto jefe del proyecto de computación en la nube Nebula de la NASA, uno de los primeros desarrolladores del software OpenStack Nova y actualmente miembro de la gobernanza del proyecto OpenStack. comité También es el fundador de Piston.cc, una empresa con sede en OpenStack.

Chuck acaba de presentar las diferencias técnicas entre los dos en detalle, pero no discutió la posible integración de los dos. El tema de la integración se planteó en la OpenStack Design Summit. En resumen, HDFS está diseñado para utilizar Hadoop para implementar el procesamiento MapReduce en todos los objetos del entorno de almacenamiento. Para muchas empresas de OpenStack (incluida la mía), admitir el procesamiento en Swift es un objetivo en la hoja de ruta, pero no todos piensan que MapReduce es la respuesta.

Hemos discutido la escritura de un contenedor para HDFS que admitirá la interfaz de programación de aplicaciones (API) de almacenamiento interno de OpenStack y permitirá a los usuarios realizar consultas de Hadoop en estos datos. Otra forma es utilizar HDFS en Swift. Pero ninguno de estos métodos parece ideal.

La comunidad OpenStack también está llevando a cabo algunos trabajos de investigación y desarrollo, y está estudiando cuidadosamente otros frameworks alternativos de MapReduce (Riak, CouchDB, etc.).

Finalmente, existen otros proyectos de almacenamiento que actualmente están "afiliados" a la comunidad OpenStack (SheepDog y HC2). Aprovechar la localidad de los datos y hacer que el almacenamiento de objetos sea "más inteligente" es un área en la que se esperan avances.