sql >> Base de Datos >  >> NoSQL >> HBase

Tutorial de HDFS:una introducción completa a HDFS para principiantes

¿Quiere saber cómo Hadoop almacena cantidades masivas de datos de manera confiable y tolerante a fallas?

En este tutorial de HDFS, analizaremos uno de los componentes principales de Hadoop, es decir, el sistema de archivos distribuidos de Hadoop (HDFS).

Primero, veremos una introducción a Distributed FileSystem. Luego estudiaremos el sistema de archivos distribuido de Hadoop. El artículo explica el motivo del uso de HDFS, la arquitectura HDFS y los bloques en HDFS.

El artículo también enumera algunas de las características de Hadoop HDFS. Además, conocerá los mensajes de latidos en Hadoop HDFS.

Este tutorial de HDFS proporciona la guía introductoria completa para el almacenamiento Hadoop HDFS más confiable.

Comencemos primero con una introducción a Distributed FileSystem.

Sistema de archivos distribuido

Cuando el conjunto de datos excede la capacidad de almacenamiento de una sola máquina, entonces es obligatorio particionar el conjunto de datos en varias máquinas separadas. El sistema de archivos que administra los datos a través de la red de máquinas se denomina sistema de archivos distribuido. .

Un sistema de archivos distribuido es un sistema de archivos que nos permite almacenar datos en varias máquinas o nodos en un clúster y permite que varios usuarios accedan a los datos.

Dado que el DFS se basa en la red, todas las complicaciones de la programación en red se activan, lo que hace que un sistema de archivos distribuido sea más complejo que el sistema de archivos normal. Uno de los mayores desafíos en DFS es tolerar la falla del nodo sin sufrir pérdida de datos.

Hadoop viene con un sistema de archivos distribuido llamado Hadoop Distributed Filesystem para almacenar grandes cantidades de datos mientras proporciona tolerancia a fallas y alta disponibilidad.

¿Curioso por saber HDFS? Así que ahora, comencemos con el tutorial de HDFS.

Tutorial de HDFS:introducción

Hadoop Distributed FileSystem (HDFS) es un sistema de archivos distribuido basado en Java que se utiliza en Hadoop para almacenar una gran cantidad de datos estructurados o no estructurados, que varían en tamaño desde GigaBytes hasta PetaBytes, en un grupo de hardware básico. Es el almacenamiento más fiable conocido hasta la fecha en el planeta.

En HDFS, los datos se almacenan en varias ubicaciones, por lo que si alguna de las máquinas falla, los datos se pueden obtener de otra máquina que contenga la copia de los datos. Por lo tanto, es altamente tolerante a fallas y garantiza que no se pierdan datos, incluso en caso de falla del hardware.

Es el componente principal de Hadoop, junto con MapReduce, YARN y otras utilidades comunes.

Sigue un Write-Once-Read-Many filosofía que simplifica la coherencia de datos y permite un acceso de alto rendimiento.

¿Por qué HDFS?

En el mundo de TI actual, casi el 75 % de los datos del mundo residen en Hadoop HDFS. Se debe a la siguiente razón:

  • HDFS almacena datos en el hardware básico, por lo que no se necesitan máquinas de alta gama para almacenar big data. Por lo tanto, proporciona un almacenamiento económico para almacenar grandes datos.
  • HDFS sigue el patrón de procesamiento de datos más eficiente que es el patrón Write-Once-Read-Many-Times. Se copia un conjunto de datos generado a partir de varias fuentes y luego se realizan varios análisis en ese conjunto de datos a lo largo del tiempo. Por lo tanto, es mejor para el procesamiento por lotes.
  • HDFS puede almacenar datos de cualquier tamaño generados desde cualquier fuente en cualquier formato, ya sea estructurado o no estructurado.
  • Su modelo de escribir uno leer muchos relaja los requisitos de control de concurrencia. Se puede acceder a los datos varias veces sin ningún problema con respecto a la coherencia de los datos.
  • HDFS funciona con la suposición de la localidad de datos de que mover la computación a los datos es mucho más fácil y rápido que mover los datos a la unidad computacional. HDFS facilita la ubicación de la lógica de procesamiento cerca de los datos en lugar de moverlos al espacio de la aplicación. Por lo tanto, esto reduce la congestión de la red y el tiempo de respuesta general.

Entonces, avanzando en este tutorial de HDFS, saltemos a la arquitectura HDFS.

Arquitectura HDFS

Hadoop DFS sigue maestro-esclavo arquitectura. El HDFS consta de dos tipos de nodos que son el nodo maestro y los nodos esclavos. El nodo maestro administra el espacio de nombres del sistema de archivos, es decir, almacena los metadatos sobre los bloques de archivos.

Los nodos esclavos almacenan los datos del usuario y son responsables de procesar los datos según las instrucciones del nodo maestro.

Maestro HDFS

Master in HDFS es la pieza central de Hadoop HDFS. Son las máquinas de gama alta que almacenan metadatos relacionados con todos los archivos almacenados en HDFS. Administra y mantiene el espacio de nombres del sistema de archivos y proporciona instrucciones a los nodos esclavos.

