Análisis del principio Flume

1. Introducción

Flume es un sistema masivo de recopilación, agregación y transmisión de registros altamente disponible, altamente confiable y distribuido. Flume admite la personalización de varios remitentes de datos en el sistema de registro para recopilar datos; al mismo tiempo, Flume brinda la capacidad de procesar datos y escribir en varios receptores de datos (personalizable). Entre ellos, Flume-NG es una rama de Flume. Su propósito es ser obviamente más simple, de menor tamaño y más fácil de implementar. Su arquitectura más básica se muestra en la siguiente figura: Flume-NG se compone de Agentes, y cada Agente consta
inserte la descripción de la imagen aquí
de Fuente, Canal y Sumidero se componen de tres módulos. La fuente es responsable de recibir los datos, el Canal es responsable de la transmisión de datos y el Sumidero es responsable de enviar los datos al siguiente extremo.

2. Descripción del módulo

nombre ilustrar
Fuente La fuente es responsable de recibir datos o generar datos a través de un mecanismo especial y de agrupar datos en uno o más canales. Hay dos tipos de Fuente: basada en datos y de sondeo. Los tipos de fuente típicos son los siguientes: 1. Fuentes integradas con el sistema: Syslog, Netcat. 2. Fuentes de eventos generados automáticamente: Exec, SEQ. 3. Fuentes de IPC para la comunicación entre Agente y Agente: Avro. 4. La fuente debe estar asociada con al menos un canal.
Canal El canal está ubicado entre la fuente y el sumidero, y se usa para almacenar en caché los datos de la fuente. Cuando el sumidero envía correctamente los datos al canal del siguiente salto o al destino final, los datos se eliminan del canal. El nivel de persistencia proporcionado por Channel está relacionado con el tipo de Channel, y hay tres tipos: 1.Memory Channel: no persistente. 2. File Channel: Implementación de persistencia basada en WAL (Write-Ahead Logging). 3. Canal JDBC: implementación de persistencia basada en base de datos integrada. El canal admite transacciones, proporciona garantías de órdenes débiles y puede funcionar con cualquier cantidad de fuentes y sumideros.
Hundir El sumidero es responsable de transmitir los datos al siguiente salto o destino final, eliminando los datos del canal al completarse con éxito. Los tipos de sumideros típicos son los siguientes: 1. Almacenar datos en el sumidero del terminal de destino final, como: HDFS, HBase. 2. Sumidero que se consume automáticamente, como: Sumidero nulo. 3. Sumidero de IPC para comunicación entre agentes: Avro. Sink debe actuar en un Canal exacto.

Flume también se puede configurar como múltiples fuentes, canales y sumideros, como se muestra en la siguiente figura:
inserte la descripción de la imagen aquíLa confiabilidad de Flume se basa en el intercambio de transacciones entre agentes. Cuando el próximo agente se cae, el canal puede conservar los datos y el El agente lo transmitirá después de la recuperación. La disponibilidad de Flume se basa en los mecanismos integrados de equilibrio de carga y conmutación por error. Tanto el canal como el agente se pueden configurar con varias entidades, y se pueden usar estrategias como el reparto de carga entre entidades. Cada agente es un proceso de JVM y el mismo servidor puede tener varios agentes. Los nodos de recopilación (Agent1, 2, 3) son responsables de procesar los registros, y el nodo de agregación (Agent4) es responsable de escribir en HDFS. El agente de cada nodo de recopilación puede seleccionar varios nodos de agregación, lo que puede lograr el equilibrio de carga.
inserte la descripción de la imagen aquí
Para conocer la arquitectura y los principios detallados de Flume, consulte: https://flume.apache.org/releases/1.9.0.html .

3. Principio del canal

Confiabilidad entre Agentes
El flujo de intercambio de datos entre Agentes se muestra en la siguiente figura.
inserte la descripción de la imagen aquí

  1. Flume adopta un método basado en Transacciones para garantizar la confiabilidad de la transmisión de datos.Cuando los datos fluyen de un Agente a otro, dos Transacciones ya han comenzado a tener efecto. El sumidero que envía al agente primero obtiene un mensaje del canal y envía el mensaje a otro agente. Si el Agente que recibe el mensaje acepta y procesa con éxito el mensaje, el Agente que lo envía enviará Transacciones, lo que indica que la transmisión de datos se completó con éxito y de manera confiable.

  2. Cuando el Agente receptor recibe el mensaje enviado por el Agente emisor, inicia una nueva Transacción. Cuando los datos se procesan con éxito (escritos en el Canal), el Agente receptor envía las Transacciones y envía una respuesta de éxito al Agente emisor.

  3. Si la transmisión de datos falla antes de un determinado compromiso (commit), las últimas transacciones se iniciarán nuevamente y los datos que no se enviaron la última vez se retransmitirán. Debido a que la operación de confirmación ya ha escrito las Transacciones en el disco, después de que el proceso falla y sale y restaura el negocio, aún se pueden continuar con las últimas Transacciones.

4. La relación entre Flume y HDFS

Cuando el usuario configura HDFS como Sink of Flume, HDFS actúa como el sistema de almacenamiento de datos final de Flume, y Flume escribe todos los datos transmitidos en HDFS de acuerdo con la configuración.

5. La relación entre Flume y HBase

Cuando el usuario configura HBase como Sink of Flume, HBase sirve como el sistema de almacenamiento de datos final de Flume, y Flume escribe todos los datos transmitidos en HBase de acuerdo con la configuración.

Supongo que te gusta

Origin blog.csdn.net/weixin_43114209/article/details/132180480
Recomendado
Clasificación