sql >> Base de Datos >  >> RDS >> Database

Introducción a HDFS | ¿Qué es HDFS y cómo funciona?

La técnica central de almacenar archivos en el almacenamiento radica en el sistema de archivos que utiliza el entorno operativo. A diferencia de los sistemas de archivos comunes, Hadoop utiliza un sistema de archivos diferente que se ocupa de grandes conjuntos de datos en una red distribuida. Se llama Sistema de archivos distribuidos de Hadoop (HDFS) . Este artículo presenta la idea, con información básica relacionada para empezar.

¿Qué es un sistema de archivos?

Un sistema de archivos normalmente es un método y una estructura de datos que utiliza el sistema operativo para administrar archivos en un disco o partición. Desde la perspectiva de un disco magnético, cada dato es una carga almacenada en sectores a través de pistas. Piense en las pistas como filas en espiral y en los sectores como pequeñas celdas a lo largo de las pistas en espiral. Ahora bien, si solicitamos al disco que localice algunos datos, en el mejor de los casos puede redirigir su cabeza a algunos sectores de la secuencia en espiral. Estos datos sin procesar no son significativos a menos que el sistema operativo entre en escena; se encarga de delimitar la información de un conjunto de sectores para ser reconocida como un archivo. Un sistema operativo organiza la información en una estructura de datos de contabilidad llamada sistema de archivos. Esta estructura define el patrón de contabilidad. Pero, hay alguna diferencia técnica sobre cómo los sistemas operativos administran esta estructura. Por ejemplo, Windows usa el modelo FAT32, NTFS, Linux usa EXT2, EXT3, etc. Pero, la idea básica es que todos organizan los datos de acuerdo con alguna estructura definida.

La organización del sistema de archivos es principalmente responsable de administrar la creación, modificación y eliminación de archivos (los directorios también son archivos), la partición del disco, el tamaño de los archivos, etc., y operan directamente en los sectores sin formato de un disco o partición.

Archivos en un Sistema Distribuido

Las características de un sistema distribuido son diferentes en el sentido de que el almacenamiento se distribuye entre varias máquinas en una red. Un solo repositorio no puede contener una cantidad tan grande de datos. Si una sola máquina tiene una capacidad de almacenamiento y una potencia de procesamiento limitadas, pero cuando el trabajo de procesamiento y el almacenamiento se distribuyen entre las máquinas de la red, la potencia y la eficiencia se multiplican. Esto no solo abre la posibilidad de una amplia potencia de procesamiento, sino que también aprovecha el uso de la infraestructura existente. Este resultado es que se minimiza el costo, pero se incrementa la eficiencia. Cada una de las máquinas de la red se convierte en un caballo de batalla potencial que alberga datos limitados y, en conjunto, forma parte de un almacenamiento ilimitado y una amplia capacidad de procesamiento. La compensación es la complejidad. Si eso se puede aprovechar con técnicas innovadoras, un sistema distribuido es excelente para lidiar con los problemas de big data. El sistema de archivos HDFS tiene como objetivo lograr eso. De hecho, más allá de HDFS, hay muchos otros sistemas de archivos distribuidos similares, como GPFS (General Parallel File System) de IBM, Ceph (enlace de Wikipedia:lista de sistemas de archivos distribuidos) y similares. Todos intentan abordar este problema desde varias direcciones con diferentes tasas de éxito.

Descripción general de HDFS

El sistema de archivos normal fue diseñado para funcionar en una sola máquina o en un solo entorno operativo. Los conjuntos de datos en Hadoop requieren una capacidad de almacenamiento superior a la que puede proporcionar una sola máquina física. Por lo tanto, se vuelve imperativo particionar los datos en varias máquinas. Esto requiere un proceso especial para administrar los archivos a través de la red distribuida. HDFS es el sistema de archivos que aborda específicamente este problema. Este sistema de archivos es más complejo que un sistema de archivos normal porque tiene que lidiar con la programación de red, la fragmentación, la tolerancia a fallas, la compatibilidad con el sistema de archivos local, etc. Habilita a Hadoop para ejecutar aplicaciones de Big Data en múltiples servidores. Se caracteriza por ser altamente tolerante a fallas con un alto rendimiento de datos en hardware de bajo costo. El objetivo del sistema de archivos HDFS es el siguiente:

  • Para manejar archivos muy grandes
  • El acceso de transmisión de datos al sistema de archivos debe aprovechar un patrón de escritura única y lectura múltiple.
  • Ejecutar en hardware básico económico
  • Debe aprovechar el acceso a datos de baja latencia.
  • Admite una gran cantidad de archivos
  • Admite múltiples escritores de archivos con modificación arbitraria de archivos

