Formatos de archivo en big data: un breve programa educativo

Formatos de archivo en big data: un breve programa educativo
Deidad del tiempo de Remarin

Equipo Soluciones en la nube Mail.ru ofertas traducción del artículo El ingeniero Rahul Bhatia de Clairvoyant sobre qué formatos de archivo existen en big data, cuáles son las características más comunes de los formatos Hadoop y qué formato es mejor usar.

¿Por qué se necesitan diferentes formatos de archivo?

Un importante cuello de botella en el rendimiento de las aplicaciones habilitadas para HDFS, como MapReduce y Spark, es el tiempo que lleva buscar, leer y escribir datos. Estos problemas se ven agravados por la dificultad de gestionar grandes conjuntos de datos si tenemos un esquema en evolución en lugar de uno fijo, o si existen algunas limitaciones de almacenamiento.

El procesamiento de big data aumenta la carga en el subsistema de almacenamiento: Hadoop almacena datos de forma redundante para lograr tolerancia a fallas. Además de los discos, se cargan el procesador, la red, el sistema de entrada/salida, etc. A medida que crece el volumen de datos, también aumenta el costo de procesarlos y almacenarlos.

Varios formatos de archivos en Hadoop inventado para resolver precisamente estos problemas. Seleccionar el formato de archivo apropiado puede proporcionar algunos beneficios importantes:

  1. Tiempo de lectura más rápido.
  2. Tiempo de grabación más rápido.
  3. Archivos compartidos.
  4. Soporte para la evolución del esquema.
  5. Soporte de compresión ampliado.

Algunos formatos de archivo están pensados ​​para uso general, otros para usos más específicos y algunos están diseñados para cumplir con características de datos específicas. Así que la elección es realmente bastante amplia.

Formato de archivo avro

para serialización de datos Avro se usa ampliamente: basado en cadenas, es decir, un formato de almacenamiento de datos de cadena en Hadoop. Almacena el esquema en formato JSON, lo que facilita su lectura e interpretación por cualquier programa. Los datos en sí están en formato binario, compactos y eficientes.

El sistema de serialización de Avro es neutral en cuanto al idioma. Los archivos se pueden procesar en una variedad de lenguajes, actualmente C, C++, C#, Java, Python y Ruby.

Una característica clave de Avro es su sólido soporte para esquemas de datos que cambian con el tiempo, es decir, evolucionan. Avro comprende los cambios de esquema: eliminar, agregar o cambiar campos.

Avro admite una variedad de estructuras de datos. Por ejemplo, puede crear un registro que contenga una matriz, un tipo enumerado y un subregistro.

Formatos de archivo en big data: un breve programa educativo
Este formato es ideal para escribir en la zona de aterrizaje (transición) de un lago de datos (lago de datos, o lago de datos: una colección de instancias para almacenar varios tipos de datos además de las fuentes de datos directamente).

Por lo tanto, este formato es el más adecuado para escribir en la zona de aterrizaje de un lago de datos por los siguientes motivos:

  1. Los datos de esta zona generalmente se leen en su totalidad para su posterior procesamiento por parte de sistemas posteriores, y en este caso un formato basado en filas es más eficiente.
  2. Los sistemas posteriores pueden recuperar fácilmente tablas de esquemas a partir de archivos, sin necesidad de almacenar esquemas por separado en metaalmacenamiento externo.
  3. Cualquier cambio en el esquema original se procesa fácilmente (evolución del esquema).

Formato de archivo de parquet

Parquet es un formato de archivo de código abierto para Hadoop que almacena estructuras de datos anidadas en formato de columnas planas.

En comparación con el enfoque tradicional en hileras, Parquet es más eficiente en términos de almacenamiento y rendimiento.

Esto es especialmente útil para consultas que leen columnas específicas de una tabla amplia (muchas columnas). Gracias al formato del archivo, sólo se leen las columnas necesarias, por lo que la E/S se mantiene al mínimo.

Una pequeña digresión y explicación.: Para comprender mejor el formato de archivo Parquet en Hadoop, veamos qué es un formato basado en columnas, es decir, columnar. Este formato almacena valores similares para cada columna juntas.

Por ejemplo, el registro incluye los campos ID, Nombre y Departamento. En este caso, todos los valores de la columna ID se almacenarán juntos, al igual que los valores de la columna Nombre, y así sucesivamente. La tabla se verá así:

ID
Nombre
Departamento

1
emp1
d1

2
emp2
d2

3
emp3
d3

En formato cadena, los datos se guardarán de la siguiente manera:

1
emp1
d1
2
emp2
d2
3
emp3
d3

En un formato de archivo de columnas, los mismos datos se guardarán así:

1
2
3
emp1
emp2
emp3
d1
d2
d3

El formato de columnas es más eficiente cuando necesita consultar varias columnas de una tabla. Solo leerá las columnas requeridas porque son adyacentes. De esta manera, las operaciones de E/S se mantienen al mínimo.

Por ejemplo, solo necesita la columna NOMBRE. EN formato de cadena Cada registro del conjunto de datos debe cargarse, analizarse por campo y luego extraerse los datos NOMBRE. El formato de columna le permite profundizar directamente en la columna Nombre porque todos los valores de esa columna se almacenan juntos. No es necesario escanear toda la grabación.

