2011-12-19 89 views

Respuesta

13

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.

+0

¿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

+0

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. –

+0

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

3

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.

3

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.

0

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)

2

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í.

Cuestiones relacionadas