Revise el proceso de lectura y escritura de datos HDFS

Proceso de lectura de datos HDFS

1. El cliente lee el archivo deseado llamando a open () del objeto FileSystem.
2. El Cliente inicia una solicitud RPC al NameNode para determinar la ubicación del bloque de archivo solicitado;
3. El NameNode devolverá una lista de bloque parcial o completa del archivo, y para cada bloque, el NameNode devolverá
la dirección de DataNode que contiene la copia de bloque ; estos DN remite, vendrá de la topología de clúster DataNode acuerdo con el cliente, a continuación, la descarga
orden, ordenar dos reglas: la topología de la red desde la primera fila cerca del cliente; Súper latido mecanismo de información de estado DN a rancio , Una
parte posterior de este tipo;
4. El Cliente selecciona el DataNode mejor clasificado para leer el bloque. Si el cliente mismo es un DataNode, los datos se obtendrán directamente del local (
función de lectura de cortocircuito);
5. El subyacente está esencialmente establecido Socket Stream (FSDataInputStream), llamando repetidamente al método de lectura de la clase primaria DataInputStream
hasta que se complete la lectura de datos en este bloque;
6. Lectura paralela, relectura si falló
7. Después de leer el bloque de la lista, si se lee el archivo tomar no más, el cliente continuará recibiendo un número a la lista de bloqueo bajo la NameNode;
8, Volver a la lista de bloque de seguimiento
9, el flujo a cerrar finalmente la lectura y leer todo el bloque con el tiempo se funden en un archivo completo.
 

 

Proceso de escritura de datos HDFS

 

 

1. El cliente inicia una solicitud de carga de archivos y establece comunicación con el NameNode a través de RPC. El NameNode verifica si el archivo de destino ya existe, si existe el directorio padre
y devuelve si puede cargarse;
2. El servidor DataNode al que el cliente solicita que se transfiera el primer bloque;
3 NameNode asigna archivos de acuerdo con el número de copias de seguridad especificadas en el archivo de configuración y el principio de reconocimiento de rack, y devuelve las direcciones de DataNode disponibles, tales como:
A, B, C;
4. El cliente solicita uno de los tres DataNodes para cargar datos (esencialmente es una llamada RPC a la tubería de construcción), una solicitud continuará recibiendo llamadas
B y B llama C, se crea toda la tubería, el retorno progresivo al cliente;
5, un cliente comenzó a subir el primer bloque (empezando con el disco Lea los datos y póngalos en una memoria caché local), con la unidad de paquete (64 K por defecto), A
recibe un paquete y lo envía a B, y B lo envía a C; cada paquete enviado por A se colocará en una cola de respuesta y esperará una respuesta.
6. Los datos se dividen en paquetes. Los paquetes de datos se transmiten en secuencia en la tubería. En la dirección inversa de la tubería, los acuses se envían uno por uno (el comando se
responde correctamente ). Finalmente, el primer nodo DataNode A en la tubería envía el ataque de la tubería al cliente;
7. Cierra la secuencia de escritura.
8. Cuando se completa la transmisión de un bloque, el cliente vuelve a solicitar el NameNode para cargar el segundo bloque al servidor.
 

231 artículos originales publicados · 300 alabanzas · 300,000 vistas

Supongo que te gusta

Origin blog.csdn.net/bbvjx1314/article/details/105444124
Recomendado
Clasificación