Compresión y formato de datos para almacenamiento de archivos de registro

por Kalpak Shah, Director de ingeniería

Cada compañía de tecnología está ahora almacenando logs para el procesamiento futuro. El Consejo fácil es utilizar la compresión y cerciorarse de que los registros son completos y usables por cada uno. Pero, ¿en qué formato de compresión deberían estar estos archivos de registro? Hay una desconcertante gama de opciones de compresión – Lz0, Snapper, gzip, bzip2, etc., y múltiples formatos en los que los datos pueden ser almacenados – texto, formatos binarios como buffers de protocolo, Avro, MessagePack etc e híbridos como archivos de secuencia, ArchivoRc, ORCFile etc.

Aplicaciones de archivo de registro

Cualquier aplicación que vaya a utilizar los archivos de registro se llama aplicación de archivo de registro. Un gran número de empresas están utilizando ahora "grandes tecnologías de datos" como Hadoop, NoSQL, colmena, etc. Así que el formato de los archivos de registro debe apoyar el proceso fácil sin ningunos requisitos indebidos para que sean ampliamente utilizados.

Compresión

A continuación se muestra un gráfico rápido de Yahoo acerca de cómo los diferentes algoritmos de compresión rango en relación de compresión vs comprimir/tiempo de descomprimir.

Imagen

Como pueden ver, los algoritmos de compresión más rápidos tienen peores ratios de compresión. Para el almacenamiento de archivos de registro, que se escriben una vez y luego se utilizan varias veces, el tiempo de descompresión se aplica cada vez que se utilizan los archivos de registro para su análisis o para cualquier aplicación.

Otro requisito que suele mostrarse para Hadoop, es que los archivos de registro que se almacenan necesitan ser divididos. Esto es para que varios mappers puedan trabajar en él al mismo tiempo. Echemos un vistazo a los diferentes algoritmos de compresión para ver si se pueden dividir o no:

Imagen

Como pueden ver, sólo bzip2 es divisible. ¿significa esto que debemos tener todos los archivos de registro compresas usando bzip2? Es divisible y tiene una relación de compresión muy alta, pero la compensación es que cada aplicación que necesita utilizar estos archivos de registro también tendrá un tiempo de CPU muy alto necesario para la descompresión. Para contrarrestar el alto requerimiento de tiempo de CPU, existe un nuevo formato disponible (algoritmo LZMA) que codifica los archivos en la extensión. XZ. Linux kernel ya está disponible en formato. XZ en lugar de. bzip2. LZMA da una relación de compresión similar a bzip2, y también es muy rápido.

El problema con esto es que bzip2 no es muy popular, y. XV es aún menos. Las aplicaciones tendrán que encontrar los códigos para apoyar esto, que puede ser problemático dependiendo de su entorno.

Formatos de contenedores

Hay un número de otros formatos que se mostrarán en su investigación y a continuación se resumen rápido en ellos.

Hadoop utiliza archivos de secuencia (y archivos de mapa) para un formato binario, que es divisible. El principal caso de uso es el Club de varios archivos más pequeños en archivos de secuencia más grandes. La colmena utiliza ambos ArchivoRc y ORCFile. Estos formatos están optimizados para realizar consultas en varias filas. Ambos están agrupados por filas y dentro tienen un diseño columnar. La compresión se puede aplicar encima de grupos de la fila. Estos formatos son grandes si su caso principal de uso de almacenamiento de archivos de registro está haciendo el análisis en la colmena (o sus derivados).

Los formatos binarios de propósito general como buffers de protocolo, Avro y MessagePack son formatos binarios de serialización/deserialización y probbaly mucho más eficientes que el simple JSON/texto. Pero la mayoría de estos formatos binarios no se pueden dividir, y necesitan soporte especializado en las aplicaciones de registro.

El texto es uno de los formatos más populares. Podemos dejar los archivos de registro en texto y dejar que el acuerdo de compresión con lo que el espacio eficiente.

Sobre ShareThis

ShareThis ha desbloqueado el poder del comportamiento digital global sintetizando los datos de participación social, interés e intención desde 2007. Gracias al comportamiento de los consumidores en más de tres millones de dominios globales, ShareThis observa las acciones en tiempo real de personas reales en destinos digitales reales.

Suscríbase a nuestro boletín de noticias

Recibe las últimas noticias, consejos y actualizaciones

Suscribirse

Contenido relacionado