Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

Textos em Português
Introdução ao Apache NiFi
brasil tutorial
Fabio HirokiMay 10 ・Updated on May 25 ・4 min read
Nesse artigo vou apresentar os conceitos principais da ferramenta Apache Nifi e depois seguiremos para um simples tutorial de como instalar localmente e configurar um fluxo de dados básico, que será mover conteúdo de um arquivo para outro.
Como o NiFi é uma ferramenta gráfica, recomendo ler esse artigo em uma tela grande (desktop) pois esse artigo terá muitas imagens.
Esse texto foi escrito com base na versão 1.11.4 do NiFi.
Principais definições
O Apache NiFi é um programa usado para automatizar fluxo de dados usando uma interface gráfica acessada através de um navegador. Isso quer dizer que não dependemos de código para criar por exemplo, uma tarefa recorrente (cron) que move dados novos de um banco para outro banco ou
mesmo para uma fila (ex.: Apache Kafka).
Para compreendermos melhor o tutorial que virá a seguir temos que entender algumas terminologias que existem no contexto do NiFi:
Processor
Um processor é um elemento atômico que faz uma tarefa simples. O próprio NiFi já possui uma infinidade de processors, bastando apenas configurá-lo de acordo com o seu data flow. Por exemplo, se quisermos usar o PutMongoRecord, temos que configurar a connection string, usuário e
senha do banco Mongo que queremos usar.
FlowFile
É uma abstração do próprio dado no ambiente do NiFi. Um processor pode gerar um FlowFile a partir de um datasource como um arquivo ou transformar um FlowFile em outro, por exemplo de XML para JSON.
Connection
É a ligação entre dois processors, gerando uma Queue (fila). Possui um tipo, normalmente success ou failure, referente ao procssor origem e nele é possível ver a quantidade que FlowFiles enfileirado (queued) assim como o tamanho deles em bytes.
Instalação
Como pré-requisito, é necessário ter o Java 8 ou 11 instalado. Se você está usando um sistema operacional baseado em UNIX, recomendo usar o SDKMAN para instalar o Java.
Em seguida, vá até a página de downloads do NiFi e baixe a versão binária.
Para o rodar o NiFi, basta rodar comando:
bin/nifi.sh start
A partir desse ponto já conseguimos acessar o NiFi acessando o endereço http://localhost:8080/nifi/ através do navegador.
Criando seu dataflow
Primeiro precisamos criar dois diretórios localmente, um servirá como entrada e o outro como saida. Nesse tutorial usarei respectivamente os diretórios /home/fabiohiroki/nifi-test/input e /home/fabiohiroki/nifi-test/output .
GetFile processor
O primeiro processor que vamos criar se chama GetFile que é responsável por criar FlowFiles a partir de arquivos criados em diretórios específicos.
Para fazer isso basta clicar e arrastar o ícone de Processors na barra superior, depois filtramos por GetFile . Uma caixa representando o processor recém adicionado irá aparecer no meio da tela.
Search... Write a post
 
https://dev.to/
https://dev.to/new
https://dev.to/connect
https://dev.to/notifications
https://dev.to/portugues
https://dev.to/t/brasil
https://dev.to/t/tutorial
https://dev.to/fabiothiroki
https://nifi.apache.org/
https://i.giphy.com/media/3oKIPnAiaMCws8nOsE/giphy.gif
https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-mongodb-nar/1.11.4/org.apache.nifi.processors.mongodb.PutMongo/index.html
https://res.cloudinary.com/practicaldev/image/fetch/s--sPifsY0T--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/u6ak7yxjr2adws3u17h9.png
https://res.cloudinary.com/practicaldev/image/fetch/s--G2T5uGAC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/32xdbsgtnq4e9ct32osr.png
https://sdkman.io/install
https://nifi.apache.org/download.html
https://www.apache.org/dyn/closer.lua?path=/nifi/1.11.4/nifi-1.11.4-bin.zip
http://localhost:8080/nifi/
https://res.cloudinary.com/practicaldev/image/fetch/s--dadmlpKR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/83s1br3ms99dj036ruj6.gif
PutFile processor
Similar ao passo acima, vamos adicionar um segundo processor chamado PuFile , responsável por efetivamente criar um arquivo em um diretório específico.
Conectando processors
Para conectar dois processors e gerar uma queue entre eles, basta escolher o processor de origem, clicar no ícone de seta, segurar e soltar o botão esquerdo do mouse no processor destino, e em seguida clicar em Add . Nesse caso uma conexão automaticamente será gerada uma vez que o
processor GetFile possui apenas um tipo de relacionamento chamado success.
Configuração dos processors
Até agora ainda não é possível rodar e testar esse dataflow devido a algumas configurações mínimas que precisamos adicionar em cada processor. Cada um deles possui uma infinidade de opções de customização, então uma dica é verificar as mensagens de erro mostradas quando colocamos o
mouse sob o ícone de alerta. Dessa forma conseguimos saber exatamente o que temos que configurar para conseguir rodar cada processor.
 
