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