Lago de datos de streaming Apache Paimon V 0.4 y perspectivas futuras

Resumen: este artículo está compilado a partir del intercambio en Apache Paimon Meetup por Li Jinsong (Zhixin), jefe del equipo de almacenamiento de tablas de big data de código abierto de Alibaba Cloud, experto técnico senior de Alibaba, Apache Flink PMC y Paimon PPMC. El contenido de este artículo se divide principalmente en cuatro partes:

  1. Dificultades en el almacenamiento del lago
  2. Inmersión profunda en Apache Paimon 0.4
  3. práctica social
  4. Planificación posterior

Haga clic para ver el PPT de video y discurso original

Paimon 0.4 acaba de salir en junio de este año, es una versión muy competitiva, y además es la primera versión después de entrar en la incubadora de Apache.

1. Dificultades en el almacenamiento lacustre

Hay tres nuevos escenarios principales para los lagos de datos:

  • En el primer escenario, los datos en tiempo real ingresan al lago. Los datos pueden actualizar los datos de CDC de la base de datos en tiempo real e ingresar al lago en el lago de datos en tiempo real, de modo que varios motores puedan analizar los datos lo antes posible.
  • En la segunda escena, el campo del tiempo real se amplía. Amplíe los campos de las tablas de dimensiones en tiempo real y preséntelos para consultas posteriores y lectura de secuencias.
  • El tercer escenario es la lectura de flujo de datos en tiempo real. Proporciona lectura de transmisión de la experiencia de la cola de mensajes y puede generar un registro de cambios de acuerdo con la clave principal.

2

Los puntos débiles de entrar al lago son los siguientes:

  • Consumo de recursos y rendimiento en tiempo real: bajo rendimiento de actualización y gran consumo de recursos; la actualización de COW es deficiente, la consulta de MOR es deficiente y es difícil elegir contrapresión, contrapresión o contrapresión.

  • Hay muchas cosas que administrar en el lago de datos: administrar la compactación, limpiar archivos históricos pequeños, limpiar particiones caducadas.

  • Evolución del esquema: ¿Qué pasa con la adición de columnas aguas arriba y almacenamiento en lago? ¿Reiniciar el trabajo de sincronización? Un montón de mesas pequeñas consumen recursos y energía.

3

Hay tres puntos débiles para las mesas anchas:

  • Consumo de recursos y tiempo real: el rendimiento y los recursos son igualmente importantes.

  • Diversidad de entrada: entrada CDC; la entrada puede estar fuera de servicio.

  • Lectura: espero que pueda ser lo suficientemente eficiente, tenga empuje de proyecto y se pueda leer en una secuencia.

4

Los puntos débiles de la lectura de secuencias son los siguientes:

  • Lectura de flujo único totalmente incremental: primero lea la cantidad completa y luego siga el incremento, el flujo completo, no el incremento de solo lectura.

  • Generación de registro de cambios: algunos escenarios requieren bajo costo; algunos escenarios requieren baja latencia.

  • FileNotFound: la contradicción entre la limpieza de archivos del lago de datos y la lectura de transmisión.

  • Unión de búsqueda: Admite la unión de búsqueda de Flink.

5

Apache Paimon es un lago de datos especialmente diseñado para el procesamiento de CDC y la computación de flujo. Esperamos brindarle una experiencia de manejo de lago cómoda y automática.

También se puede ver en el sitio web oficial que Apache Paimon admite escritura de datos de alta velocidad, generación de registros de cambios y consultas eficientes en tiempo real.

2. Apache Paimon 0.4 en profundidad

6

La arquitectura general de Paimon es un lago de datos construido en Data Lake (HDFS/OSS/S3), y todos sus metadatos y datos se almacenan en estos lagos de datos, que es un formato de lago de datos. El Meta de este lago de datos también se puede sincronizar con Hive Metastore y Data Lake Formation de Alibaba Cloud para una gestión tabular unificada basada en datos. Luego, el lago de datos sincroniza el registro de cambios con el lago y luego sincroniza Kafka.