El nodo de nombre es el nodo maestro en Hadoop HDFS.

Esclavo HDFS

Los nodos esclavos son responsables de almacenar los datos comerciales reales. Son las máquinas de configuración normales (hardware básico) que almacenan y procesan los conjuntos de datos según las instrucciones del nodo maestro.

Los nodos de datos son los nodos esclavos en Hadoop HDFS.

Nodo de nombre HDFS

NameNode es el nodo maestro. Administra operaciones de espacio de nombres del sistema de archivos como abrir/cerrar, renombrar archivos y directorios. NameNode asigna bloques de datos a DataNodes y registra cada cambio realizado en el espacio de nombres del sistema de archivos.

Nodo de datos HDFS

Los DataNodes son los nodos esclavos que manejan las solicitudes de lectura/escritura de los clientes HDFS. DataNodes crea, elimina y replica bloques de datos según las instrucciones del nodo de nombre rector.

¿Se pregunta cómo se almacenan los datos en HDFS?

Bloques en HDFS

HDFS divide los archivos en fragmentos del tamaño de un bloque llamados bloques de datos. Estos bloques se almacenan en múltiples DataNodes en el clúster. El tamaño de bloque predeterminado es de 128 MB. Podemos configurar el tamaño de bloque predeterminado, dependiendo de la configuración del clúster.

Para el clúster con máquinas de gama alta, el tamaño del bloque se puede mantener grande (como 256 Mb o más). Para el clúster con máquinas que tienen una configuración como 8 Gb de RAM, el tamaño del bloque se puede mantener más pequeño (como 64 Mb).

Además, HDFS crea réplicas de bloques en función del factor de replicación (un número que define el total de copias de un bloque de un archivo). De forma predeterminada, el factor de replicación es 3. Significa que se crean y almacenan 3 copias de cada bloque en varios nodos.

Si alguno de los DataNode falla, el bloque se obtiene de otro DataNode que contiene una réplica de un bloque. Esto hace que HDFS tenga tolerancia a fallas.

¿Ha pensado cómo NameNode descubre la falla de DataNode?

Error de nodo de datos

Todos los DataNodes en Hadoop HDFS envían continuamente un pequeño mensaje de latido (señales) a NameNode para decir "Estoy vivo" cada 3 segundos.

Si NameNode no recibe un mensaje de latido de ningún DataNode en particular durante más de 10 minutos, entonces considera que DataNode está inactivo y comienza a crear una réplica de los bloques que estaban disponibles en ese DataNode.

NameNode instruye a los DataNodes que contienen una copia de esos datos para replicar esos datos en otros DataNodes para equilibrar la replicación. De esta forma, NameNode descubre la falla de DataNode.

¿Quiere saber cómo NameNode coloca réplicas en diferentes DataNode? Exploremos el reconocimiento de racks en HDFS para obtener una respuesta a la pregunta anterior.

Reconocimiento de racks en HDFS

Hadoop HDFS almacena datos en el clúster de hardware básico. Para proporcionar tolerancia a fallas, se crean y almacenan réplicas de bloques en diferentes DataNodes.

NameNode coloca las réplicas de los bloques en múltiples DataNodes siguiendo el algoritmo Rack Awareness para garantizar que no se pierdan datos, incluso si DataNode o todo el rack deja de funcionar. El NameNode coloca la primera réplica en el DataNode más cercano.

Almacena la segunda réplica en un DataNode diferente en el mismo rack y la tercera réplica en un DataNode diferente en un rack diferente.

Si el factor de replicación es 2, coloca la segunda réplica en un DataNode diferente en un rack diferente, de modo que si un rack completo deja de funcionar, el sistema también estará altamente disponible.

El objetivo principal de una política de colocación de réplicas con reconocimiento de bastidores es mejorar la tolerancia a fallas, la confiabilidad de los datos y la disponibilidad.

A continuación, en el tutorial de HDFS, analizamos algunas funciones clave de Hadoop HDFS.

Características importantes de Hadoop HDFS

1. Alta disponibilidad

Es un sistema de archivos de alta disponibilidad. En este sistema de archivos, los datos se replican entre los nodos del clúster de Hadoop mediante la creación de una réplica de los bloques en los otros esclavos presentes en el clúster de HDFS. Entonces, cada vez que un usuario quiera acceder a estos datos, puede acceder a sus datos desde los esclavos, que contienen sus bloques.

2. Tolerancia a fallas

La tolerancia a fallas en Hadoop HDFS es la fuerza de trabajo de un sistema en condiciones desfavorables. Es altamente tolerante a fallas. El marco Hadoop divide los datos en bloques.

Después de eso, crea varias copias de bloques en diferentes máquinas del clúster. Entonces, cuando cualquier máquina en el clúster deja de funcionar, un cliente puede acceder fácilmente a sus datos desde la otra máquina, que contiene la misma copia de bloques de datos.

3. Alta confiabilidad