Conceptos básicos de HDFS

La cantidad más pequeña de datos que se lee y escribe en un disco tiene algo llamado tamaño de bloque . Por lo general, el tamaño de este bloque es de 512 bytes y los bloques del sistema de archivos son de unos pocos kilobytes. HDFS funciona con el mismo principio, pero el tamaño del bloque es mucho mayor. El tamaño de bloque más grande aprovecha la búsqueda al minimizar las búsquedas y, por lo tanto, el costo. Estos bloques se distribuyen a lo largo de algo llamado clusters , que no son más que bloques y copias de bloques en diferentes servidores de la red. Los archivos individuales se replican en los servidores del clúster.

Hay dos tipos de nodos que operan en el clúster en un patrón maestro-esclavo. El nodo maestro se llama namenodes y el nodo trabajador se llama datanodes . Es a través de estos nodos que HDFS mantiene el árbol del sistema de archivos (y directorios) y los metadatos. De hecho, un archivo se divide en bloques y se almacena en un subconjunto de nodos de datos para extenderse por el clúster. El nodo de datos es responsable de las solicitudes de lectura, escritura, creación de bloques, eliminación y replicación en el sistema de archivos.

Los nodos de nombre , por otro lado, son servidores que monitorean el acceso al sistema de archivos y mantienen archivos de datos en el HDFS. Asignan bloques al nodo de datos y manejan las solicitudes de apertura, cierre y cambio de nombre de archivos/directorios.

Nodos de datos son la parte central del sistema de archivos y hacen el trabajo de almacenamiento y recuperación de solicitudes de bloque del cliente. Nodo de nombre es el mantenedor a quien datanodes reporte. Esto significa que si se borran los namenodes, la información sobre los archivos se perdería. Por lo tanto, Hadoop se asegura de que el nodo de nombre sea lo suficientemente resistente para resistir cualquier tipo de falla. Una técnica para asegurarse de eso es hacer una copia de seguridad en un namenode secundario fusionando periódicamente la imagen del espacio de nombres con el registro de edición. El nodo de nombre secundario generalmente reside en una máquina separada para tomar el control como el namenode principal en caso de una falla mayor.

Hay muchas formas de interactuar con el sistema de archivos HDFS, pero la interfaz de línea de comandos es quizás la más simple y común. Hadoop se puede instalar en una máquina y ejecutar para probarlo de primera mano. lo cubriremos en artículos posteriores, así que permanezca atento.

Operaciones del sistema de archivos

Las operaciones del sistema de archivos HDFS son bastante similares a las operaciones normales del sistema de archivos. Aquí hay algunos listados solo para dar una idea.

Copia archivos del sistema de archivos local a HDFS:

% hadoop fs -copyFromLocal docs/sales.txt hdfs://localhost/
   user/mano/sales.txt

Crea un directorio en HDFS:

% hadoop fs -mkdir students

Enumera archivos y directorios en el directorio de trabajo actual en HDFS:

% hadoop fs -ls .

Conclusión

HDFS es una implementación de lo que hace un sistema de archivos representado por la abstracción de Hadoop. Hadoop está escrito en Java; por lo tanto, todas las interacciones del sistema de archivos se interceden a través de la API de Java. La interfaz de línea de comandos es un shell proporcionado para interacciones comunes. El estudio de HDFS abre un horizonte diferente al sector de la arquitectura distribuida y sus intrincados procedimientos de trabajo. Se está trabajando mucho para perfeccionar este modelo de computación, cuyo impulso sin duda ha sido el Big Data en los últimos años.

Referencia

Documentación de arquitectura HDFS