Red de conocimiento informático - Material del sitio web - Canal para Big Data

Canal para Big Data

En el proceso empresarial de big data, la recopilación de datos es un paso muy importante. Las plataformas de muchas empresas generan una gran cantidad de registros todos los días (generalmente datos de transmisión, como pv de motores de búsqueda, consultas, etc.

Cloudera, Inc.

utiliza Flume. > Apache Flume No se limita a la agregación de datos de registro. Debido a que las fuentes de datos son personalizables, Flume se puede utilizar para entregar grandes cantidades de datos de eventos, incluidos, entre otros, datos de tráfico de red, datos generados por redes sociales, mensajes de correo electrónico y prácticamente cualquier fuente de datos posible.

Los marcos de código abierto similares a Flume incluyen Scribe de Facebook, Chukwa de Apache y Time Tunnel de Alibaba.

Hay uno o más Agentes dentro de Flume. Para cada Agente, es un proceso demonio independiente (JVM), responsable de recibir la recopilación de su cliente u otros Agentes, y luego convertir los datos obtenidos. transferido rápidamente al siguiente receptor o agente del nodo de destino.

El agente consta de tres componentes principales: fuente, canal y sumidero.

La fuente es responsable de generar o recopilar datos. Generalmente interactúa con algunos programas RPC u otros receptores de nodos de Flume, recibe datos del generador de datos y pasa los datos recibidos a uno o más en el formato de. Canal de eventos.

Flume proporciona múltiples formas de recibir datos, incluidos avro, thrift, jms, syslog, etc., y puede personalizarlas si no satisfacen sus necesidades.

Un canal es un buffer entre una fuente y un sumidero. Por lo tanto, los canales permiten que las fuentes y los sumideros funcionen a velocidades diferentes. Los canales son seguros para subprocesos y pueden manejar múltiples escrituras de origen y múltiples lecturas de receptores simultáneamente.

Un canal es un contenedor de almacenamiento efímero que es responsable de la persistencia del almacenamiento de datos. Puede persistir en jdbc, archivos, memoria y cachés de datos recibidos desde la fuente en formato de evento hasta que se consumen. . Los datos solo se almacenan en la siguiente ubicación de almacenamiento (que puede ser la ubicación de almacenamiento final, como HDFS; o puede ser el canal del siguiente nodo Flume), y los datos se eliminan del canal actual. Este proceso se controla mediante transacciones para garantizar la confiabilidad de los datos.

El Sink es responsable de reenviar datos, sondear constantemente el canal en busca de eventos y eliminarlos en lotes, y luego escribirlos en lotes en un sistema de almacenamiento o indexación, o enviarlos a otro Flume Agent.

Sink es completamente transaccional. Cada Sink inicia una transacción con el canal antes de eliminar datos de forma masiva del canal. Una vez que el lote de eventos se escribe exitosamente en el sistema de almacenamiento o en el siguiente Flume Agent, Sink usa el canal para confirmar la transacción. Una vez confirmada la transacción, el canal elimina los eventos de su propio búfer interno.

Los destinos para el componente Sink incluyen hdfs, registrador, archivo, HBase o personalizado. Si el receptor no puede enviar, reescribirá los datos en el canal, lo que implica una transacción Flume (reversión).

El flujo de datos de Flume se basa en eventos.

Se pueden conectar varios agentes en secuencia y la fuente de datos inicial se recopila y almacena en el sistema de almacenamiento final. Este es el caso más simple y, en términos generales, se debe controlar la cantidad de agentes conectados en este orden, porque la ruta para el flujo de datos será más larga y, si no se considera la conmutación por error, una falla afectará todo el servicio de recopilación de agentes en Flow. .

Esta situación se aplica a más escenarios, como la recopilación de registros de comportamiento del usuario del sitio web. La disponibilidad del sitio web utiliza el modo de carga del clúster. Cada nodo generará registros de comportamiento del usuario. registro de comportamiento del usuario para cada nodo. Configure un Agente para recopilar datos de registro individualmente, y luego varios Agentes eventualmente agregarán los datos al sistema de almacenamiento de datos utilizado para almacenar los datos, como HDFS.

Flume también admite transmisiones de múltiples etapas. Por ejemplo, cuando un flujo de registro mixto de syslog, java, nginx, tomcat, etc. comienza a fluir hacia un proxy, el proxy puede separar el flujo de registro mixto y crear su propio canal de entrega para cada registro.

El Agente1 en la figura siguiente es un nodo de enrutamiento responsable de ecualizar eventos en el canal a los componentes receptores correspondientes. Cada componente receptor está conectado a un agente independiente.