hadoop hdfs hadoop distributed file system
Este tutorial explica Hadoop HDFS: arquitectura de clúster, componentes y sistema de archivos distribuidos de Hadoop. También aprenderá sobre el algoritmo de reconocimiento de rack:
Como aprendimos en el tutorial anterior, el mayor problema con Big Data es almacenarlo en un sistema existente. E incluso si de alguna manera almacenamos parte de él en un sistema existente, procesar ese BigData llevó años.
Los resultados que deseaba en minutos tomaron semanas o tal vez en meses y debido a eso, el valor de ese resultado se perdió.
=> Mire aquí la serie de capacitación Simple BigData.
Lo que vas a aprender:
Sistema de archivos distribuido Hadoop
Para resolver este problema o hacer frente a este problema, ahora tenemos HADOOP. Hadoop resolvió este problema de big data usando Hadoop HDFS.
Hadoop HDFS resolvió el problema de almacenamiento de Big Data y Reducir mapa de Hadoop resolvió los problemas relacionados con el procesamiento de parte del Big Data.
Ahora, sabemos que Hadoop tiene esencialmente un sistema de archivos distribuido ... PERO ¿POR QUÉ?
herramientas para la implementación continua en devops
¿Por qué Hadoop es un sistema de archivos distribuido?
Intentemos comprender qué es un sistema de archivos distribuido y comprender las ventajas del sistema de archivos distribuido.
Sistema de archivos distribuido
Tomemos un ejemplo de lectura de 1 TB de datos. Tenemos un servidor que es un buen servidor de gama alta que tiene 4 canales de E / S (entrada y salida) y cada canal tiene un ancho de banda de 100 MB / s, utilizando esta máquina, podrá leer estos datos de 1TB en 43 Minutos.
Ahora bien, si traemos 10 números de máquinas exactamente como esta, ¿qué pasará?
Tiempo reducido a exactamente 4,3 minutos. Es porque todo el esfuerzo se dividió en 10 máquinas y es por eso que el tiempo que se tomó para procesar 1 TB de datos se reduce a 1/10.thes decir, 4,3 minutos.
De manera similar, cuando consideramos BigData, esos datos se dividen en varios fragmentos de datos y, de hecho, procesamos esos datos por separado y es por eso que Hadoop ha elegido el Sistema de archivos distribuido en lugar de un Sistema de archivos centralizado.
Componentes de Hadoop
Hadoop HDFS tiene 2 componentes principales para resolver los problemas con BigData.
- El primer componente es Hadoop HDFS para almacenar Big Data.
- El segundo componente es Hadoop Map Reduce to Process Big Data.
Ahora, cuando vemos la arquitectura de Hadoop (imagen dada a continuación), tiene dos alas donde está el ala izquierda. 'Almacenamiento' y la derecha es 'Procesando' . Eso significa que la izquierda es HDFS, es decir, el sistema de archivos de distribución Hadoop y la derecha es YARN y Map Reduce, es decir, es la parte de procesamiento.
Usando HDFS, Hadoop nos permite almacenar Big Data y usando YARN & Map Reduce, Hadoop nos permite procesar los mismos Big Data que estamos almacenando en HDFS.
Como puede ver en la imagen de arriba, HDFS tiene dos demonios principales o puede llamarlos como procesos o subprocesos que no son más que procesos JAVA, es decir, que se ejecutan dentro de una JVM: NameNode y DataNode.
NameNode es un demonio maestro que se ejecuta en la máquina maestra, es decir, una máquina de gama alta esencialmente y DataNode es una máquina esclava que se ejecuta en hardware básico. Puede haber más DataNode ya que las máquinas esclavas son más que una máquina maestra.
Por lo tanto, siempre tenemos un NameNode y varios DataNode ejecutándose en máquinas esclavas.
De manera similar, tenemos YARN en el otro lado que nuevamente tiene dos demonios, uno es el Administrador de recursos que se ejecuta en la Máquina maestra y el Administrador de nodos que se ejecuta en la Máquina esclava al igual que el DataNode. Así que cada máquina esclava tiene dos demonios: uno es el DataNode y el otro es el administrador de nodos.
La máquina maestra tiene NameNode en ejecución y Resource Manager en ejecución. NameNode es responsable de administrar los datos en el sistema de archivos distribuido de Hadoop y el administrador de recursos es responsable de ejecutar las tareas de procesamiento sobre estos datos almacenados.
NameNode y DataNode
Profundizaremos en la arquitectura HDFS y, por lo tanto, es importante comprender qué es un NameNode y un DataNode, ya que estos son los dos demonios principales que realmente ejecutan HDFS por completo.
NameNode
- Es un Master Daemon.
- Administrar y mantener los DataNodes.
- Registra metadatos.
- Recibe informes de latido y bloqueo de todos los DataNodes.
DataNode
- Es un demonio esclavo.
- Los datos reales se almacenan aquí.
- Atiende solicitudes de lectura y escritura de los clientes.
Solo concéntrese en el Diagrama, como puede ver, hay un NameNode de máquina centralizado que está controlando varios DataNode que están allí, es decir, hardware básico. Entonces, Name Node no es más que el Master Daemon que mantiene todos los DataNode.
Estos NameNode tienen toda la información sobre los datos que se almacenan en el DataNode. DataNode, como su propio nombre sugiere, almacena los datos que se encuentran en Hadoop Cluster.
NameNode solo tiene la información sobre qué datos almacenados en qué DataNode. Entonces, lo que podemos decir es que NameNode almacena los metadatos de los datos que se almacenan en los DataNodes.
DataNode también realiza otra tarea, es decir, envía regularmente el latido de regreso al NameNode. Los latidos realmente le dicen al NameNode que este DataNode todavía está vivo.
Por ejemplo, DataNodes envía un latido de regreso al NameNode y de esta manera NameNode tiene la imagen de que estos DataNodes están vivos, por lo que NameNode puede usar estos DataNode para almacenar más datos o leer los datos de estos DataNodes.
Ahora llegamos al DataNode, DataNode no es más que Slave Daemons que en realidad almacena los datos que se envían al Hadoop Cluster. Estos DataNodes son los que realmente sirven la solicitud de lectura y escritura que realizan los clientes.
Si alguien quiere leer los datos del Hadoop Cluster, entonces estas solicitudes son procesadas por los DataNodes donde residen los datos.
Arquitectura de clúster de Hadoop
En el tema anterior relacionado con NameNode y DataNode, usamos el término “Hadoop Cluster”. Echemos un vistazo rápido a qué es exactamente.
La imagen de arriba muestra la descripción general de una arquitectura de clúster de Hadoop. Hadoop Cluster no es más que una topología maestro-esclavo, en la que hay una máquina maestra como puede ver en la parte superior, es decir, Hadoop Cluster. En esta máquina maestra, hay un NameNode y el administrador de recursos ejecutándose, es decir, los demonios maestros.
La máquina maestra está conectada a toda la máquina esclava usando los interruptores centrales, es porque estos DataNodes están almacenados en varios racks, por lo que puede ver Computadora 1, Computadora 2, Computadora 3 hasta Computadora N. Esto no es más que la Esclava Máquinas o DataNodes y todos están presentes en un bastidor.
'El bastidor es en realidad un grupo de máquinas que están presentes físicamente en una ubicación en particular y están conectadas entre sí'.
Por tanto, el ancho de banda de la red entre cada máquina es lo mínimo posible. De manera similar, hay más racks, sin embargo, no están presentes en la misma ubicación, por lo tanto, podemos tener un número 'n' de racks y también podemos tener un número 'n' de DataNodes o computadoras o máquinas esclavas dentro de estos racks.
Así es como las máquinas esclavas se distribuyen realmente en el clúster, sin embargo, al mismo tiempo están conectadas entre sí.
¿Cómo se almacenan los datos en HDFS?
Ahora nos estamos moviendo lentamente hacia los detalles de cómo funciona HDFS en conjunto. Aquí exploraremos la arquitectura de HDFS.
Cuando decimos, almacenar un archivo en HDFS, los datos se almacenan como Bloques en HDFS. El archivo completo no se almacena en HDFS, se debe a que, como sabe, Hadoop es un sistema de archivos distribuido.
Entonces, si tiene un tamaño de archivo de tal vez 1 PB (Peta Byte), entonces este tipo de almacenamiento no está presente en una sola máquina, ya que el clúster de Hadoop se crea utilizando el hardware básico. El hardware en una sola máquina sería de alrededor de 1 TB o 2 TB.
Por lo tanto, el archivo completo debe dividirse en fragmentos de datos que se denominan bloques HDFS.
- Cada archivo se almacena en HDFS como bloques.
- El tamaño predeterminado de cada bloque es de aproximadamente 128 MB en Apache Hadoop 2.x (y 64 MB en la versión anterior, es decir, Apache Hadoop 1.x).
- Existe una función para aumentar o disminuir el tamaño del archivo de los bloques utilizando el archivo de configuración, es decir, hdfssite.xml que viene con el paquete Hadoop.
Tomemos un ejemplo para comprender este mecanismo y ver cómo se crean estos bloques.
Consideremos un archivo de 248 MB aquí, ahora si dividimos este archivo o si lo movemos a Hadoop Cluster, es decir, 2.x, entonces este archivo se dividirá en un bloque, es decir, el bloque A de 128 MB y otro bloque B de 120 MB.
Como puede ver, el primer bloque es de 128 MB, es decir, la primera losa se corta allí y es por eso que el otro bloque es de 120 MB y no de 128 MB, es decir, no va a desperdiciar espacio si el tamaño del archivo restante es menor. que el tamaño de bloque predeterminado.
Ahora tenemos otro problema frente a nosotros, es decir, ¿es seguro tener una sola copia de cada bloque?
mejor VPN China
La respuesta es NO porque existe la posibilidad de que el sistema falle y no sea más que hardware básico, por lo que podríamos estar en un gran problema. Para superar este problema, Hadoop HDFS tiene una buena solución, es decir “La replicación del bloque”.
Replicación de bloques de arquitectura Hadoop
Hadoop crea las réplicas de cada bloque que se almacena en el sistema de archivos distribuido de Hadoop y así es como Hadoop es un sistema tolerante a fallas, es decir, aunque su sistema falle o su DataNode falle o se pierda una copia, tendrá muchas otras copias presente en los otros DataNodes o en los otros servidores para que siempre pueda elegir esas copias desde allí.
Como se ve en el diagrama anterior que representa la replicación de bloques, hay cinco bloques diferentes de un archivo, es decir, el bloque 1, 2,3,4,5. Verifiquemos primero con el Bloque 1 y encontrará copias del Bloque 1 en el Nodo 1, Nodo 2 y Nodo 4.
Del mismo modo, el bloque 2 también tiene tres copias, es decir, el nodo 2, el nodo 3 y el nodo 4, y lo mismo para los bloques 3, 4 y 5 en los nodos respectivos.
Entonces, aparte de las réplicas que se crean, cada bloque se ha replicado tres veces, es decir, Hadoop sigue un factor de replicación predeterminado de tres, lo que significa que cualquier archivo que copie en el Sistema de archivos de distribución de Hadoop se replica tres veces.
En otras palabras, si copia 1 GB de un archivo en el sistema de archivos de distribución de Hadoop, en realidad almacena 3 GB de un archivo en HDFS. Lo bueno es que el factor de replicación predeterminado se puede cambiar haciendo un cambio en los archivos de configuración de Hadoop.
¿Cómo decide Hadoop dónde almacenar las réplicas?
Hadoop en realidad sigue el concepto de Rack Awareness para decidir dónde almacenar qué réplica de un bloque.
A continuación se muestra el diagrama que muestra el algoritmo de reconocimiento de rack.
Hay tres racks diferentes, es decir, Rack-1, Rack-2 y Rack-3.
Rack-1 tiene cuatro DataNodes y también Rack-2 y Rack-3, por lo que, en total, todo el Hadoop Cluster estará formado por los tres racks y habrá 12 DataNodes.
Digamos que el Bloque A se copia en el DataNode 1 en el Rack-1, según el concepto de Rack Awareness, la réplica del Bloque A no se puede crear en el mismo rack, y debe crearse en cualquier otro rack además del Rack-1 como el archivo principal ya existe en Rack-1.
Si creamos las réplicas del Bloque A en el mismo Rack-1 y en caso de que todo el Rack-1 falle, entonces perderemos los datos con seguridad, entonces las réplicas tienen que ser almacenadas en cualquier otro rack pero no en el Rack-1.
Entonces, la réplica se creará en DataNode 6 y 8 de Rack-2. De manera similar, para el Bloque B y el Bloque C, las réplicas se crearán en diferentes racks, como se muestra en el diagrama anterior.
Conclusión
Aprendimos con los siguientes consejos de este tutorial:
- Hadoop HDFS resuelve el problema de almacenamiento de BigData.
- Hadoop Map Reduce resuelve los problemas relacionados con el procesamiento de BigData.
- NameNode es un Master Daemon y se utiliza para administrar y mantener los DataNodes.
- DataNode es un demonio esclavo y los datos reales se almacenan aquí. Sirve para leer y escribir solicitudes de los clientes.
- En Hadoop Cluster, un bastidor es en realidad un grupo de máquinas que están presentes físicamente en una ubicación en particular y están conectadas entre sí.
- Cada archivo se almacena en HDFS como bloques.
- El tamaño predeterminado de cada bloque es de aproximadamente 128 MB en Apache Hadoop 2.x (64 MB en la versión anterior, es decir, Apache Hadoop 1.x)
- Existe una función para aumentar o disminuir el tamaño del archivo de los bloques utilizando el archivo de configuración, es decir, hdfssite.xml que viene con el paquete Hadoop.
En el próximo tutorial sobre HDFS, aprenderemos sobre la arquitectura HDFS y los mecanismos de lectura y escritura.
=> Visite aquí para ver la serie de formación BigData para todos.
Lectura recomendada
- ¿Qué es Hadoop? Tutorial de Apache Hadoop para principiantes
- Manipulación de archivos en Unix: descripción general del sistema de archivos Unix
- Caracteres especiales o metacaracteres Unix para manipulación de archivos
- Permisos de acceso a archivos Unix: Unix Chmod, Chown y Chgrp
- Conjunto de pruebas de Ranorex, creación de módulos de prueba, archivo de código de usuario, Xpath y enlace de datos
- Objetos de archivo VBScript: CopyFile, DeleteFile, OpenTextFile, Leer y escribir archivo de texto
- Operaciones de entrada y salida de archivos en C ++
- Implementación de Java: creación y ejecución de un archivo JAR de Java