Ahora Paimon 0.4 proporciona sincronización Schema Evolution de Flink CDC, y también proporciona sincronización de toda la base de datos de MySQL.Paimon 0.5 posterior admitirá la sincronización de datos CDC de Kafka. Además, también podemos escribir datos de registro de Append en Paimon a través de la escritura por lotes a través de Flink, o escribirlos en Paimon a través de la fusión de tablas amplias.

En el lado de la lectura, Paimon puede admitir la lectura por lotes y las consultas Ad-Hoc de varios motores, como Spark, Trino, StarRocks, etc., y también puede leer su registro de cambios de forma totalmente incremental e integrada a través de Flink, y la lectura de transmisión puede proporcionar datos Si el pedido está garantizado, también puede usar Flink para buscar unirse.

7

Paimon es un lago de datos + arquitectura LSM. Permítanme compartir con ustedes por qué Paimon necesita LSM.

LSM es un formato fácil de escribir. Puede ver todo el proceso al escribir, pero no necesita comprender el proceso específico. La idea general es que la escritura ocurre en Flink Sink. Cuando llegue el punto de control, ordenará los datos en memoria y vacíe los registros en el archivo Level0.

Gracias a la compactación menor asíncrona nativa de LSM, puede caer a la capa inferior a través de la compactación asíncrona, o pueden ocurrir algunas fusiones y compactación menor en la capa superior, de modo que pueda mantener el LSM sin demasiados niveles. El rendimiento de la lectura combinada está garantizado sin causar una gran amplificación de escritura.

Además, Flink Sink limpiará automáticamente las instantáneas y los archivos caducados, y también puede configurar estrategias de limpieza de particiones. Por lo tanto, todo el Paimon proporciona escrituras Append de alto rendimiento, compactación local de bajo consumo, limpieza completamente automática y fusión ordenada. Por lo tanto, su rendimiento de escritura es muy alto y la lectura combinada no será demasiado lenta.

8

Basándonos en el diseño de Paimon, echemos un vistazo a la práctica de producción del mismo viaje y comparemos los beneficios que trajo el reloj Hudi original.

  • Los recursos que ingresan al lago se ahorran entre un 30% y un 40%.

  • Rendimiento de escritura mejorado en 3x.

  • El rendimiento de algunas consultas ha mejorado unas 7 veces.

9

Acabo de compartir algunas capacidades de los datos de Paimon CDC en el lago en términos de rendimiento. Permítanme presentarles algunas de las herramientas más convenientes que Paimon brinda a los usuarios en CDC en el lago.

Por ejemplo, en Paimon 0.4, brindamos acceso a Flink CDC. El CDC de Flink integrado de forma nativa proporciona trabajos de DataStream, y los datos del registro de cambios se escriben en Paimon a través de Schema Evolution a través de Flink CDC.

Sincronización de tablas, que puede administrar automáticamente los cambios en la estructura de la tabla, agregar columnas, eliminar columnas, cambiar tipos, renombrar columnas, etc. También puede agregar columnas calculadas, definir columnas de partición, definir claves primarias y sincronizar subbases de datos y subtablas a través de la definición de sincronización de tablas.

Además, Paimon CDC también proporciona la sincronización de toda la base de datos, lo que permite sincronizar todas las tablas de la base de datos completa con Paimon, por lo que no tiene que preocuparse por OOM o cuelgues fáciles. Cuando se sincroniza un trabajo, los recursos para la sincronización se pueden reducir tanto como sea posible. También es compatible con INCLUSIÓN, EXCLUSIÓN y prefijos y sufijos de nombres de tablas, omite automáticamente las tablas fallidas y agrega tablas dinámicamente.

En Paimon 0.5, proporcionamos sincronización Kafka. No solo se puede sincronizar a través de Flink CDC, sino que también se pueden sincronizar los datos de CDC en Kafka. Puede escribir su base de datos, TIDB, MySQL, Oracle en Kafka y luego sincronizarla con Paimon con la sincronización de Schema Evolution.

Se puede ver que la sincronización en el lago es muy simple, y todo el trabajo de sincronización se puede iniciar usando la acción Flink de Paimon. Incluso Paimon también proporciona la API DataStream de CDC. Puede llamar directamente a nuestros trabajos integrados para sincronizar datos, o puede escribir su propia canalización de evolución de esquema de flujo de Flink a través de la API DataStream de CDC.

10

Paimon admite la definición de actualización parcial, puede definir el motor de actualización parcial. De esta manera, diferentes campos se pueden escribir en diferentes campos, y la lectura por lotes se puede realizar más tarde. Incluso Paimon también proporciona lectura de flujo. Siempre que se declare el Changelog Producer, los datos combinados se pueden leer en flujo. Su consulta también admite Consulta eficiente de poda de columnas.

Además, la entrada de actualización parcial puede estar fuera de servicio, por lo que en la tabla de actualización parcial, el campo de secuencia también se puede definir para manejar situaciones fuera de servicio. El concepto de Grupo de Secuencias se introdujo en Paimon 0.5, para resolver los diferentes desordenes de cada flujo. Si comparten el mismo campo de versión, después de actualizar una transmisión, es posible que no se actualice la última versión de otra transmisión.

Por ejemplo, hay dos tablas ascendentes para actualizar, por lo que se deben definir dos grupos de secuencias y los campos de este grupo de secuencias pueden ser campos de versiones diferentes. De esta manera, los diferentes flujos solo necesitan actualizar sus propias versiones, y no importa cuán desalineados estén los dos lados, sus datos finales se pueden actualizar correctamente.

11

En Paimon, su lectura de flujo es uno de sus núcleos, que también es un punto clave que lo distingue de otros lagos de datos. Paimon puede transmitir datos sin procesar, puede establecer Changelog-producer=input. Si sus datos son un CDC completo, puede usar este modo, que es el más eficiente y consume menos recursos.

Si su transmisión no es un CDC completo, como una entrada de actualización parcial. Por lo tanto, se requiere la lectura de flujo descendente para generar un registro de cambios. Paimon no solo admite la generación de registros de cambios, sino que también tiene dos modos muy flexibles, el modo de búsqueda y el modo de compactación completa.

El modo de búsqueda puede buscar dinámicamente los archivos de alto nivel al escribir, encontrar los datos más recientes, fusionar el registro de cambios más reciente y enviarlo al flujo descendente. Este es el más rápido y el que recomendamos para un retraso de 1 a 3 minutos, pero costará más.

Si algunos trabajos requieren un costo muy bajo y pueden aceptar una mayor demora, puede usar el modo de compactación completa. Generará el registro de cambios correspondiente cuando esté en compactación completa asincrónica, y puede configurar el tiempo de programación del período de compactación completa para que sea más largo, como 10 minutos. Su ventaja es que el costo es menor, pero la demora es mayor.

Acabamos de mencionar que existe una contradicción entre el almacenamiento del lago y la lectura de transmisión, que es FileNotFound. Debido a que el almacenamiento de transmisión necesita limpiar constantemente las instantáneas, habrá menos archivos pequeños en él. Sin embargo, si la lectura de transmisión se basa en una instantánea anterior, una vez que el trabajo de transmisión se cuelga, la instantánea que leyó se limpiará y no se podrá recuperar en absoluto.

Para el problema, Paimon propuso Consumer-ID, que es algo similar al Group-ID de Kafka. Puede garantizar que después de que el trabajo se cuelgue y se reinicie, la instantánea que leyó no se limpiará.

12

Paimon 0.4 también ha hecho un gran progreso en la ecología, como se muestra en la figura de arriba.

Al principio, Paimon solo era compatible con Flink y servía como Flink Table Store para respaldar la ecología y el uso completos de Flink.

Se admite más en Paimon 0.4. Por ejemplo, Spark admite Batch Read, Batch Write y también puede crear Table y Alter Table en Spark; admite Batch Reader, Batch Write, Create Table, etc. en Hive; admite Create Table, Alter Table, etc. en Trino y otros funciones

Tenemos dos motores que están bien integrados, uno es Flink y el otro es Spark. Esperamos que todas sus funciones, como la lectura por lotes, la escritura por lotes, la creación de tablas, la modificación de Meta y otros comandos, estén mejor soportadas en Flink y Spark. En segundo lugar, esperamos que otros motores puedan admitir la lectura de Paimon e incluso más operaciones, como Crear tabla, Escribir tabla, etc.

