Apache Flume - Arquitetura
A ilustração a seguir descreve a arquitetura básica do Flume. Conforme mostrado na ilustração,data generators (como Facebook, Twitter) geram dados que são coletados por Flume individual agentscorrendo sobre eles. Depois disso, umdata collector (que também é um agente) coleta os dados dos agentes que são agregados e colocados em um armazenamento centralizado, como HDFS ou HBase.
Flume Event
A event é a unidade básica dos dados transportados dentro Flume. Ele contém uma carga útil de matriz de bytes que deve ser transportada da origem ao destino, acompanhada de cabeçalhos opcionais. Um evento típico de Flume teria a seguinte estrutura -
Agente Flume
A agenté um processo daemon independente (JVM) no Flume. Ele recebe os dados (eventos) de clientes ou outros agentes e os encaminha para o próximo destino (coletor ou agente). Flume pode ter mais de um agente. O diagrama a seguir representa umFlume Agent
Conforme mostrado no diagrama, um Flume Agent contém três componentes principais, a saber, source, channele sink.
Fonte
UMA source é o componente de um Agente que recebe dados dos geradores de dados e os transfere para um ou mais canais na forma de eventos Flume.
O Apache Flume suporta vários tipos de fontes e cada fonte recebe eventos de um gerador de dados especificado.
Example - Fonte Avro, fonte Thrift, fonte twitter 1% etc.
Canal
UMA channelé um armazenamento temporário que recebe os eventos da fonte e os armazena até que sejam consumidos pelos sumidouros. Ele atua como uma ponte entre as fontes e os sumidouros.
Esses canais são totalmente transacionais e podem funcionar com qualquer número de fontes e coletores.
Example - Canal JDBC, canal do sistema de arquivos, canal de memória, etc.
Pia
UMA sinkarmazena os dados em armazenamentos centralizados como HBase e HDFS. Ele consome os dados (eventos) dos canais e os entrega ao destino. O destino do coletor pode ser outro agente ou os armazenamentos centrais.
Example - pia HDFS
Note- Um agente de fluxo pode ter várias fontes, sumidouros e canais. Listamos todas as fontes, sumidouros e canais com suporte no capítulo de configuração do Flume deste tutorial.
Componentes Adicionais do Agente Flume
O que discutimos acima são os componentes primitivos do agente. Além disso, temos mais alguns componentes que desempenham um papel vital na transferência dos eventos do gerador de dados para os armazenamentos centralizados.
Interceptores
Interceptadores são usados para alterar / inspecionar eventos de canal que são transferidos entre a fonte e o canal.
Seletores de canal
Eles são usados para determinar qual canal deve ser escolhido para transferir os dados no caso de vários canais. Existem dois tipos de seletores de canal -
Default channel selectors - Também conhecidos como seletores de canal de replicação, eles replicam todos os eventos em cada canal.
Multiplexing channel selectors - Decide o canal para enviar um evento com base no endereço no cabeçalho desse evento.
Sink Processors
Eles são usados para invocar um coletor específico do grupo selecionado de coletores. Eles são usados para criar caminhos de failover para seus coletores ou eventos de equilíbrio de carga em vários coletores de um canal.