Flujo de trabajo y mecanismo de HDFS

Introducción y clasificación de las responsabilidades de cada rol.

Rol principal: Namenode

  • Namenode es el núcleo del sistema de archivos distribuido Hadoop y el papel principal en la arquitectura
  • Namenode mantiene y administra los metadatos del sistema de archivos, incluida la estructura del árbol de directorios del espacio de nombres, la información de ubicación de archivos y bloques, los permisos de acceso y otra información.
  • En base a esto, Namenode se convierte en el único acceso a HDFS.
  • Namenode gestiona internamente los metadatos a través de la memoria y los archivos de disco.
  • Los archivos de metadatos en el disco incluyen archivos de imagen de metadatos de memoria Fsimage y registros de edición de registro de ediciones (Diario).

Función de esclavo: Nodo de datos

  • Datanode es un rol esclavo en Hadoop HDFS, responsable del almacenamiento de bloques de datos específicos.
  • La cantidad de Datanodes determina la capacidad general de almacenamiento de datos del clúster HDFS. Los bloques de datos se mantienen mediante la cooperación con Namenode.

Rol principal Rol secundario: secondnamenode

  • El Namenode secundario actúa como un nodo auxiliar del Namenode, pero no puede reemplazar al Namenode.
  • Es principalmente para ayudar a la función principal a fusionar archivos de metadatos. Puede entenderse comúnmente como el "secretario" que desempeña el papel principal.

Responsabilidades de nodo de nombre

  • Namenode solo almacena los metadatos de HDFS: el árbol de directorios de todos los archivos en el sistema de archivos, realiza un seguimiento de los archivos en todo el clúster y no almacena datos reales.
  • Namenode conoce la lista de bloques y sus ubicaciones para cualquier archivo dado en HDFS. Usando esta información, Namenode sabe cómo construir el archivo a partir de los bloques.
  • Namenode no admite el almacenamiento persistente de la información de ubicación del Datanode donde se encuentra cada bloque en cada archivo, y esta información se reconstruirá desde el Datanode cuando se inicie el sistema.
  • Namenode es un único punto de falla en el clúster de Hadoop.
  • La máquina donde se encuentra el Namenode suele estar configurada con una gran cantidad de memoria (RAM).

Responsabilidades del nodo de datos

  • Datanode es responsable del almacenamiento del bloque de datos final. Es el rol de esclavo del clúster, también conocido como Esclavo.
  • Cuando se inicie Datanode, se registrará en Namenode e informará la lista de bloques que es responsable de mantener.
  • Cuando un Datanode está inactivo, no afectará la disponibilidad de los datos. Namenode programará réplicas de bloques administrados por otros Datanodes.
  • La máquina donde se encuentra el Datanode generalmente está configurada con una gran cantidad de espacio en el disco duro, porque los datos reales se almacenan en el Datanode.

escribir flujo de datos

Concepto central: tubería de tubería

  • Tubería, traducción al chino de la tubería. Este es un método de transmisión de datos utilizado por HDFS en el proceso de carga de archivos y escritura de datos.
  • El cliente escribe el bloque de datos en el primer nodo de datos, el primer nodo de datos guarda los datos y luego copia el bloque en el segundo nodo de datos, que lo guarda y lo copia en el tercer nodo de datos.
  • La razón por la que los nodos de datos utilizan la transmisión de canalización es porque los datos se transmiten secuencialmente en una dirección en forma de canalización, lo que puede aprovechar al máximo el ancho de banda de cada máquina, evitar cuellos de botella en la red y conexiones de alta latencia, y minimizar el retraso de todos los datos.
  • En el modo push en línea, todo el ancho de banda de salida de cada máquina se usa para transmitir datos a la velocidad más rápida, en lugar de distribuir el ancho de banda entre varios destinatarios.

Concepto central: respuesta ACK

  • ACK (Carácter de reconocimiento) es un carácter de reconocimiento En la comunicación de datos, un carácter de control de transmisión esclavo enviado por el receptor al remitente. Indica que se ha confirmado que los datos entrantes se recibieron sin errores.
  • En el proceso de transmisión de datos de tubería de HDFS, se realizará una verificación de ACK en la dirección opuesta de la transmisión para garantizar la seguridad de la transmisión de datos.

Concepto central: estrategia de almacenamiento de 3 copias predeterminada

  • La política de almacenamiento de réplica predeterminada se especifica mediante BlockPlacementPolicyDefaulet.
  • La primera copia del bloque: Cliente prioritario local, de lo contrario aleatorio.
  • Copia del segundo bloque: Un bastidor diferente al de la copia del primer bloque.
  • La tercera copia: una máquina diferente del mismo bastidor que la segunda copia.

ordenar

  1. El cliente HDFS crea una instancia de objeto DistributedFileSystem, que encapsula métodos relacionados con las operaciones del sistema de archivos HDFS.
  2. Llame al método create() del objeto DistributedFileSystem para solicitar a Namenode que cree un archivo a través de RPC.
    Namenode realiza varias comprobaciones para determinar si existe el archivo de destino, si existe el directorio principal y si el cliente tiene permiso para crear el archivo. Si se pasa la verificación, Namenode registrará un registro para esta solicitud y devolverá el objeto de flujo de salida FSDataOutputStream al cliente para escribir datos.
  3. El cliente comienza a escribir datos a través del flujo de salida FSDataOutputStream.
  4. Cuando el cliente escribe datos, los divide en paquetes (el paquete predeterminado es 64 K), y el componente interno DataStreamer solicita a Namenode que seleccione un conjunto de direcciones de Datanode adecuadas para almacenar copias de datos. El valor predeterminado es almacenamiento de 3 copias.
    DataStreamer transmite el paquete al primer Datanode de la canalización, que almacena el paquete y lo envía al segundo Datanode de la canalización. Asimismo, el segundo Datanode almacena el paquete y lo envía al tercer (y último) Datanode.
  5. En la dirección de transmisión opuesta, el mecanismo ACK se utilizará para verificar si la transmisión del paquete de datos es exitosa;
  6. Después de que el cliente termine de escribir datos, llame al método close() en el flujo de salida de FSDataOutputStream para cerrarlo.
  7. DistributedFileSystem contacta a Namenode para informarle que la escritura del archivo está completa y espera la confirmación de Namenode.
    Debido a que Namenode ya sabe en qué bloques consiste el archivo (DataStream solicita asignar bloques de datos), solo necesita esperar a que el bloque copiado más pequeño regrese con éxito. La replicación mínima se especifica mediante el parámetro dfs.namenode.replication.min y el valor predeterminado es 1.

Supongo que te gusta

Origin blog.csdn.net/JAX_fire/article/details/126136742
Recomendado
Clasificación