HDFS proporciona un almacenamiento de datos confiable. Puede almacenar datos en el rango de cientos de petabytes. HDFS almacena datos de manera confiable en un clúster. Divide los datos en bloques. Luego, el marco Hadoop almacena estos bloques en los nodos presentes en el clúster.

HDFS también almacena datos de manera confiable mediante la creación de una réplica de todos y cada uno de los bloques presentes en el clúster. Por lo tanto, proporciona facilidad de tolerancia a fallas.

4. Replicación

La replicación de datos es una característica única de HDFS. La replicación resuelve el problema de la pérdida de datos en condiciones desfavorables, como fallas de hardware, bloqueo de nodos, etc. HDFS mantiene el proceso de replicación en un intervalo de tiempo regular.

También sigue creando réplicas de datos de usuario en diferentes máquinas presentes en el clúster. Entonces, cuando cualquier nodo se cae, el usuario puede acceder a los datos de otras máquinas. Por lo tanto, no hay posibilidad de pérdida de datos de usuario.

5. Escalabilidad

Almacena datos en múltiples nodos en el clúster. Por lo tanto, cada vez que aumentan los requisitos, puede escalar el clúster. Hay dos mecanismos de escalabilidad disponibles en HDFS:escalabilidad vertical y horizontal.

6. Almacenamiento Distribuido

Las características de HDFS se logran a través del almacenamiento distribuido y la replicación. Almacena datos de manera distribuida entre los nodos. En Hadoop, los datos se dividen en bloques y se almacenan en los nodos presentes en el clúster.

Después de eso, crea la réplica de todos y cada uno de los bloques y los almacena en otros nodos. Cuando la única máquina en el clúster falla, podemos acceder fácilmente a nuestros datos desde los otros nodos que contienen su réplica.

A continuación, en el tutorial de HDFS, analizamos algunas operaciones útiles de HDFS.

Operación HDFS

Hadoop HDFS tiene muchas similitudes con el sistema de archivos de Linux. Podemos hacer casi todas las operaciones que podemos hacer con un sistema de archivos local, como crear un directorio, copiar el archivo, cambiar permisos, etc.

También proporciona diferentes derechos de acceso como lectura, escritura y ejecución a usuarios, grupos y otros.

1. Operación de lectura

Cuando el cliente de HDFS quiere leer cualquier archivo de HDFS, primero interactúa con NameNode. NameNode es el único lugar que almacena metadatos. NameNode especifica la dirección de los esclavos donde se almacenan los datos. Luego, el cliente interactúa con los DataNodes especificados y lee los datos desde allí.

El cliente HDFS interactúa con la API del sistema de archivos distribuido. Luego, envía una solicitud a NameNode para enviar una ubicación de bloque. NameNode primero verifica si el cliente tiene suficientes privilegios para acceder a los datos o no. Después de eso, NameNode compartirá la dirección en la que se almacenan los datos en DataNode.

NameNode proporciona un token al cliente, que muestra al DataNode para leer el archivo por motivos de seguridad. Cuando un cliente va a DataNode para leer el archivo, después de verificar el token, DataNode le permite al cliente leer ese bloque en particular.

Después de que el cliente abra el flujo de entrada y comience a leer datos de los DataNodes especificados. Así, de esta manera, el cliente lee los datos directamente desde DataNode.

2. Operación de escritura

Para escribir un archivo, el cliente primero interactúa con NameNode. HDFS NameNode proporciona la dirección del DataNode en el que el cliente debe escribir los datos.

Cuando el cliente termina de escribir el bloque, el DataNode comienza a replicar el bloque en otro DataNode. Luego copia el bloque al tercer DataNode. Una vez que crea la replicación requerida, envía un reconocimiento final al cliente. La autenticación es la misma que la operación de lectura.

El cliente solo envía 1 copia de datos independientemente de nuestro factor de replicación, mientras que los DataNodes replican los bloques. Escribir un archivo no es costoso porque escribe varios bloques en paralelo, varios bloques en varios nodos de datos.

Resumen

En la conclusión del tutorial de HDFS, podemos decir que Hadoop HDFS almacena datos de forma distribuida en todo el clúster de hardware básico.

Hadoop HDFS es un sistema de almacenamiento altamente confiable, tolerante a fallas y altamente disponible conocido hasta la fecha. Sigue la arquitectura maestro-esclavo donde NameNode es el nodo maestro y DataNodes son los nodos esclavos.

Además, el HDFS divide el archivo de entrada del cliente en bloques de 128 MB de tamaño, que podemos configurar según nuestros requisitos. También almacena réplicas de bloques para proporcionar tolerancia a fallas.

NameNode sigue la política de reconocimiento de racks para colocar réplicas en DataNode para garantizar que no se pierdan datos durante una falla de la máquina o del hardware. Además, los DataNodes envían un mensaje de latido a NameNode para asegurarse de que están activos.

Durante la lectura o escritura de archivos, el cliente primero interactúa con NameNode.

El Hadoop HDFS es un sistema de almacenamiento escalable, confiable, distribuido, tolerante a fallas y de alta disponibilidad para almacenar big data.