Cetax

Como criar seu primeiro DataFlow com Apache NiFi

Tutorial usando Apache Nifi

Nesse artigo vamos mostrar de uma maneira simples como criar um data flow para fazer integração de dados. O Apache Nifi é um projeto Open Source de integração de dados, que integra diversas origens com diversos tipos de destinos, usando bancos de dados, Hadoop (HDFS), Kafka, Spark, entre outros.

Conheça mais sobre o Apache Nifi na página do Projeto : https://nifi.apache.org/

Preparando Ambiente do Apache Nifi

Antes de começar a trabalhar com a ferramenta, vamos preparar o ambiente criando os diretórios no Linux (as pastas onde será gravado os arquivos de output do NiFi), para isso vamos executar os comandos a seguir:

mkdir –p /HDF/data (Criar a estrutura de diretórios)
chmod 777 –R /HDF/data (Da permissão para leitura e gravação nos diretórios)

Iniciando o Tutorial do Apache Nifi

1ºPasso: Com NiFi já instalado no cluster, basta selecionar o NiFi no menu da esquerda e clicar em Quick Links e depois NiFi UI (Você vai ser redirecionado para interface web do NiFi)

2ºPasso: Com a interface do NiFi aberta podemos come-çar a montar o DataFlow, neste DataFlow você vai coletar a saída de um app-log, dividir o conteúdo em múltiplos arqui- vos, compactar os arquivos e salvá-lo no diretório de destino com timestamp e nome do arquivo.

Adicionando e configurando Nifi Processor  ‘TailFile’

1ºPasso: Clique no botão de processor ( ) arraste e solte ao centro da tela principal, irá abrir uma janela como segue abaixo:

2ºPasso: No campo de pesquisa busque pelo Processor “TailFile”, selecione o processor e clique em “ADD”.

3ºPasso: Clique com botão direito no Processor que foi criado e vá em configure (configurações):

4ºPasso: Vamos agendar esta execução em 10 segundos, na aba “Scheduling”.

5ºPasso: Na aba “properties” devemos passar o caminho dos arquivos de log que irá extrair, neste caso é: “/var/log/nifi/nifi-app.log”. Na opção “Rolling Filename Pattern” o nome padrão dos arquivos, aqui irei utilizar “nifi-app_*” e clicar em “Apply”. OBS.: Este atributo é opcional, atributos em negrito é obrigatório o preenchimento.

Adicionando e conectando ‘SplitText’ processor

1ºPasso: Com o “Tailfile” configurado, vamos arrastar mais um processor para o fluxo, clicando e arrastando com o botão ( ), mas agora utilizaremos outro processor: o “SplitText”.

2ºPasso: Configurando “SplitText”, selecione o pro-cessor “SplitText” clique com botão direito e escolha a opção de configure. Colocaremos ao atributo “Line Split Count” o valor de 15, para extrair número máximo de 15 linhas do arquivo.

3ºPasso: Na aba settings, as checkbox “Failure” e “Original” devem ser marcadas, e após realizar clicar em “Apply”.

4ºPasso: Para realizar a conexão, devemos colocar o cursor do mouse em cima do processor “TailFile” até apare- cer uma flecha verde, segurar e arrastar até o processor de “SplitText”. Verificar se checkbox “sucess” está marcada e clicar em “ADD”:

Adicionando e conectando “CompressContent” processor

1ºPasso: Clicar e arrastar utilizando o botão (), neste passo recorreremos ao processor “CompressContent”

2ºPasso: Clicando com botão direito no processor criado, segue em “Configure”, na aba properties. Mudaremos o atributo “Compression Format” para “gzip”:

3ºPasso: Na aba “Settings”, devemos marcar o checkbox “Failure”, podendo alterar o nome do processor (opcional). E clicar em “Apply”

4ºPasso: Vamos realizar a conexão da mesma forma que no tópico anterior, posicionando o cursor do mouse em cima do processor “SplitText”, segurar a setinha verde, arrastando e soltando – a no processor “CompressContent”, que irá abrir as propriedades de conexão. Marque a checkbox “splits” e “ADD”:

Adicionando e conectando o “UpdateAttribute” processor

1ºPasso: Clicar e arrastar utilizando o botão (), neste passo recorreremos ao processor “UpdateAttribute”:

2º Passo: Clicar com botão o direito no processor criado, ir em configure, na aba Settings clicar no botão ( ) para adicionar um atributo novo, renomear para filename e clicar em “OK”:

3ºPasso: Os valores do atributo que iremos colocar é: “nifi-applog.${now():format(‘HH:mm:ss’)}.gz”, que irá anexar um prefixo ‘nifi-applog’ seguido de tempo no formato hora: minuto: segundo, com a extensão do arquivo em .gz (Nifi aceita linguagens de expressão):

4º Passo: Realize a conexão do processor “Compress Content” para “UpdateAttribute” (Similar aos passos anteriores), marque a checkbox “sucess” e clique em “ADD”:

Adicionando e conectando “PutFile” processor

1ºPasso: Clicar e arrastar utilizando o botão (), neste passo recorreremos ao processor “PutFile”:

2º Passo: Clicando com botão direito na opção configure, na aba Properties, iremos configurar o atributo “Directory” (é o diretório onde os arquivos vão ser gravados):

 

3º Passo: Na aba Settings deve-se marcar o checkbox “Sucess” e “Failure”, para encerrar automaticamente os relacionamentos e clique em Apply:

Executando o DataFlow

Clique fora de todos os processor, (não pode ter nenhum processor selecionado), na aba operate, clicar em play e aguardar a execução de todo fluxo, e em seguida clicar em stop (ou quando quiser parar o fluxo):

E para verificar o se arquivo foi gravado, basta entrar no diretório que foi definido no atributo “PutFile” e listar com o comando do Linux “ls”.

Conheçam mais sobre essa poderosa ferramenta de integração, nos produtos Hortonworks ele é o software principal do HDF ( Hortonworks Data Flow ) – https://br.hortonworks.com/products/data-platforms/hdf/

Também conheça a página original dele no https://nifi.apache.org

Apostamos muito nele como uma plataforma de integração de dados, que podem ser de quaisquer formatos de origem como Bancos de Dados (SQL), arquivos ( txt, csv, xml, json ), filas ( Kafka, Rabbit, MQ ), leitura em file system hadoop (HDFS) e processamento dos dados e destinos para todos os citados anteriormente.

Com um ambiente visual, simplifica o desenvolvimento das rotinas, onde também é possível fazer teste e debug online, analisando os dados no nível mais granular, acessando registro a registro.

O Apache Nifi possui excelente mecanismos de Rastreabilidade de dados e Logs para todas as etapas do fluxo de dados, isso dá uma enorme capacidade de análise sobre o “Tracking” de todas as informações que passam por ele.

Conheça mais sobre nossos treinamentos em https://www.cetax.com.br/cursos-de-business-intelligence-bi/

Visite também nossa página de materiais : https://www.cetax.com.br/materiais-de-bi-para-download/

Sair da versão mobile