Introdução
O que é o Apache Flume ?
- O Apache Flume é um serviço que permite coletar, agregar e mover grandes quantidade de dados em um ambiente distribuído.
- O Apache Flume foi inicialmente desenvolvido pela empresa Cloudera.
Em 2012, Flume passou a ser um projeto top level na Apache Software Foundation.
Objetivo
O objetivo principal do Apache Flume é ingerir dados de eventos no HDFS (Hadoop Distributed File System) de forma simples e automatizada.
Porem ele pode ser utilizado em diversos cases. Como por exemplo, ele pode ser usado para transportar grandes quantidades de dados, como os gerados em social media, e-mails , logs e qualquer fonte de dados possível.
Requisitos do sistema para rodar flume:
- Java Runtime Environment — Java 1.8 ou posterior.
- Memória — Memória suficiente para configurações usadas source.
- Espaço em disco — espaço em disco suficiente para configurações usadas por channels.
- Permissões de Diretório — Permissões de Leitura / Gravação para diretórios usados pelo agente
Modelo de Fluxo de Dados
Source: responsável pela entrada de dados;
Channel: armazena os dados que passam do source para o sink. Seu comportamento é parecido com uma fila;
Sink: responsável por enviar os dados ao destino/ saída. A saída pode ser outro agente Flume.
O Flume suporta os seguintes mecanismos para ler os dados:
- Avro : O Avro é uma chamada de procedimento remoto e uma estrutura de serialização de dados desenvolvida dentro do projeto Hadoop do Apache.
- Thrift : É uma estrutura de chamada de procedimento remoto (RPC) para, trabalhar com linguagens (Facebook).
- Syslog : É um padrão criado pela IETF para a transmissão de mensagens de log em redes IP.
Netcat: É uma ferramenta de rede, para realizar rastreamento de portas ou realizar transferências de arquivos bit a bit entre os equipamentos
Exemplos de arquitetura