Notas de estudio de Big Data 02-HDFS de Hadoop

Sistema de archivos distribuido HDFS


Hadoop = HDFS (sistema de archivos distribuido) + MapReduce (marco de computación distribuida) + Yarn (marco de coordinación de recursos) + Módulo común. Este artículo clasifica principalmente los puntos de conocimiento de HDFS.

1. Introducción a HDFS

HDFS (nombre completo: Hadoop Distribute File System) es el componente principal de Hadoop y un servicio de almacenamiento distribuido.
Los sistemas de archivos distribuidos abarcan varias computadoras y tienen amplias posibilidades de aplicación en la era del big data.
Proporcionan las capacidades de expansión necesarias para almacenar y procesar datos a gran escala .
HDFS es una especie de sistema de archivos distribuido.

Dos, el concepto importante de HDFS

HDFS ubica los archivos a través de un árbol de directorios de espacio de nombres unificado; además, se distribuye y muchos servidores se combinan para lograr sus funciones. Los servidores del clúster tienen sus propios roles (la naturaleza distribuida se divide y cada uno realiza sus propias tareas) ;

-Arquitectura típica maestro / esclavo

La arquitectura de HDFS es una estructura típica de maestro / esclavo.
Los clústeres HDFS a menudo se componen de un NameNode (la arquitectura HA tiene dos NameNodes, mecanismo federado) + múltiples DataNodes
;
NameNode es el nodo maestro del clúster y DataNode es el nodo esclavo del clúster.

  • Almacenamiento en bloque (mecanismo de bloque)

Los archivos en HDFS se almacenan físicamente en bloques y el tamaño del bloque se puede especificar mediante parámetros de configuración, el
tamaño de bloque predeterminado en la versión Hadoop 2.x es 128M;

  • Espacio de nombres (NameSpace)

HDFS admite la estructura de organización de archivos jerárquica tradicional. Los usuarios o las aplicaciones pueden crear directorios y guardar archivos en estos directorios. La estructura jerárquica del espacio de nombres del sistema de archivos es similar a la mayoría de los sistemas de archivos existentes: los usuarios pueden crear, eliminar, mover o renombrar archivos.
Namenode es responsable de mantener el espacio de nombres del sistema de archivos.
Namenode registrará cualquier modificación en el espacio de nombres o atributos del sistema de archivos .
HDFS proporciona a los clientes un único árbol de directorios abstracto, el formato de acceso es: hdfs: // nombre de host de namenode: puerto / test / inputhdfs: // linux121: 9000 / test / input

  • Gestión de metadatos NameNode

Llamamos metadatos a la estructura de directorio y a la información de ubicación del bloque de archivos. Los metadatos del NameNode registran la información del bloque correspondiente a cada archivo (el id del bloque y la información del nodo DataNode donde se encuentra)

  • Almacenamiento de datos DataNode

La gestión de almacenamiento específica de cada bloque del archivo la realiza el nodo DataNode. Un bloque será almacenado por múltiples DataNodes, y DataNode reportará periódicamente la información del bloque que contiene al NameNode.

  • Mecanismo de copia

Por tolerancia a fallos, todos los bloques del archivo tendrán copias . El tamaño de bloque y el coeficiente de copia de cada archivo son configurables. La aplicación puede especificar el número de copias de un archivo. El coeficiente de copia se puede especificar cuando se crea el archivo o se puede cambiar más tarde.
El número predeterminado de copias es 3.

  • Escribe una vez, lee muchas veces

HDFS está diseñado para adaptarse al escenario de una escritura y varias lecturas, y no admite la modificación aleatoria de archivos. (Admite escrituras adicionales, no solo actualizaciones aleatorias)
Debido a esto, HDFS es adecuado para servicios de almacenamiento de bajo nivel para análisis de big data y no es adecuado para aplicaciones como discos de red (modificación inconveniente, gran retraso y alta sobrecarga de red. el costo es demasiado alto)

Tres, arquitectura HDFS

Inserte la descripción de la imagen aquí

