Introdução ao Apache Flume

setembro 1, 2016 5:00 pm Publicado por Deixe um comentário

Logs são uma fonte básica de informação e ajudam a monitorar a ‘saúde’ de sistemas, detectando falhas em hardware e serviços. Podem ajudar também na solução de problemas. Embora, de uma forma geral, um log represente registro de eventos, esta é uma ferramenta importante na administração de sistemas.

Com o surgimento de tecnologias e ferramentas para Big Data, a geração e utilização dos logs se tornaram cada vez mais importantes, uma vez que agora é possível ‘prever’ quando um equipamento precisa de manutenção, o comportamento de um indivíduo em um e-commerce e a geração de recomendações, entre outras coisas.

Administrar o volume de logs que é gerado por diversos sistemas/ dispositivos não é uma tarefa fácil. Em 2011, a Cloudera criou o Flume, um sistema distribuído, confiável e disponível para coletar, agregar e mover grandes quantidades de dados de muitas fontes diferentes para um armazenamento de dados centralizado. Em 2012, esse passou a ser um projeto top level na Apache Software Foundation.

O Apache Flume não se restringe apenas à coleta de logs, e pode ser usado para transportar grandes quantidades de dados, como os gerados em social media, e-mails e qualquer fonte de dados possível.

O objetivo principal do Flume é ingerir dados de eventos no HDFS (Hadoop Distributed File System) de forma simples e automatizada. Porém, seu uso não se limita apenas ao HDFS; é possível enviar também dados para um arquivo ou banco de dados, entre outros.

Abaixo, o modelo de fluxo de dados do flume:

image01 (1)

Um agente Flume roda na JVM (Java Virtual Machine) e possui os seguintes componentes:

  • 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.

A configuração de um agente é feita por meio de um arquivo local que tem o formato de um arquivo properties utilizado em Java.

Abaixo, um exemplo de configuração de um agente com um source e um sink:

image00 (3)

No exemplo, a1 é o nome do agente. Nele, está sendo configurado um source (r1), um channel (c1) e um sink (k1).

O tipo do source é netcat – captura qualquer dado enviado a um socket em uma porta tcp -, o endereço e portão são localhost:44444.

O tipo do sink é logger, o que significa que os dados serão gravados em um arquivo. Este tipo é útil para fins de teste.

O tipo do canal é memory com capacidade para armazenar 1000 eventos no buffer e 100 eventos por transação.

Por fim, tanto source como sink são ligados ao canal c1.

Este é apenas um exemplo simples de configuração. Caso quiséssemos configurar mais de um agente, isso poderia ser feito no mesmo arquivo, alterando apenas o nome do agente. Isso pode ser bem útil a quem precisa coletar e analisar logs de diversos sistemas e máquinas, uma vez que configurados esses agentes, os dados estariam disponíveis em HDFS, banco de dados ou outro repositório (definido no sink), trazendo agilidade na análise e processamento.

Apache Flume é uma ferramenta flexível, podendo ser usada para diversas situações, o que a torna bem poderosa apesar de sua simplicidade.

Ficou alguma dúvida ou tem alguma contribuição? Aproveite os campos abaixo! Até a próxima.

Mensagem do anunciante:

Experimente a Umbler, startup de Cloud Hosting por demanda feita para agências e desenvolvedores e ganhe até R$ 100 em créditos!

Source: IMasters

Categorizados em:

Este artigo foi escrito pormajor

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *