¿Almacena un bloque en el sistema de archivos distribuido Hadoop varios archivos pequeños, o un bloque almacena solo 1 archivo?Archivos pequeños y bloques HDFS
Respuesta
Múltiples archivos no se almacenan en un solo bloque. Por cierto, un solo archivo se puede almacenar en múltiples bloques. La asignación entre el archivo y los identificadores de bloque persiste en NameNode.
De acuerdo con la Hadoop : The Definitive Guide
A diferencia de un sistema de archivos para un solo disco, un archivo en HDFS que es más pequeño que un solo bloque no ocupa el valor de una manzana completa de almacenamiento subyacente.
HDFS está diseñado para manejar archivos de gran tamaño. Si hay demasiados archivos pequeños, es posible que se cargue NameNode, ya que almacena el espacio de nombre para HDFS. Compruebe esto article sobre cómo aliviar el problema con demasiados archivos pequeños.
Bien podría hacerlo utilizando el sistema de archivos HAR (Hadoop Archive) que intenta empaquetar múltiples archivos pequeños en el bloque HDFS del archivo de pieza especial administrado por el sistema de archivos HAR.
Un bloque almacenará un solo archivo. Si su archivo es más grande que BlockSize (64/128/..) entonces se dividirá en varios bloques con el tamaño de bloque respectivo.
El punto principal necesidad de entender en hdfs, file is partioned into blocks based on size
y no es que habrá algunos bloques en memoria, donde se almacenan los archivos (esto es error)
Básicamente varios archivos no se almacenan en un solo bloque (a menos que sea archivo Archive o Har)
El tamaño del bloque de Hadoop es el concepto de almacenamiento de Hadoop. Cada vez que almacene un archivo en Hadoop se dividirá en los tamaños de bloque y, según el factor de replicación y la localidad de datos, se distribuirá a través del clúster.
Para Detalles:
cuando se presiona un archivo de HDFS, que se divide en bloques. Cada bloque es como un archivo individual que tiene un tamaño máximo según lo describe el tamaño del bloque.
Cada bloque contendrá un archivo .meta junto con él, para almacenar la información de metadatos del bloque en Hadoop.
Si el archivo es muy pequeño, todo el archivo estará en un bloque y el bloque (un archivo de almacenamiento) tendrá el mismo tamaño que el archivo y un archivo Meta.
algunos comandos:
- conectarse a cualquier nodo de datos en el clúster [si tiene acceso;)]. Luego vaya a los directorios de almacenamiento para ese nodo y podrá ver los bloques reales almacenados en el nodo de datos como se muestra a continuación.
(Dir son según mi grupo -/data2/dfs/dn /):
tamaño de bloque: 1 GB
cd/data/dfs/dn -> actual -> finalizada -> subDir0 -> (aquí es el oro)
Bloque utiliza sólo KB de almacenamiento para archivos pequeños o podría ser cuando el tamaño del archivo es de mi tamaño de bloque + de algunos KB
-rw-r - r-- 1 hdfs hdfs 91K Sep 13 16:19 blk_1073781504
-rw-r - r-- 1 HDFS hdfs 19K Sep 13 16:21 blk_1073781504_40923.meta
Cuando el archivo es más grande que el tamaño de bloque del bloque se ve como algo tan por debajo de
-rw-r - r-- 1 hdfs hdfs 1.0G Ago 31 de 12:03 blk_1073753814
-RW -r - r-- 1 hdfs hdfs 8.1M 31 de agosto 12:04 blk_1073753814_12994.meta
Espero que explique las cosas de almacenamiento en bloque. Si desea conocer el detalle de cómo se almacenan los archivos en los bloques a continuación, ejecutar
HDFS -blocks fsck -locations
Quiero saber si me perdí nada aquí.
- 1. ¿Cuál es la forma más fácil de combinar bloques HDFS pequeños?
- 2. HDFS: ¿Cómo se enumeran los archivos recursivamente?
- 3. ¿Malloc personalizado para muchos bloques pequeños de tamaño fijo?
- 4. Transferir archivo desde HDFS
- 5. CloudStore vs. HDFS
- 6. ¿Cómo lidiar con muchos archivos pequeños?
- 7. Cómo dividir routes.rb en archivos más pequeños
- 8. Procesando un conjunto grande de archivos pequeños con Hadoop
- 9. ¿Dónde HDFS almacena los archivos localmente de forma predeterminada?
- 10. Acerca de la división de archivos Hadoop/HDFS
- 11. ¿Cómo copio archivos de S3 a Amazon EMR HDFS?
- 12. Memoria Archivos asignados y escrituras atómicas de bloques individuales
- 13. Lecturas distribuidas de HDFS sin Map/Reducir
- 14. Factor de replicación de HDFS
- 15. Código :: Bloques: cómo compilar varios archivos fuente
- 16. Bloques estáticos y variables
- 17. HDFS vs GridFS: ¿Cuándo usar qué?
- 18. ¿Cómo funciona HDFS con append?
- 19. Hadoop: comprimir archivo en HDFS?
- 20. manejo de un montón de pequeños archivos temporales
- 21. ¿Cómo divido un archivo mp3 en archivos más pequeños?
- 22. Datos en archivos XML: ¿Un archivo grande o varios pequeños?
- 23. Actualización de un archivo hadoop HDFS
- 24. Herramienta de versionado tipo best git para muchos archivos pequeños
- 25. Make DatePicker y TimePicker más pequeños
- 26. bloques, bucles y variables locales
- 27. Bloques y Procs en Ruby
- 28. bloques Iterator y la herencia
- 29. Diferencias entre hflush y hsync api en HDFS
- 30. Objetivo-c: Problemas con bloques y NSEnumerationConcurrent
¿Sabes cómo encontrar las asignaciones de bloques a los archivos? 'hadoop fsck/-files -blocks -locations -racks' proporciona la asignación de archivo a bloque, pero no dice en qué directorio del sistema de archivos real está ubicado el bloque (es decir, está en subdirectorio9 o en subdirectorio61). – Eugen
La propiedad 'dfs.datanode.data.dir' determina en qué parte del sistema de archivos local un nodo de datos DFS debe almacenar sus bloques. Si se trata de una lista de directorios delimitada por comas, los datos se almacenarán en todos los directorios nombrados, normalmente en diferentes dispositivos. Los directorios que no existen se ignoran. –
No, quise decir cuando se almacenan los bloques físicos que podrían almacenarse en 'dfs.datanode.data.dir' o en subdirectorios en ese directorio (creado por el nodo de datos). ¿Hay alguna manera de encontrar qué bloque se almacena donde (como un archivo de nivel superior o dentro de algún subdirectorio)? – Eugen