NameNode (nn): el administrador del clúster HDFS, Master

  • Mantener y administrar el espacio de nombres Hdfs (NameSpace)
  • Mantener una estrategia de copia
  • Registre la información de mapeo del bloque de archivos (Bloque)
  • Responsable de procesar las solicitudes de lectura y escritura del cliente.

DataNode: NameNode emite comandos, DataNode realiza operaciones reales, nodo esclavo

  • Guardar el bloque de datos real
  • Responsable de leer y escribir bloques de datos.

Cliente: cliente

  • Al cargar archivos en HDFS, el cliente es responsable de dividir los archivos en bloques y cargarlos
  • Solicitar interacción NameNode para obtener información sobre la ubicación del archivo
  • Leer o escribir archivos, interactuar con DataNode
  • El cliente puede usar algunos comandos para administrar HDFS o acceder a HDFS
    Principio de funcionamiento
    . Debe tener la impresión de esta imagen en su mente para profundizar su comprensión de los principios operativos de HDFS.

Cuatro, operación de cliente HDFS

  • Operación de línea de comandos de shell
    Sintaxis básica de HDFS : comando específico bin / hadoop fs O comando específico bin / hdfs dfs-
    lista de comandos
    root@linux121 hadoop-2.9.2]# bin/hdfs dfs (este comando puede abrir el manual de comandos)
    Uso: hadoop fs [opciones genéricas]
    [-appendToFile…]
    [-cat [ -ignoreCrc]…]
    [-checksum…]
    [-chgrp [-R] GRUPO RUTA…]
    [-chmod [-R] <MODO [, MODO]… | OCTALMODE> RUTA…]
    [-chown [-R] [PROPIETARIO ] [: [GRUPO]] RUTA…]
    [-copyFromLocal [-f] [-p] [-l] [-d]…]
    [-copyToLocal [-f] [-p] [-ignoreCrc] [-crc] …]
    [-Cuenta [-q] [-h] [-v] [-t []] [-u] [-x] …]
    [-Cp [-f] [-p | -p [topax]] [-d]…]
    [-createSnapshot []]
    [-deleteSnapshot]
    [-df [-h] [ …]]
    [-Du [-s] [-h] [-x] …]
    [-Expunge]
    [-find ……]
    [-Get [-f] [-p] [-ignoreCrc] [-crc]…]
    [-getfacl [-R] ]
    [-getfattr [-R] {-n nombre | -d} [-e en] ]
    [-getmerge [-nl] [-skip-empty-file]]
    [-help [cmd…]]
    [-ls [-C] [-d] [-h] [-q] [-R] [- t] [-S] [-r] [-u] [ …]]
    [-Mkdir [-p] …]
    [-MoveFromLocal…]
    [-moveToLocal]
    [-mv…]
    [-put [-f] [-p] [-l] [-d]…]
    … 略

  • Demostración del comando HDFS
    Algunas demostraciones comunes del comando HDFS

  1. Inicie el clúster de Hadoop (para facilitar las pruebas posteriores)
[root@linux121 hadoop-2.9.2]$ sbin/start-dfs.sh
[root@linux122 hadoop-2.9.2]$ sbin/start-yarn.sh

2.-ayuda: generar este parámetro de comando

[root@linux121 hadoop-2.9.2]$ hadoop fs -help rm
  1. -ls: muestra la información del directorio
[root@linux121 hadoop-2.9.2]$ hadoop fs -ls /
  1. -mkdir: crea un directorio en HDFS
[root@linux121 hadoop-2.9.2]$ hadoop fs -mkdir -p /test/bigdata
  1. -moveFromLocal: cortar y pegar de local a HDFS
[root@linux121 hadoop-2.9.2]$ touch hadoop.txt
[root@linux121 hadoop-2.9.2]$ hadoop fs  -moveFromLocal ./hadoop.txt  /test/bigdata
  1. -cat: muestra el contenido del archivo
[root@linux121 hadoop-2.9.2]$ hadoop fs -cat /test/bigdata/hadoop.txt
  1. -chgrp, -chmod, -chown: El uso en el sistema de archivos de Linux es el mismo, modifique los permisos del archivo