Por lo tanto, el formato de columnas mejora el rendimiento de las consultas porque requiere menos tiempo de búsqueda para llegar a las columnas requeridas y reduce la cantidad de operaciones de E/S porque solo se leen las columnas deseadas.

Una de las características únicas parquet es que en este formato se puede almacenar datos con estructuras anidadas. Esto significa que en un archivo Parquet, incluso los campos anidados se pueden leer individualmente sin tener que leer todos los campos de la estructura anidada. Parquet utiliza un algoritmo de trituración y ensamblaje para almacenar estructuras anidadas.

Formatos de archivo en big data: un breve programa educativo
Para comprender el formato de archivo Parquet en Hadoop, necesita conocer los siguientes términos:

  1. grupo de cuerdas (grupo de filas): división horizontal lógica de datos en filas. Un grupo de filas consta de un fragmento de cada columna del conjunto de datos.
  2. Fragmento de columna (fragmento de columna): un fragmento de una columna específica. Estos fragmentos de columna viven en un grupo específico de filas y se garantiza que serán contiguos en el archivo.
  3. página (página): Los fragmentos de columna se dividen en páginas escritas una tras otra. Las páginas tienen un título común, por lo que puedes omitir las innecesarias al leer.

Formatos de archivo en big data: un breve programa educativo
Aquí el título solo contiene el número mágico. PAR1 (4 bytes) que identifica el archivo como un archivo Parquet.

El pie de página dice lo siguiente:

  1. Metadatos de archivo que contienen las coordenadas iniciales de los metadatos de cada columna. Al leer, primero debe leer los metadatos del archivo para encontrar todos los fragmentos de columna de interés. Luego, las partes de las columnas deben leerse secuencialmente. Otros metadatos incluyen la versión del formato, el esquema y cualquier par clave-valor adicional.
  2. Longitud de los metadatos (4 bytes).
  3. número mágico PAR1 (4 bytes).

Formato de archivo ORC

Formato de archivo de fila-columna optimizado (Columna de fila optimizada, ORC) ofrece una forma muy eficiente de almacenar datos y fue diseñado para superar las limitaciones de otros formatos. Almacena datos en un formato perfectamente compacto, lo que le permite omitir detalles innecesarios, sin necesidad de construir índices grandes, complejos o mantenidos manualmente.

Ventajas del formato ORC:

  1. Un archivo es el resultado de cada tarea, lo que reduce la carga en el NameNode (nodo de nombre).
  2. Compatibilidad con tipos de datos de Hive, incluidos DateTime, decimales y tipos de datos complejos (estructura, lista, mapa y unión).
  3. Lectura simultánea de un mismo archivo por diferentes procesos RecordReader.
  4. Posibilidad de dividir archivos sin buscar marcadores.
  5. Estimación de la asignación máxima posible de memoria dinámica para procesos de lectura/escritura en función de la información del pie de página del archivo.
  6. Los metadatos se almacenan en el formato de serialización binaria Protocol Buffers, que permite agregar y eliminar campos.

Formatos de archivo en big data: un breve programa educativo
ORC almacena colecciones de cadenas en un solo archivo y, dentro de la colección, los datos de las cadenas se almacenan en formato de columnas.

Un archivo ORC almacena grupos de líneas llamadas franjas e información de respaldo en el pie de página del archivo. El Postscript al final del archivo contiene parámetros de compresión y el tamaño del pie de página comprimido.

El tamaño de banda predeterminado es 250 MB. Debido a franjas tan grandes, la lectura de HDFS se realiza de manera más eficiente: en grandes bloques contiguos.

El pie de página del archivo registra la lista de carriles del archivo, el número de filas por carril y el tipo de datos de cada columna. Allí también se escribe el valor resultante de recuento, mínimo, máximo y suma para cada columna.

El pie de página de la tira contiene un directorio de ubicaciones de transmisiones.

Los datos de fila se utilizan al escanear tablas.

Los datos del índice incluyen los valores mínimo y máximo para cada columna y la posición de las filas en cada columna. Los índices ORC se utilizan sólo para seleccionar franjas y grupos de filas, no para responder consultas.

Comparación de diferentes formatos de archivos.

Avro comparado con parquet

  1. Avro es un formato de almacenamiento en filas, mientras que Parquet almacena datos en columnas.
  2. Parquet es más adecuado para consultas analíticas, lo que significa que las operaciones de lectura y consulta de datos son mucho más eficientes que las escrituras.
  3. Las operaciones de escritura en Avro se realizan de manera más eficiente que en Parquet.
  4. Avro aborda la evolución de los circuitos con mayor madurez. Parquet solo admite la adición de esquemas, mientras que Avro admite la evolución multifuncional, es decir, agregar o cambiar columnas.
  5. Parquet es ideal para consultar un subconjunto de columnas en una tabla de varias columnas. Avro es adecuado para operaciones ETL en las que consultamos todas las columnas.

ORC contra parquet

  1. Parquet almacena mejor los datos anidados.
  2. ORC se adapta mejor al pushdown de predicados.
  3. ORC admite propiedades ACID.
  4. ORC comprime mejor los datos.

¿Qué más leer sobre el tema?:

  1. Análisis de big data en la nube: cómo una empresa puede orientarse a los datos.
  2. Una humilde guía de esquemas de bases de datos.
  3. Nuestro canal de telegram sobre transformación digital.

Fuente: habr.com

Añadir un comentario