https://res.cloudinary.com/practicaldev/image/fetch/s--dadmlpKR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/83s1br3ms99dj036ruj6.gif
https://res.cloudinary.com/practicaldev/image/fetch/s--ViIjSXZJ--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/cxnfrpz8wi32lbsnhl46.gif
https://res.cloudinary.com/practicaldev/image/fetch/s--OctikZbC--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/3zna9iuhkd76d2d2siig.gif
https://res.cloudinary.com/practicaldev/image/fetch/s--46HkNFFd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wdcms2xfr88ctnlo65lg.png
No caso do processor GetFile só precisamos então adicionar o caminho para o diretório de entrada. Para fazer isso, clique duas vezes no processor, depois na aba Properties e depois coloque o caminho absoluto no campo Input Directory . Ao fazer isso o ícone de alerta desaparecerá.
Seguindo o mesmo processo para o PutFile, adicionamos um caminho absoluto de destino e também indicamos que ele não terá relacionamentos em caso de sucesso ou falha.
Teste dos processors
Para ligar um processor basta clicar com o botão direito e depois em Start. Para fins didáticos vamos começar ligando primeiro apenas o processor GetFile .
Coloque um arquivo qualquer no diretório definido como Input Folder do processor GetFile . Se você estiver em um sistema operacional UNIX, pode usar o comando touch no terminal:
touch /home/fabiohiroki/nifi-test/input/exemplo.txt
Se as configurações estiverem corretas até agora, veremos um novo FlowFile na fila, referente ao arquivo que acabamos de criar.
Agora se ligarmos o processor PutFile, veremos a fila se esvaziar e o arquivo sendo criado na pasta destino.
 
https://res.cloudinary.com/practicaldev/image/fetch/s--46HkNFFd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/wdcms2xfr88ctnlo65lg.png
https://res.cloudinary.com/practicaldev/image/fetch/s--blucZCMm--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kf211ugo9k8yfmdih9k6.gif
https://res.cloudinary.com/practicaldev/image/fetch/s--HXd0jtDY--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/y0dbh4kgufshnde7bbwy.gif
https://res.cloudinary.com/practicaldev/image/fetch/s--PBrlRvnn--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/azw9fbqdw54oo60q14cu.gif
https://res.cloudinary.com/practicaldev/image/fetch/s--TeIe79Xd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kv4hshw94xckuq5iub36.gif
Read next
Learn and use Composition in JavaScript and TypeScript
GraphQL Courses you must Take!
Activate CSS Overview Tab in Chrome 
Creating a Todo List App with React (using Hooks and Contexts)
Conclusão
O fluxo apresentado dificilmente será um casode uso real em produção, mas é suficiente para apresentar os conceitos iniciais do Apache NiFi e seu funcionamento na prática.
Code of Conduct Report abuse
Discussion Subscribe
Textos em Português
Instruções
Para participar dessa organização clique em participar e siga as instruções
More from Textos em Português
Mapa do COVID-19 no Brasil
covid covid19 php brasil
Porque o Python não é melhor que o PHP
php python portugues brasil
 
Participar
Where programmers share ideas and help each other grow—A
constructive and inclusive social network.
 
DEV Community copyright 2016 - 2020
Built on Forem — the open source software that powers DEV and other
inclusive communities.
Made with love and Ruby on Rails.
Home
Listings
Podcasts
Videos
Tags
Sign In/Up
Code of Conduct
FAQ
About
Privacy policy
Terms of use
Contact
Sponsors
DEV Shop
Add to the discussion
 
 Upload image
 Templates
 
https://res.cloudinary.com/practicaldev/image/fetch/s--TeIe79Xd--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_66%2Cw_880/https://dev-to-uploads.s3.amazonaws.com/i/kv4hshw94xckuq5iub36.gif
https://dev.to/p/editor_guide
https://dev.to/code-of-conduct
https://dev.to/report-abuse
https://dev.to/itnext/learn-and-use-composition-in-javascript-and-typescript-3f17
https://dev.to/coursesity/graphql-courses-you-must-take-5de8
https://dev.to/nialljoemaher/activate-css-overview-tab-in-chrome-5gek
https://dev.to/oohsinan/creating-a-todo-list-app-with-react-using-hooks-and-contexts-564g
https://dev.to/portugues
https://github.com/PortuguesDev/portugues
https://dev.to/portugues
https://dev.to/portugues/mapa-do-covid-19-no-brasil-2kc6
https://dev.to/portugues/porque-o-python-nao-e-melhor-que-o-php-42hn
https://dev.to/
https://twitter.com/thepracticaldev
https://facebook.com/thepracticaldev
https://github.com/thepracticaldev
https://instagram.com/thepracticaldev
https://twitch.com/thepracticaldev
https://www.forem.com
https://dev.to/t/opensource
https://dev.to
https://dev.to/t/rails
https://dev.to/
https://dev.to/listings
https://dev.to/pod
https://dev.to/videos
https://dev.to/tags
https://dev.to/enter
https://dev.to/code-of-conduct
https://dev.to/faq
https://dev.to/about
https://dev.to/privacy
https://dev.to/terms
https://dev.to/contact
https://dev.to/sponsors
https://shop.dev.to

Mais conteúdos dessa disciplina