[root@linux121 hadoop-2.9.2]$ hadoop fs  -chmod  777 /test/bigdata/hadoop.txt
[root@linux121 hadoop-2.9.2]$ hadoop fs  -chown root:root /test/bigdata/hadoop.txt
  1. -copyFromLocal: copia archivos del sistema de archivos local a la ruta HDFS
[root@linux121 hadoop-2.9.2]$ hadoop fs -copyFromLocal README.txt /
  1. -copyToLocal: copia de HDFS a local
 [root@linux121 hadoop-2.9.2]$ hadoop fs -copyToLocal /test/bigdata/hadoop.txt
 ./
  1. -get: equivalente a copyToLocal , que es descargar archivos de HDFS al local
[root@linux121 hadoop-2.9.2]$ hadoop fs -get /test/bigdata/hadoop.txt ./
  1. -put: equivalente a copyFromLocal
[root@linux121 hadoop-2.9.2]$ hadoop fs -mkdir -p /user/root/test/
#本地文件系统创建yarn.txt
[root@linux121 hadoop-2.9.2]$ vim yarn.txt
resourcemanager nodemanager
[root@linux121 hadoop-2.9.2]$ hadoop fs -put ./yarn.txt /user/root/test
  1. -setrep: establece el número de copias de archivos en HDFS
[root@linux121 hadoop-2.9.2]$ hadoop fs -setrep 10 /lagou/bigdata/hadoop.txt

El número de réplicas establecido aquí solo se registra en los metadatos del NameNode. Si realmente hay tantas réplicas depende del número de DataNodes. Debido a que actualmente solo hay 3 dispositivos, hay como máximo 3 copias, y solo cuando el número de nodos aumenta a 10, el número de copias puede llegar a 10.
Inserte la descripción de la imagen aquí

Cinco análisis de lectura y escritura HDFS

5.1 Proceso de lectura de datos HDFS
Inserte la descripción de la imagen aquí

  1. El cliente solicita al NameNode que descargue el archivo a través del Sistema de archivos distribuido, y el NameNode busca la dirección del DataNode donde se encuentra el bloque de archivos consultando los metadatos.
  2. Elija un servidor DataNode (principio de proximidad, luego aleatorio) y solicite leer datos.
  3. El DataNode comienza a transmitir datos al cliente (lea el flujo de entrada de datos del disco y use el paquete como unidad para la verificación).
  4. El cliente lo recibe en paquetes, primero lo almacena en caché localmente y luego lo escribe en el archivo de destino.

5.2 Proceso de escritura de datos HDFS
Inserte la descripción de la imagen aquí

  1. El cliente solicita al NameNode que cargue archivos a través del módulo Distributed FileSystem, y NameNode verifica si el archivo de destino ya existe y si existe el directorio principal.
  2. NameNode devuelve si se puede cargar.
  3. A qué servidores DataNode solicita el cliente cargar el primer bloque.
  4. NameNode devuelve 3 nodos DataNode, a saber, dn1, dn2 y dn3.
  5. El cliente solicita a dn1 que cargue datos a través del módulo FSDataOutputStream. Cuando dn1 reciba la solicitud, continuará llamando a dn2, y luego dn2 llamará a dn3 para completar el establecimiento del canal de comunicación. (Garantizar la seguridad de los datos)
  6. dn1, dn2 y dn3 responden al cliente nivel por nivel.
  7. El cliente primero comenzó a cargar el bloque dn1 (comenzar a leer datos en una memoria caché de disco local) al paquete es de un solo
    bit, el paquete dn1 recibirá un pase dn2, dn2 pasó dn3; dn1 por pase Un paquete se colocará en una cola de confirmación esperando confirmación.
  8. Una vez que se completa la transmisión de un bloque, el cliente vuelve a solicitar al NameNode que cargue el segundo bloque en el servidor. (Repita el
    paso 7).

Seis NN y 2NN

6.1 Mecanismo de gestión de metadatos HDFS (crítico)

