Colección de citas famosas - Slogan de motivación - Cómo conseguir acuerdos con la redacción de Woody Flow

Cómo conseguir acuerdos con la redacción de Woody Flow

El método es el siguiente:

1. Antecedentes del proyecto

La estructura organizativa tradicional de múltiples almacenes está diseñada para los requisitos OLAP (Análisis de transacciones en línea) de los datos fuera de línea. La forma común de importar datos es importar datos de bases de datos comerciales en múltiples almacenes en lotes a través de trabajos de programación sqoop o spark. Con la mejora continua de los requisitos en tiempo real para el análisis de datos, la sincronización de datos cada hora o incluso minutos se está volviendo cada vez más común. Por lo tanto, se llevó a cabo el desarrollo de un sistema de sincronización (casi) en tiempo real basado en el mecanismo de procesamiento de flujo de chispa/flink.

Sin embargo, los almacenes de datos sincronizados en tiempo real se han enfrentado a los siguientes desafíos desde el principio:

El problema de los archivos pequeños. Ya sea el modo de procesamiento por microlotes de Spark o el modo de procesamiento elemento por elemento de Flink, cada escritura en HDFS es un archivo de varios metros o incluso decenas de KB. Una gran cantidad de archivos pequeños generados durante un largo período de tiempo ejercerán mucha presión sobre el nodo de nombre HDFS.

Soporta operaciones de actualización. El sistema HDFS en sí no admite la modificación de datos, por lo que los registros no se pueden modificar durante la sincronización.

La transaccionalidad garantiza las transacciones, ya sea agregando datos o modificando datos. Es decir, cuando el programa de procesamiento de flujo se confirma, los datos solo se escriben en HDFS una vez, y cuando el programa retrocede, los datos escritos total o parcialmente se pueden eliminar.

Woody es una de las soluciones a los problemas anteriores. La siguiente es la introducción de Hu Di, el contenido principal ha sido traducido del sitio web oficial.

2. Introducción a Hu Di

2.1 Línea de tiempo

Hu Di mantiene una línea de tiempo para todas las operaciones en la mesa basada en momentos, que puede proporcionar una línea de tiempo de un momento determinado. Vistas tabulares y extracción eficiente de datos retrasados. Cada momento incluye:

Comportamiento de tiempo: el tipo de operación de la tabla, que incluye:

Commit: confirmar, escribir datos por lotes automáticamente en la tabla;

Limpieza: Limpieza, trabajo en segundo plano, limpieza continua de los datos que no son necesarios en la versión anterior;

Delta_commit: delta escribe atómicamente registros por lotes en la tabla MergeOnRead y el destino de la escritura de datos es el archivo de registro delta ;

Compresión: La compresión, un trabajo en segundo plano, combina datos de diferentes estructuras (como archivos de registro almacenados en filas para registrar operaciones de actualización) en archivos almacenados en columnas. La compresión en sí es una operación de confirmación especial;

Revertir: revertir, cuando algunos no tienen éxito, eliminar todos los archivos parcialmente escritos;

Punto de guardado: punto de guardado, algunos grupos de archivos están marcados como " guardado" para que el limpiador no borre estos archivos;

hora y hora: la marca de tiempo cuando comenzó la operación;

estado: el estado actual, que incluye:

La operación solicitada ha sido programada pero aún no se ha inicializado.

Mientras volamos, hay una operación en marcha.

Se ha completado la operación en la línea de tiempo completada.

Woody garantiza que las operaciones realizadas en la línea de tiempo sean atómicas y coherentes con la línea de tiempo en función del tiempo y el tiempo.

2.2 Gestión de archivos

La tabla Woody existe en el directorio de ruta base del sistema DFS, que está dividido en diferentes particiones. Cada partición utiliza la ruta de la partición como identificador único y su forma organizativa es la misma que la de Hive.

En cada partición, los archivos se dividen en grupos de archivos según ID de archivo únicos. Cada grupo de archivos contiene múltiples segmentos de archivos, cada segmento contiene un archivo base (archivo parquet) formado por una operación de confirmación o compactación, y un archivo de registro (archivo de registro) que contiene inserciones/actualizaciones del archivo base. Woody adopta el diseño MVCC. La operación de compresión fusiona los archivos de registro y los archivos base correspondientes en un nuevo fragmento de archivo, y la operación de limpieza elimina las versiones antiguas o no válidas de los archivos.

2.3 Índice

Hu Di proporciona operaciones eficientes de inserción ascendente al asignar la clave Hood (ruta de partición de la clave de registro) a la identificación del archivo.

Cuando la primera versión de un registro se escribe en un archivo, la asignación de los valores clave del registro al archivo no cambia. En otras palabras, un grupo de archivos asignado siempre contiene todas las versiones de un conjunto de registros.

2.4 Tipo de tabla; consulta

El tipo de tabla Woody define cómo se indexan y distribuyen los datos al sistema DFS, y cómo se aplican las propiedades básicas y los eventos de la línea de tiempo anteriores a la organización. Los tipos de consulta definen cómo se exponen los datos subyacentes a la consulta.

|Tipos de tabla|Tipos de consulta admitidos||: -Copiado de.

2.4.1 Tipo de tabla

Copia en escritura: Utilice únicamente parquet para almacenar archivos. Al actualizar datos, los archivos se sincronizan y fusionan mientras se escriben, y solo se modifica la versión del archivo antes de volver a escribir.

Fusionar mientras se lee: parquet) avro se utiliza para almacenar datos. Cuando se actualizan los datos, los nuevos datos se escriben en el archivo delta y luego se combinan de forma asincrónica o sincrónica en una nueva versión del archivo de almacén de columnas.

| Elija | copiar en escritura | fusionar en lectura |:-. Costo de actualización (E/S) Gastos generales de operación de actualización (E/S) | Alto (reescribe toda la teselación) | Bajo (se agrega a los registros delta) | Tamaño del archivo de mosaico | Baja sobrecarga de actualización)| |Frecuencia de escritura|Alta|Baja (depende de la estrategia de fusión)|

2.4.2 Tipo de consulta

Consulta instantánea: esta consulta verá las confirmaciones posteriores y la tabla más reciente instantánea para operaciones de fusión Para fusiones en tablas de lectura, los archivos base y delta más recientes se fusionarán para que se puedan ver datos casi en tiempo real (con un retraso de unos minutos) cuando haya un retraso. Si se produce una operación u otra operación de escritura, reemplazará directamente la tabla parquet existente.

Consulta incremental: después de una operación de confirmación/fusión determinada, la consulta solo verá los datos recién escritos. proceso, implementando una canalización de datos incremental.

Consultas optimizadas para lectura: después de una determinada operación de confirmación/fusión, la consulta solo verá la última instantánea de la tabla. Capacidad para ver archivos de almacenamiento de base/columna en la tabla. últimos segmentos de archivos, con la misma eficiencia de consulta que las tablas de almacén de columnas que no son de Hudi

|Comercio|Instantánea|Optimización de lectura|||: - Latencia de consulta alta (combinación. Delta de almacén de fila de archivo de almacén base/columna | /archivo de registro)|Bajo (rendimiento de consulta del archivo de almacén de base/columna original)|

3. La transmisión estructurada de Spark está escrita en Hudi

El siguiente es el código esquemático para integrar Spark estructurado. streaming Hu Di Debido a que OutputFormat de Hu Di actualmente solo admite llamadas a objetos Spark RDD, el operador forEachBatch de streaming estructurado Spark se utiliza para escribir HDFS.

4. Resultados de la prueba

Sujeto a prueba. En estas condiciones, esta prueba no considera las operaciones de actualización y solo prueba el rendimiento de Hu Di al agregar nuevos datos.

El programa de datos 1 * * * se ejecuta durante 5 días. No se produjeron errores durante este período, lo que provocó que el programa se cerrara.

Kafka lee aproximadamente 6.543.805 datos cada día y consume 9 particiones de temas.

A continuación se detallan algunos puntos clave.

1. ¿pérdida y duplicación de datos?

Debido a que el desplazamiento de la partición de cada registro es único, al verificar si el desplazamiento se repite y no dentro de la misma partición continuamente, se puede concluir que no hay pérdida ni duplicación de datos. consumo

2 Cantidad mínima de datos admitidos escritos en un solo día

Eficiencia de escritura de datos, para tablas cow and mor, no hay Durante la operación de actualización, la tasa de escritura es cercana. a 170 registros por segundo.

3 Comparación del tamaño de archivos de tablas Cow and mor

Lee dos tablas cada diez minutos. El mismo tamaño de archivo de partición, unidad m. siguiente: el tamaño del archivo de la tabla mor aumenta considerablemente, ocupando más recursos del disco cuando no hay operación de actualización, use la tabla cow tanto como sea posible.