Además de estos motores de procesamiento tradicionales, StarRocks, Doris y Seatunnel también integran Paimon, y el código general está básicamente listo y está a punto de publicarse. MaxCompute y Hologres en Alibaba Cloud, y Arctic en NetEase también están en el camino de la investigación y el desarrollo.

3. Práctica de aplicación social

13

En la actualidad, los principales usuarios y participantes de la comunidad de código abierto incluyen Alibaba Cloud, ByteDance, Tongcheng Travel, Bilibili, Zhongyuan Bank, Mihayou, Autohome y otras empresas.

Echemos un vistazo a cómo todos usan Paimon.

14

En la plataforma de computación en la nube de Alibaba, Paimon ocupa la posición número 1 en el lago de datos. Se espera que todos los cálculos de la plataforma de computación en la nube de Alibaba se integren en Paimon, integren Paimon y lean Paimon. La mejor integración es la plataforma de la versión Flink de computación en tiempo real, que se encuentra en Flink y la plataforma de big data de código abierto E-MapReduce, y espera reemplazar a Hudi como la primera opción para el acceso al lago en tiempo real.

La imagen de arriba muestra Apache Paimon. Podemos ver que podemos acceder al lago a través de la computación en tiempo real Flink de Alibaba Cloud, CTAS en el lago y transmisión de Flink en tiempo real a través de Alibaba Cloud. También espero que los datos de Paimon puedan ser consultados por MaxCompute y Hologres, y también puedan integrarse mejor en la plataforma de big data de código abierto E-MapReduce.

15

En ByteDance, los ingenieros usan Paimon+Flink como el sistema de producción de Streaming Warehouse para la gestión de linaje y consultas consistentes. Como se muestra en la figura anterior, los datos comerciales caen en Streaming Warehouse a través de Streaming ETL, que es similar al concepto de vista de materialización de Streaming. De esta manera, todas las tablas de Paimon se pueden consultar a través de Consulta consistente.

dieciséis

En el mismo viaje, la introducción de Paimon optimizó principalmente el almacén de datos casi en tiempo real del Hudi original.

  • En el escenario de escritura en tiempo real en la capa ODS, Paimon tiene alrededor de 114+ trabajos; el incremento diario más grande de Upsert es de 20 millones+; el tamaño de tabla total más grande es de 9 mil millones+.

  • En el escenario de actualización parcial, Paimon tiene más de 10 trabajos; se aplica el concepto de actualización parcial verdadera (Sequence-Group).

  • En el escenario de transmisión/lectura incremental, Paimon tiene más de 20 trabajos de lectura incremental de transmisión; más de 10 trabajos de lectura incremental por lotes por hora.

17

Zhongyuan Bank está explorando el almacenamiento de datos de transmisión; Mihayou también está explorando la integración de la tecnología de transmisión y procesamiento por lotes; Bilibili está abordando la dirección de IA, considerando el escenario de Actualización parcial; Chenfeng Information está explorando datos de nivel de TB en el lago, y ha creado una integración de procesamiento por lotes y transmisión de Flink + el almacén de datos integrado de transmisión por lotes de Paimon, etc.

4. Planificación posterior

18

Esperamos lograr tal Streaming LakeHouse. Los datos se pueden ingresar en Paimon a través de una forma muy conveniente de ingresar al lago, y también se puede establecer una tubería de transmisión a través de la lectura de flujo y la lectura por lotes de Paimon. Al mismo tiempo, Paimon también debería tener una muy buena ecología, que puede ser cuestionada por varios motores. Esta es una dirección general de Paimon+Flink en el futuro.

19

Para crear un Streaming LakeHouse simple y fácil de usar, existen aproximadamente las siguientes tres direcciones.

Primera dirección:

  • Habrá más CDC yendo al lago durante el procesamiento de CDC. Por ejemplo, la entrada de Kafka en el lago que acabamos de mencionar debería ser más simple, más natural y más automática.

  • En la actualidad, Paimon aún necesita establecer una cantidad de cubos. El rendimiento de un depósito que es demasiado pequeño es relativamente bajo. Después de que la cantidad de datos sea grande, el rendimiento disminuirá. Y un cubo que es demasiado grande tiene muchos archivos pequeños. Aunque hay un LSM en un depósito, ya tiene un rendimiento relativamente bueno, pero aún debe ajustarlo. Por lo tanto, se proporcionará un Cubo dinámico en Paimon 0.5, y el estado deseado es completamente automático.

  • Crear etiqueta, espero que después de que Paimon ingrese al lago en tiempo real, se pueda imprimir una etiqueta todos los días para la producción fuera de línea.

