Hadoop (tres) hdfs proceso básico de la escritura de datos

flujo de datos de escritura HDFS

 

 

  • HDFS shell subir archivos a.txt, 300 M

  1. Bloqueo de archivos, todos los 128M por defecto bloque.

  2. shell envía una solicitud al subir archivos NameNode

  3. NameNode detectar archivo árbol de directorios del sistema, ver si se puede cargar

  4. NameNode notificaciones de envío para permitir la carga de shell

  5. Subir cáscara bloque1 envía a NameNode, la notificación de copia de seguridad 3.

  6. NameNode detección DataNode fondo de información para los tres DataNode de IP, IP para encontrar los siguientes mecanismos:

    • topología de red más cercana (interruptor de experiencia mínima)

    • Si el depósito propiamente dicho es un DataNode, copia de seguridad local.

    • Mismo bastidor que una copia de seguridad (detección en el estante, véase más adelante)

    • Una copia de seguridad de chasis diferente

  7. NameNode la detectaron IP devuelta a la cáscara

  8. la detección de la cáscara IP reciente, tales DataNode1, una petición de establecimiento de conexión de transmisión de datos, el establecimiento de oleoducto

    • tubería Hadoop se utiliza para transmitir datos al objeto, similar a la entrega tubería.

    • DataNode1 construcción de tuberías para DataNode2

    • DataNode2 construcción de tuberías para DataNode3

  9. tubería de vuelta DataNode3 DataNode2 para construir una notificación de éxito, a continuación, dar un paso atrás 2-1,1-shell.

  10. Por la cáscara OutputStream, para paquetes (64 K) como una unidad para enviar datos a DataNode1, y emitida progresivamente.

    • Después de recibir los niveles DataNode, almacenar datos localmente.

  11. Después de guardar los datos DataNode caerá en cascada transmisión de verificación de datos de paquetes de retorno, para verificar que la transferencia de datos se ha completado.

  12. La transferencia se completa, cerca de la tubería, repetir 5-11.

Estante de Detección

Lo siguiente se basa en el contenido de la URL de la discusión:

https://blog.csdn.net/w182368851/article/details/53729790

https://www.cnblogs.com/zwgblog/p/7096875.html

principio de detección Rack es en realidad archivo de configuración de núcleo-site.xml es una opción:

< Propiedad >  
 < nombre > topology.script.file.name </ nombre >  
 < valor > /home/bigdata/apps/hadoop-talkyun/etc/hadoop/topology.sh </ valor >  
</ propiedad > 

 

  • Este valor opción de configuración se especifica como un programa ejecutable, por lo general una secuencia de comandos.

  • El script toma un parámetro, el valor de salida.

  • El parámetro es por lo general una tabla de direcciones IP de la máquina DataNode, y el valor de la salida generalmente corresponde Estante para la dirección de IP está situado DataNode (rack).

  • proceso:

    • Cuando NameNode empezar, se determinará si la opción de configuración está vacía, si no está vacío, significa que la percepción de la configuración del bastidor se ha activado.

    • En este momento, el guión se verá NameNode dependiendo de la configuración.

    • Tras la recepción de los latidos del corazón cualquier DataNode (Heartbeat), la dirección IP DataNode como un parámetro a la secuencia de comandos, el DataNode se puede obtener para cada Rack, un mapa almacenado en la memoria, de manera que esta máquina será capaz de saber si cada en el mismo bastidor.

  • Perfil ejemplo sencillo:

#! / usr / bin / python
# - * - coding: UTF- 8 - * -
import sys
 
estante = { " NN01 " : " Rack2 " ,
         " NN02 " : " rack3 " ,
         " DN01 " : " rack4 " ,
         " DN02 " : " rack4 " ,
         " DN03 " : " RACK1 " ,
         " DN04 " : " rack3 " ,
        " DN05 ": " RACK1 " ,
         " DN06 " : " rack4 " ,
         " DN07 " : " RACK1 " ,
         " DN08 " : " Rack2 " ,
         " DN09 " : " RACK1 " ,
         " DN10 " : " Rack2 " ,
         " 172.16.145.32 " :" Rack2 " ,
        " 172.16.145.33 " : " rack3 " ,
         " 172.16.145.34 " : " rack4 " ,
         " 172.16.145.35 " : " rack4 " ,
         " 172.16.145.36 " : " RACK1 " ,
         " 172.16.145.37 " : " rack3 " ,
         " 172.16.145.38 " : " RACK1 ",
         "172.16.145.39 " : " rack4 " " 172.16.145.40 " : " RACK1 " " 172.16.145.41 " : " Rack2 " " 172.16.145.42 " : " RACK1 " " 172.16.145.43 " : " Rack2 " ,
        }
 
Si __name __ == " __main__ " :
    imprimir " / " + rack.get (sys.argv [ 1 ], " RACK0 " )
 

 

Supongo que te gusta

Origin www.cnblogs.com/renzhongpei/p/12590328.html
Recomendado
Clasificación