StreamSets Data Collector

 

Definição

O StreamSets Data Collector é uma infraestrutura de ingestão contínua de big data de nível empresarial, de código aberto. Ele possui uma interface de usuário avançada e fácil de usar que permite que cientistas de dados, desenvolvedores e equipes de infraestrutura de dados criem facilmente pipelines de dados em uma pequena fração do tempo.

Pronto para usar, o StreamSets Data Collector lê e grava em um grande número de terminais, incluindo S3, JDBC, Hadoop, Kafka, Cassandra e muitos outros. Você pode usar Python, Javascript e Java Expression Language, além de um grande número de estágios pré-construídos para transformar e processar os dados em tempo real. Para tolerância a falhas e escalabilidade horizontal, você pode configurar pipelines de dados no modo cluster e executar monitoramento de baixa granularidade em cada estágio do pipeline.

Prova de conceito

  • O objetivo deste tutorial é reunir arquivos de log do Apache e enviá-los ao Elasticsearch. Ao longo do caminho, vamos transformar os dados e configurar alertas e regras de dados para nos informar se algum dado inválido for encontrado. E, finalmente, aprenderemos como adaptar o pipeline quando os dados mudam repentinamente. O Data Collector pode ler e gravar em um grande número de origens e destinos, mas, para este tutorial, limitaremos nosso escopo a uma origem de diretório e destino de Elasticsearch.


Tutorial: https://github.com/streamsets/tutorials/blob/master/tutorial-1/readme.md

  • O objetivo deste tutorial é ler arquivos Avro de um diretório do sistema de arquivos e gravá-los em um tópico Kafka usando o StreamSets Kafka Producer. Em seguida, usaremos um segundo pipeline configurado com um consumidor Kafka para drenar esse tópico, realizar um conjunto de transformações e enviar os dados para dois destinos diferentes.


Tutorial: https://github.com/streamsets/tutorials/blob/master/tutorial-2/readme.md

Linguagens suportadas

  1. Jython: Trata-se de uma implementação da linguagem Python que gera bytecode para máquinas Java. Com ela é possível fazer o desenvolvimento de aplicações híbridas que unem código em Java e Python.

  2. Groovy: Groovy é uma linguagem de programação orientada a objetos desenvolvida para a plataforma Java como alternativa à linguagem de programação Java. Groovy possui características de Python, Ruby e Smalltalk.

  3. JavaScript: JavaScript é uma linguagem de programação interpretada estruturada, de script em alto nível com tipagem dinâmica fraca e multiparadigma. Juntamente com HTML e CSS, o JavaScript é uma das três principais tecnologias da World Wide Web.

Clouds suportados

  1. Amazon Web Service: Amazon S3 e Amazon SQS.

  2. Azure: Azure Data Lake Storage Gen1, Azure Data Lake Storage Gen2, Azure IoT/Event Hub Consumer, Azure Data Lake Storage (Legacy) (Deprecated), Azure Event Hub Producer, Azure IoT Hub Producer e Azure Synapse SQL.

  3. Google Cloud Platform: Google BigQuery, Google Cloud Storage, Google Pub/Sub Subscriber, Google Pub/Sub Publisher e Google Bigtable.

PoC (Proof of Concept)

  • Pode-se concluir nessa POC, que a ferramenta trabalha muito bem com diretórios/arquivos, sempre verificando se o arquivo já foi processador (por nome e conteúdo), após processar o arquivo pode ser movido pela ferramenta para um pasta designada. Usamos como destino varias frentes, como gravação de JSON em diretório, MongoDB, Kafka e PostgreSQL.


  • O cenário abaixo permitiu concluir que o StreamSets é promissor ao lidar com serviços Rest e Soap, no exemplo foram criados dois pipelines, onde o primeiro consumimos uma API SOAP dos correios, disponibilizamos em um tópico Kafka e no segundo consumimos esse tópico persistindo em MongoDB.

  • Por ultimo, realizou-se um teste mais realista, através de dois pipelines, o primeiro com uma prescrição medica em formato JSON, sendo enviada a um tópico Kafka, e na outra ponta foi consumido esse tópico através do Kafka e realizado um POST via Restfull para o Gliese, a persistência dos dados foram realizadas com sucesso.





Comentários

Postagens mais visitadas deste blog

Design Patterns

Sistema de mensageria Apache Kafka