Destaque Semana #3: Apache NiFi

by Checchia
15 minutos
Destaque Semana #3: Apache NiFi

Desde 2010, quando montei meu primeiro Cluster Hadoop — Na época, CDHv3 (Cloudera’s Distribution for Hadoop), acompanho os movimentos e as novas tecnologias relacionadas a BIGDATA.

E acompanho mais de perto ainda o ecosistema que se formou ao redor do Apache Hadop:

 

- - -

OK. Mas o que é o NiFi?

Em novembro de 2014, a agência de segurança nacional dos E.U.A., mais conhecida como NSA, abriu o Niagrafiles para a comunidade open source, ou NiFi, um software de fluxo de dados.

Tecnicamente conceituando de acordo com a documentação oficial entendemos que o Apache NiFi é:

“ An easy to use, powerful, and reliable system to process and distribute data. ” (Um sistema fácil, poderoso e confiável para processamento distribuído de dados).

Podemos de forma básica entender o Apache Nifi como sendo uma ferramenta capaz de automatizar o fluxo de dados entre diferentes sistemas.

Quando falamos de Bigdata precisamos ter em mente que o grande volume de dados, de diversas fontes, precisam ser tratados, analisados, armazenados para, somente após este fluxo, serem visualizados.

 
Bigdata value chain

O Apache NiFi encaixa-se na primeira fase da cadeia de valor, que é a aquisição dos dados.

O NiFi pode aparentar ser um pouco diferente dos conceitos de programação que vocês já estão habituados, como orientação à objetos por exemplo.

O conceito por trás do NiFi é o Flow Based Programming (FBP) ou seja a programação orientada a fluxo, onde você trata um evento isolado, passando pelas etapas necessárias até chegar ao final do processo.

Não é uma idéia nova — ela nasceu no início dos anos 70, um pouco mais nova do que eu — e, de lá para cá, já ganhou diversos “nomes” da moda no momento. Hoje ela é conhecida como Data Flow.

- - -

O NiFi possibilita a criação de fluxos simples, como ler um arquivo CSV, transformar em JSON e gravar um NoSQL, até fluxos complexos, com processamento de imagem e reconhecimento facial.

O processo é muito simples: O NiFi possui uma interface WEB, onde os fluxos são criados arrastando um objeto e configurando-o. O NiFi possui por default mais de 150 destes objetos (processors) e você pode usá-los como modelo para criar os seus (PS: precisa conhecer/desenvolver em Java).

Neste vídeo (4 minutos) há um exemplo de criação de um Flow:

- - - 

E como utilizo, hoje, o NiFi?

(Como disse no começo desta série, o objetivo é apresentar ferramentas que eu implemento e utilizo no meu dia-a-dia como Arquiteto de Soluções e CTO).

Na Auditto possuímos diversos fluxos de recebimento das Notas Fiscais de vários clientes (NFe, NFCe, CTE e NFSe), de vários estados, municípios onde cada um possui seu próprio layout — todos diferentes entre sí.

Estas notas chegam por e-mail, SFTP, upload e nossos robôs que vão até os orgãos públicos e buscam os XMLs originais (também de diferentes modelos).

Para complicar, estas notas podem vir em PDF, XML, um e-mail com o link para o PDF (ou XML) ou, ainda, no corpo do e-mail.

Estamos implementando o NiFi na Auditto e criando data flows específicos, onde ele analisará a informação que chega, identificando que tipo de NF é, de qual estado, quais são os dados que contém e enriquecendo o resultado, com as informações faltantes (e obtidas em outros Flows).

Tratamos hoje, com scripts e robôs, um volume médio de 2 milhões de XMLs diários, com um datalake de 10Tb — com um crescimento exponencial.

Para saber mais sobre o NiFi, acesse http://nifi.apache.org

Até a próxima semana!