Pregunta 1: ¿Cómo gestiona y almacena NameNode los metadatos?
Hay dos formas de almacenar datos en la computadora: memoria o disco.
Si los metadatos se almacenan en el disco: el disco de almacenamiento no puede enfrentar ninguna respuesta rápida y de baja latencia del cliente a la información de metadatos, pero la seguridad es alta.
Si el los metadatos se almacenan en la memoria Medio: los metadatos se almacenan en la memoria, que puede consultar de manera eficiente y responder rápidamente a las solicitudes de consulta del cliente. Los datos se almacenan en la memoria. Si hay un punto de interrupción, se perderán todos los datos en la memoria.
Solución : memoria + disco; memoria NameNode + archivo FsImage (disco)
Nuevo problema: ¿cómo dividir los metadatos en disco y memoria?
Los dos datos son exactamente iguales, ¿o se combinan los dos datos para formar un dato completo?
Si los dos datos son exactamente iguales: si el cliente agrega, elimina y modifica metadatos, debe garantizar la coherencia de los dos datos. La eficiencia operativa de los archivos FsImage no es alta.
Solución:
Dos fusiones = datos completos: NameNode introdujo un archivo de ediciones (archivo de registro: solo escrituras adicionales). El archivo de ediciones registra las
operaciones de adición, eliminación y modificación del cliente, y ya no elige permitir que NameNode vuelque los datos para formar un archivo FsImage (Este tipo de operación consume más recursos).

Inserte la descripción de la imagen aquí

La primera etapa: inicio de NameNode

  • Después de iniciar el formateo de NameNode por primera vez, cree los archivos Fsimage y Edits. Si no es la primera vez que inicia, cargue directamente el registro de edición y el archivo de imagen en la memoria.
  • El cliente solicita agregar, eliminar o modificar metadatos.
  • NameNode registra el registro de operaciones y actualiza el registro continuo.
  • NameNode agrega, elimina y cambia datos en la memoria.

La segunda etapa: trabajo de NameNode secundario

  • El NameNode secundario pregunta si el NameNode necesita CheckPoint. Recupere directamente el resultado de si NameNode realiza una operación de punto de control.

  • El NameNode secundario solicita ejecutar CheckPoint.

  • NameNode desplaza el registro de ediciones que se está escribiendo.

  • Copie el registro de edición y el archivo espejo antes de pasar al NameNode secundario.

  • El NameNode secundario carga el registro de edición y el archivo de imagen en la memoria y los fusiona.

  • Genere un nuevo archivo de imagen fsimage.chkpoint.

  • Copie fsimage.chkpoint en NameNode.

  • NameNode cambió el nombre de fsimage.chkpoint a fsimage.

6.2 Análisis de archivos de Fsimage y Edits

Después de que NameNode ejecute el formateo, se /opt/lagou/servers/hadoop-2.9.2/data/tmp/dfs/name/currentgenerarán los siguientes archivos en el directorio
Inserte la descripción de la imagen aquí

  • Archivo Fsimage: Es una imagen reflejada de los metadatos en el nodo de nombre, generalmente llamado punto de control, que contiene todos los directorios y la información relacionada con el archivo del sistema de archivos HDFS (número de bloques, número de copias, permisos, etc.)
  • Archivo de ediciones: almacena todos los registros de operaciones de actualización del cliente en el sistema de archivos HDFS. Todas las operaciones de actualización del cliente en el sistema de archivos HDFS se registrarán en el archivo de ediciones (sin incluir las operaciones de consulta)
  • seen_txid: el archivo es un número guardado y el número corresponde al número del último nombre de archivo de ediciones
  • VERSIÓN: este archivo registra información sobre el número de versión de namenode, como: CusterId, namespaceID, etc.

Inserte la descripción de la imagen aquí
Inserte la descripción de la imagen aquí
Pregunta: ¿Cómo determinar qué archivos de edición se cargarán cuando se inicie NameNode?
Cuando se inicia NN, necesita cargar el archivo fsimage y los archivos de ediciones que no se han fusionado con 2nn. ¿Cómo determina NN qué ediciones se han fusionado?
Respuesta: El número del archivo fsimage en sí se puede utilizar para determinar cuál se ha fusionado.
Inserte la descripción de la imagen aquí

Siete cuotas y archivos de Hadoop y modelo de seguridad de clúster