La segunda dirección: mejora de procesamiento de solo agregar. Append-Only antes de Paimon necesita definir Bucket, que es un concepto muy difícil de definir. Por lo tanto, Paimon debería admitir tablas reales fuera de línea en el futuro, no debería haber cubos y la escritura de tablas fuera de línea también debería incluir la fusión de archivos pequeños, y esto también está en línea con el concepto totalmente automático de Paimon.

La tercera dirección: además del acoplamiento ecológico de StarRocks, esperamos construir Spark en un segundo motor bien integrado como Paimon. La capacidad de lectura y escritura de Spark debería ser muy buena. Un lago de datos completo.

20

A continuación, revise el historial de desarrollo de Paimon. Se discutirá en la comunidad de Flink en 2021; la primera versión de Flink Table Store se lanzará en mayo de 2022; 0.3 se lanzará en enero de 2023, que es una versión de producción disponible de Paimon; ingresará a la incubadora en marzo y pasar a llamarse Apache Paimon. En junio de 2023, se lanzó Paimon 0.4.

En el futuro, esperamos que el lago de datos en tiempo real de CDC esté completamente maduro, que la producción de tablas fuera de línea de Append esté disponible, que la ecología esté completamente conectada y que Spark entre en un estado maduro.

Preguntas y respuestas

P: CDC escribe tablas de Paimon, si el tráfico binlog es de 3000 registros por segundo + inicialización completa, cómo optimizarlo. ¿El punto de control a menudo falla en la prueba actual?

Respuesta: La clave es ver dónde está el cuello de botella de rendimiento, si hay un problema de memoria y, finalmente, mirar Jstack.

P: ¿Se puede modificar dinámicamente la estructura de la tabla?

Respuesta: Sí, Spark o Flink 1.17 están disponibles.

P: ¿Cuándo se lanzará 0.5?

R: Alrededor de agosto.

P: ¿Qué hay de la latencia de la lectura de secuencias?

Respuesta: La demora mínima en el punto de control es de 1 minuto.

P: ¿Cómo migrar fácilmente de Hudi a Paimon?

Respuesta: Sí, el SparkGenericCatalog lanzado ahora también es para la coexistencia de tablas Hudi y Paimon.

P: ¿Puede ampliar y hablar sobre el modo de búsqueda de Changelog?

Respuesta: Puedes consultar el sitio web oficial.

Tabla de claves principales | Paimon apache

P: ¿Es el cubo un parámetro importante y cómo ajustarlo?

Respuesta: Sí, de acuerdo con la cantidad de datos, puede ejecutarlo y verificarlo. Actualmente, la última versión también admite cubos dinámicos.

P: Después de un período de almacenamiento, ¿se puede ajustar manualmente el cubo? ¿Se volverán a puntuar los datos anteriores al ajuste?

R: Para obtener más información, consulte Rescale Bucket en el sitio web oficial.

Cubo de cambio de escala | Paimon apache

P: Cuando los datos en tiempo real están desordenados, ¿cómo evita la actualización parcial de Paimon que los datos antiguos sobrescriban los nuevos? ¿Existe una implementación similar a la columna de secuencia?

Respuesta: Sí, consulte el campo de secuencia en el sitio web oficial para obtener más información.

Tabla de claves principales | Paimon apache

P: Al comprimir, ¿tiene un gran impacto en el rendimiento de lectura y escritura?

Respuesta: Tiene un impacto en la escritura, que es una compensación entre la lectura y la escritura.

Sigue a Paimon

El desarrollo de lagos de datos de transmisión necesita su apoyo:

Haga clic para ver el PPT de video y discurso original

Supongo que te gusta

Origin blog.csdn.net/weixin_44904816/article/details/132222366
Recomendado
Clasificación