Recientemente configuré la compresión en un clúster. Las otras publicaciones tienen enlaces útiles, pero el código real que querrá que funcione la compresión LZO está aquí: https://github.com/kevinweil/hadoop-lzo.
Puede utilizar la compresión GZIP, la compresión BZIP2 y la compresión Unix de inmediato. Simplemente cargue un archivo en uno de esos formatos. Al usar el archivo como entrada para un trabajo, deberá especificar que el archivo esté comprimido, así como el CODEC apropiado. Aquí hay un ejemplo de compresión LZO.
-jobconf mapred.output.compress=true
-jobconf mapred.output.compression.codec=com.hadoop.compression.lzo.LzopCodec
¿Por qué estoy en proceso de compresión de LZO? La referencia cloudera article de Praveen entra en esto. La compresión LZO es una compresión divisible (a diferencia de GZIP, por ejemplo). Esto significa que un solo archivo se puede dividir en trozos para entregarlo a un mapeador. Sin un archivo comprimible dividible, un solo mapeador recibirá el archivo completo. Esto puede hacer que tengas demasiados mapeadores y que muevas demasiados datos alrededor de tu red.
BZIP2 también es divisible. También tiene una compresión más alta que LZO. Sin embargo, es muy lento. LZO tiene una relación de compresión peor que GZIP. Sin embargo, está optimizado para ser extremely fast. De hecho, puede incluso aumentar el rendimiento de su trabajo al minimizar la E/S del disco.
Lleva un poco de trabajo configurarlo, y es un poco difícil de usar, pero vale la pena (el cifrado transparente sería increíble). Una vez más, los pasos son:
- Instalar lzo y lzop (utilidad de línea de comandos)
- Instalar hadoop-lzo
- Subir un archivo comprimido con lzop.
- Indexe el archivo como lo describe el wiki de hadoop-lzo (el índice permite dividirlo).
- ejecutar su trabajo (con la mapred.output.compress parámetros adecuados y mapred.output.compression.code)
¿Sabe usted si la opción "dfs.image.compress" debe comprimir archivos mientras que el almacenamiento? – spektom