Esto podría parecer una pregunta tonta pero en Hadoop supongamos que blocksize es X (típicamente 64 o 128 MB) y un tamaño de archivo local es Y (donde Y es menor que X). Ahora cuando copie el archivo Y al HDFS ¿un bloque o creará bloques de menor tamaño?¿Tamaño del bloque de Hadoop y problema con el tamaño del archivo?
Respuesta
Un bloque es consumido por Hadoop. Eso no significa que la capacidad de almacenamiento se consumirá de manera equivalente.
La salida mientras navega por el HDFS desde web tiene el siguiente aspecto:
filename1 file 48.11 KB 3 128 MB 2012-04-24 18:36
filename2 file 533.24 KB 3 128 MB 2012-04-24 18:36
filename3 file 303.65 KB 3 128 MB 2012-04-24 18:37
se ve que cada tamaño del archivo es menor que el tamaño del bloque, que es de 128 MB. Estos archivos están en KB. La capacidad de HDFS se consume en función del tamaño del archivo real, pero se consume un bloque por archivo.
Hay un número limitado de bloques disponibles según la capacidad del HDFS. Estás desperdiciando bloques, ya que te quedarás sin ellos antes de utilizar toda la capacidad de almacenamiento real. Recuerde que el sistema de archivos de Unix también tiene el concepto de tamaño de bloques, pero es un número muy pequeño de alrededor de 512 Bytes. Este concepto se invierte en HDFS donde el tamaño del bloque se mantiene mayor alrededor de 64-128 MB.
El otro problema es que cuando ejecuta programas map/reduce intentará generar mapper por bloque, así que en este caso cuando está procesando tres archivos pequeños, puede terminar generando tres mappers para trabajar en ellos eventualmente. Esto desperdicia recursos cuando los archivos son de menor tamaño. También agregas latencia ya que cada mapeador toma tiempo para engendrar y, finalmente, funcionaría en un archivo de tamaño muy pequeño. Debes compactarlos en archivos más cercanos al tamaño de bloques para aprovechar el hecho de que los mapeadores trabajan en un menor número de archivos.
Otro problema con numerosos archivos pequeños es que carga namenode que mantiene la asignación (metadatos) de cada bloque y la asignación de fragmentos en la memoria principal. Con archivos más pequeños, llene esta tabla más rápido y se requerirá más memoria principal a medida que crezcan los metadatos.
lea la siguiente referencia:
- 1. Hadoop fs búsqueda de tamaño de bloque?
- 2. Tamaño del bloque del sistema de archivos
- 3. Tamaño del archivo cargado
- 4. Reducir el tamaño del archivo de pdf
- 5. Reducir el tamaño del vídeo con el mismo formato y la reducción de tamaño del marco
- 6. tamaño de letra Afecta la altura del elemento del bloque?
- 7. Hadoop HDFS tamaño máximo de archivo
- 8. PHP include(): Tamaño y rendimiento del archivo
- 9. Reducir el tamaño del archivo jar externo
- 10. Administrar tamaño del archivo .git
- 11. Obtener el tamaño de bloque del sistema en Java
- 12. tamaño del archivo en Haskell
- 13. ¿Cómo optimizar el tamaño del archivo PDF?
- 14. Determinación del tamaño del archivo en VB.NET
- 15. ¿Cómo cambiar el tamaño del botón del archivo de entrada?
- 16. Cómo representar visualmente el tamaño del archivo
- 17. NSFileManager - Comprobar el tamaño del archivo?
- 18. Cómo obtener el tamaño del archivo HttpPostedFileBase
- 19. Node.js: cómo limitar el tamaño de la solicitud HTTP y el tamaño del archivo de carga?
- 20. ¿Cómo verificar el tamaño de entrada del archivo con jQuery?
- 21. ¿Cómo obtengo el comando find para imprimir el tamaño del archivo con el nombre del archivo?
- 22. MongoDB: el tamaño del archivo es enorme y está creciendo
- 23. Reduce el tamaño del archivo PDF generado con Quartz2D
- 24. Lea el último byte del archivo y trunque al tamaño
- 25. Hadoop MapReduce: Tamaño de archivo de entrada apropiado?
- 26. MVC3 Acción Tamaño del archivo de límite
- 27. tamaño del archivo de shell de linux
- 28. modificador de Smarty tamaño del archivo
- 29. cambiando el tamaño del carácter con CSS
- 30. Cómo obtener el tamaño de archivo