Configuración de cuota de archivo HDFS La configuración de cuota de archivo
HDFS nos permite limitar la cantidad de archivos que cargamos en un directorio determinado
o la cantidad total de contenido de archivo por tamaño de archivo o cantidad de archivos , para alcanzar nuestro límite similar al disco de red de Baidu. , etc. por usuario Cantidad máxima de archivos que se pueden cargar
1. Límite de cantidad

hdfs dfs -mkdir -p /user/root/test     #创建hdfs文件夹
hdfs dfsadmin -setQuota 2 /user/root/test       # 给该文件夹下面设置最多上传两个文件,上传文件,发现只能上传一个文件
hdfs dfsadmin -clrQuota /user/root/test   # 清除文件数量限制

2. Límite de tamaño del espacio

hdfs dfsadmin -setSpaceQuota 4k /user/root/test  # 限制空间大小4KB
#上传超过4Kb的文件大小上去提示文件超过限额
hdfs dfs -put /export/softwares/xxx.tar.gz /user/root/test
hdfs dfsadmin -clrSpaceQuota /user/root/test  #清除空间限额
#查看hdfs文件限额数量
hdfs dfs -count -q -h /user/root/test

El modo seguro de HDFS
es un estado especial en el que HDFS, en este estado, el sistema de archivos solo acepta una solicitud de lectura de datos, no acepta, edita ni elimina la solicitud de cambio. Cuando se inicia el nodo maestro de NameNode, HDFS ingresa primero al modo seguro. Cuando se inicia DataNode, informará los bloques disponibles y otros estados al NameNode. Cuando todo el sistema alcanza el estándar de seguridad, HDFS abandona automáticamente el modo seguro. Si HDFS está en modo seguro, el bloque de archivos no puede realizar ninguna operación de copia de copia. Por lo tanto, el número mínimo de copias necesarias se determina en función del estado del DataNode cuando se inicia, y no se realizarán más copias cuando se inicie (por lo que como para lograr la copia mínima). Requisito de cantidad). Cuando el clúster HDFS recién se inicia, el tiempo predeterminado de 30S está fuera del período de seguridad. Solo después de 30S, el clúster está fuera del período de seguridad, y luego el clúster puede ser operado.

hdfs dfsadmin  -safemode

La tecnología de archivo Hadoop
resuelve principalmente el problema de un gran número de archivos pequeños en clústeres HDFS. !
Dado que una gran cantidad de archivos pequeños ocupará la memoria del NameNode, almacenar una gran cantidad de archivos pequeños en HDFS provoca un desperdicio de recursos de memoria de NameNode.
Archivo de archivo Hadoop El archivo HAR es una herramienta de archivo de archivo más eficiente. El archivo HAR se crea a partir de un conjunto de archivos a través de la herramienta de archivo. Mientras se reduce el uso de memoria del NameNode, se puede acceder al archivo de forma transparente. En términos sencillos Es decir, el archivo HAR es un archivo para el NameNode, que reduce el desperdicio de memoria y sigue siendo un archivo independiente para la operación y el procesamiento reales del archivo.
Inserte la descripción de la imagen aquí
Caso de estudio

  1. Inicie el clúster YARN
[root@linux121 hadoop-2.9.2]$ start-yarn.sh
  1. Archivos de archivo Archive todos los archivos en
    el directorio / user / lagou / input en un archivo de archivo llamado input.har y
    almacene los archivos en la ruta / user / lagou / output.
[root@linux121 hadoop-2.9.2]$ bin/hadoop archive -archiveName input.har –p
/user/root/input /user/root/output
  1. Ver archivo
[root@linux121 hadoop-2.9.2]$ hadoop fs -lsr /user/root/output/input.har
[root@linux121 hadoop-2.9.2]$ hadoop fs -lsr
har:///user/root/output/input.har
  1. Desarchivar archivos
[root@linux121 hadoop-2.9.2]$ hadoop fs -cp har:/// user/root/output/input.har/*
/user/root

para resumir

Domine principalmente el proceso de lectura y escritura de HDFS y el mecanismo de gestión de metadatos de HDFS.

Supongo que te gusta

Origin blog.csdn.net/weixin_43900780/article/details/114047833
Recomendado
Clasificación