Todos os produtos
Search
Central de documentação

E-MapReduce:Flume

Última atualização: Aug 14, 2026

O Apache Flume é um sistema distribuído, confiável e de alta disponibilidade (HA) que coleta, agrega e transfere grandes volumes de dados de log de diversas fontes para um repositório central.

Cenários de uso

O Flume é usado principalmente para coleta de logs, mas também transfere outros tipos de dados por meio de uma source personalizada.

O Flume envia dados para plataformas de computação em tempo real, como Flink, Spark Streaming e Storm, e para plataformas de computação offline, como MapReduce (MR), Hive e Presto. Também é possível enviar dados diretamente para sistemas de armazenamento, como Hadoop Distributed File System (HDFS), OSS, Kafka e Elasticsearch, preparando-os para análises subsequentes e limpeza de tráfego.flume2

Arquitetura

Um Flume Agent é uma instância do Flume. Trata-se de um processo da Java Virtual Machine (JVM) que controla o fluxo de dados de Events dos produtores aos consumidores. O Flume Agent consiste em uma source, um Channel e um Sink. Uma source pode gravar em vários Channels, e múltiplos Sinks podem ler de um único Channel.flume

Termos

Nome

Descrição

Event

O Event é a unidade básica de dados que flui por um Flume Agent. Ele consiste em um mapa Header opcional e um array de bytes com os dados.

Veja o exemplo a seguir.

--------------------------------
| Header (Map) | Body (byte[]) |
--------------------------------
               Flume Event

source

A source atua como coletora de dados. Ela obtém informações de uma fonte externa e as envia em lotes para um ou mais Channels.

As sources mais comuns incluem:

  • Avro source: Escuta em uma porta Avro para receber Events enviados por um cliente Avro. O Avro é um protocolo fornecido pelo Hadoop para serialização de dados.

  • Exec source: Obtém dados ao monitorar a saída de uma linha de comando, como tail -f /var/log/messages.

  • NetCat TCP source: Escuta em uma porta TCP específica para obter dados, de forma semelhante à Netcat UDP source.

  • Taildir source: Monitora vários arquivos em um diretório, registra offsets e evita perda de dados. Esta source é amplamente utilizada.

Channel

Funciona como fila de buffer entre a source e o Sink.

Os Channels mais comuns incluem:

  • Memory Channel: Armazena dados em cache na memória. Oferece alto desempenho e uso frequente.

  • File Channel: Armazena dados em cache em arquivos. Registra arquivos de Checkpoint e DATA, garantindo alta confiabilidade, porém com menor desempenho.

  • JDBC Channel: Mantém dados em cache em um banco de dados relacional.

  • Kafka Channel: Usa o Kafka para armazenar dados em cache.

Sink

O Sink obtém um Event de um Channel e o confirma no armazenamento externo em uma transação. Após a confirmação bem-sucedida da transação, o Event é removido do Channel.

Os Sinks mais comuns incluem:

  • Logger Sink: Destinado a testes.

  • Avro Sink: Converte dados em Avro Events. Seu uso principal é conectar múltiplos Flume Agents.

  • HDFS Sink: Grava dados no HDFS. Este Sink é frequentemente utilizado.

  • Hive Sink: Grava dados em tabelas ou partições do Hive usando transações do Hive para escrever Events.

  • Kafka Sink: Envia dados para o Kafka.