Apache NiFi - Guia rápido
Apache NiFi é um sistema poderoso, fácil de usar e confiável para processar e distribuir dados entre sistemas distintos. É baseado na tecnologia Niagara Files desenvolvida pela NSA e, após 8 anos, doada à Fundação Apache Software. Ele é distribuído sob a Licença Apache Versão 2.0, janeiro de 2004. A versão mais recente do Apache NiFi é 1.7.1.
Apache NiFi é uma plataforma de ingestão de dados em tempo real, que pode transferir e gerenciar a transferência de dados entre diferentes fontes e sistemas de destino. Ele oferece suporte a uma ampla variedade de formatos de dados, como registros, dados de localização geográfica, feeds sociais, etc. Ele também oferece suporte a muitos protocolos como SFTP, HDFS e KAFKA, etc. Este suporte a uma grande variedade de fontes de dados e protocolos tornando esta plataforma popular em muitas organizações de TI.
Apache NiFi- Recursos Gerais
As características gerais do Apache NiFi são as seguintes -
O Apache NiFi fornece uma interface de usuário baseada na web, que fornece uma experiência perfeita entre design, controle, feedback e monitoramento.
É altamente configurável. Isso ajuda os usuários com entrega garantida, baixa latência, alto rendimento, priorização dinâmica, contrapressão e modificação de fluxos em tempo de execução.
Ele também fornece um módulo de proveniência de dados para rastrear e monitorar os dados do início ao fim do fluxo.
Os desenvolvedores podem criar seus próprios processadores personalizados e tarefas de relatório de acordo com suas necessidades.
NiFi também oferece suporte a protocolos seguros como SSL, HTTPS, SSH e outras criptografias.
Ele também oferece suporte ao gerenciamento de usuários e funções e também pode ser configurado com LDAP para autorização.
Apache NiFi -Key Concepts
Os conceitos-chave do Apache NiFi são os seguintes -
Process Group - É um grupo de fluxos NiFi, que auxilia o usuário a gerenciar e manter os fluxos de forma hierárquica.
Flow - É criado conectando diferentes processadores para transferir e modificar dados, se necessário, de uma fonte ou fontes de dados para outras fontes de dados de destino.
Processor- Um processador é um módulo java responsável por buscar dados do sistema de sourcing ou armazená-los no sistema de destino. Outros processadores também são usados para adicionar atributos ou alterar o conteúdo no arquivo de fluxo.
Flowfile- É o uso básico de NiFi, que representa o único objeto dos dados coletados do sistema de origem em NiFi. NiFiprocessormakes mudanças para flowfile enquanto se move do processador de origem para o destino. Diferentes eventos como CREATE, CLONE, RECEIVE, etc. são executados no arquivo de fluxo por diferentes processadores em um fluxo.
Event- Os eventos representam a mudança no arquivo de fluxo durante a passagem por um fluxo NiFi. Esses eventos são rastreados na proveniência dos dados.
Data provenance - É um repositório. Também possui uma IU, que permite aos usuários verificar as informações sobre um arquivo de fluxo e ajuda na solução de problemas se houver problemas que surjam durante o processamento de um arquivo de fluxo.
Vantagens Apache NiFi
O Apache NiFi permite a busca de dados de máquinas remotas usando SFTP e garante a linhagem dos dados.
Apache NiFi suporta clustering, portanto, pode funcionar em vários nós com o mesmo fluxo de processamento de dados diferentes, o que aumenta o desempenho do processamento de dados.
Ele também fornece políticas de segurança em nível de usuário, nível de grupo de processo e outros módulos.
Sua IU também pode rodar em HTTPS, o que torna a interação dos usuários com o NiFi segura.
NiFi suporta cerca de 188 processadores e um usuário também pode criar plug-ins personalizados para oferecer suporte a uma ampla variedade de sistemas de dados.
Desvantagens Apache NiFi
Quando o nó é desconectado do cluster NiFi enquanto um usuário está fazendo alguma alteração nele, o flow.xml se torna inválido. O anodo não pode se conectar de volta ao cluster, a menos que o administrador copie manualmente o flow.xml do nó conectado.
Apache NiFi tem problema de persistência de estado no caso de troca de nó primário, o que às vezes torna os processadores incapazes de buscar dados de sistemas de sourcing.
O Apache NiFi consiste em um servidor web, controlador de fluxo e um processador, que roda em Java Virtual Machine. Ele também possui 3 repositórios Repositório de arquivos de fluxo, Repositório de conteúdo e Repositório de proveniência, conforme mostrado na figura abaixo.
Repositório de arquivos de fluxo
Este repositório armazena o estado atual e os atributos de cada arquivo de fluxo que passa pelos fluxos de dados do Apache NiFi. O local padrão deste repositório é o diretório raiz do apache NiFi. A localização deste repositório pode ser alterada alterando a propriedade chamada "nifi.flowfile.repository.directory".
Repositório de Conteúdo
Este repositório contém todo o conteúdo presente em todos os arquivos de fluxo da NiFi. Seu diretório padrão também está no diretório raiz do NiFi e pode ser alterado usando a propriedade "org.apache.nifi.controller.repository.FileSystemRepository". Este diretório usa muito espaço em disco, por isso é aconselhável ter espaço suficiente no disco de instalação.
Repositório de Proveniência
O repositório rastreia e armazena todos os eventos de todos os arquivos de fluxo que fluem no NiFi. Existem dois repositórios de proveniência -volatile provenance repository (neste repositório todos os dados de proveniência são perdidos após o reinício) e persistent provenance repository. Seu diretório padrão também está no diretório raiz do NiFi e pode ser alterado usando as propriedades "org.apache.nifi.provenance.PersistentProvenanceRepository" e "org.apache.nifi.provenance.VolatileProvenanceRepositor" para os respectivos repositórios.
Neste capítulo, aprenderemos sobre a configuração do ambiente do Apache NiFi. As etapas para a instalação do Apache NiFi são as seguintes -
Step 1- Instale a versão atual do Java em seu computador. Defina oJAVA_HOME em sua máquina. Você pode verificar a versão conforme mostrado abaixo:
No Sistema Operacional Windows (SO) (usando prompt de comando) -
> java -version
No sistema operacional UNIX (usando terminal):
$ echo $JAVA_HOME
Step 2 - Baixe o Apache NiFi de https://nifi.apache.org/download.html
Para o Windows OSdownload arquivo ZIP.
Para UNIX OS, faça download do arquivo TAR.
Para imagens docker, acesse o seguinte link https://hub.docker.com/r/apache/nifi/.
Step 3- O processo de instalação do Apache NiFi é muito fácil. O processo difere do sistema operacional -
Windows OS - Descompacte o pacote zip e o Apache NiFi é instalado.
UNIX OS - Extraia o arquivo tar em qualquer local e o Logstash é instalado.
$tar -xvf nifi-1.6.0-bin.tar.gz
Step 4- Abra o prompt de comando, vá para o diretório bin do NiFi. Por exemplo, C: \ nifi-1.7.1 \ bin e execute o arquivo run-nifi.bat.
C:\nifi-1.7.1\bin>run-nifi.bat
Step 5- Levará alguns minutos para ativar a IU NiFi. Um usuário pode verificar nifi-app.log, uma vez que a interface de usuário NiFi está ativa, um usuário pode entrarhttp://localhost:8080/nifi/ para acessar a IU.
Apache é uma plataforma baseada na web que pode ser acessada por um usuário usando a interface do usuário da web. A interface de usuário NiFi é muito interativa e fornece uma ampla variedade de informações sobre NiFi. Conforme mostrado na imagem abaixo, um usuário pode acessar informações sobre os seguintes atributos -
- Threads Ativos
- Dados totais na fila
- Transmitindo grupos de processos remotos
- Não transmitir grupos de processos remotos
- Componentes em execução
- Componentes Parados
- Componentes Inválidos
- Componentes Desabilitados
- Grupos de processos com versão atualizados
- Grupos de processos com versão modificados localmente
- Grupos de processos com versão obsoleta
- Grupos de processos modificados localmente e com versão obsoleta
- Falha de sincronização de grupos de processos com versão
Componentes do Apache NiFi
A IU Apache NiFi tem os seguintes componentes -
Processadores
O usuário pode arrastar o ícone do processo na tela e selecionar o processador desejado para o fluxo de dados em NiFi.
Porta de entrada
O ícone abaixo é arrastado para a tela para adicionar a porta de entrada a qualquer fluxo de dados.
A porta de entrada é usada para obter dados do processador, que não estão presentes nesse grupo de processos.
Depois de arrastar este ícone, NiFi pede para inserir o nome da porta de entrada e então é adicionado à tela NiFi.
Porta de saída
O ícone abaixo é arrastado para a tela para adicionar a porta de saída a qualquer fluxo de dados.
A porta de saída é usada para transferir dados para o processador, que não está presente naquele grupo de processos.
Após arrastar este ícone, o NiFi pede para inserir o nome da porta de saída e então é adicionado à tela NiFi.
Grupo de Processo
Um usuário usa o ícone abaixo para adicionar o grupo de processos na tela NiFi.
Após arrastar este ícone, NiFi pede para inserir o nome do Grupo de Processos e então ele é adicionado à tela NiFi.
Grupo de Processo Remoto
Isso é usado para adicionar o grupo de processo remoto na tela NiFi.
Funil
O funil é usado para transferir a saída de um processador para vários processadores. O usuário pode usar o ícone abaixo para adicionar o funil em um fluxo de dados NiFi.
Modelo
Este ícone é usado para adicionar um modelo de fluxo de dados à tela NiFi. Isso ajuda a reutilizar o fluxo de dados na mesma instância ou em diferentes instâncias NiFi.
Após arrastar, o usuário pode selecionar os modelos já adicionados na NiFi.
Rótulo
Eles são usados para adicionar texto na tela NiFi sobre qualquer componente presente no NiFi. Ele oferece uma gama de cores usadas pelo usuário para adicionar sentido estético.
Os processadores Apache NiFi são os blocos básicos para a criação de um fluxo de dados. Cada processador possui uma funcionalidade diferente, o que contribui para a criação do arquivo de fluxo de saída. O fluxo de dados mostrado na imagem abaixo busca o arquivo de um diretório usando o processador GetFile e o armazena em outro diretório usando o processador PutFile.
GetFile
O processo GetFile é usado para buscar arquivos de um formato específico de um diretório específico. Ele também fornece outras opções ao usuário para obter mais controle sobre a busca. Vamos discutir isso na seção de propriedades abaixo.
Configurações GetFile
A seguir estão as diferentes configurações do processador GetFile -
Nome
Na configuração Nome, um usuário pode definir qualquer nome para os processadores de acordo com o projeto ou por ele, o que torna o nome mais significativo.
Habilitar
Um usuário pode habilitar ou desabilitar o processador usando esta configuração.
Duração da Penalidade
Esta configuração permite que um usuário adicione a duração do tempo de penalidade, no caso de falha do arquivo de fluxo.
Duração do rendimento
Esta configuração é usada para especificar o tempo de rendimento do processador. Nesse período, o processo não é agendado novamente.
Nível do Boletim
Esta configuração é usada para especificar o nível de log desse processador.
Terminar Relacionamentos Automaticamente
Ele contém uma lista de verificação de todos os relacionamentos disponíveis desse processo específico. Ao marcar as caixas, um usuário pode programar o processador para encerrar o arquivo de fluxo naquele evento e não enviá-lo posteriormente no fluxo.
Agendamento GetFile
Estas são as seguintes opções de agendamento oferecidas pelo processador GetFile -
Estratégia de cronograma
Você pode agendar o processo com base no tempo, selecionando orientado pelo tempo, ou uma string CRON especificada, selecionando uma opção de driver CRON.
Tarefas Simultâneas
Esta opção é usada para definir a programação de tarefa simultânea para este processador.
Execução
Um usuário pode definir se deseja executar o processador em todos os nós ou apenas no nó Primário usando esta opção.
Executar cronograma
É usado para definir o tempo para estratégia orientada por tempo ou expressão CRON para estratégia orientada por CRON.
Propriedades GetFile
GetFile oferece várias propriedades, conforme mostrado na imagem abaixo, variando entre propriedades obrigatórias, como diretório de entrada e filtro de arquivo, para propriedades opcionais como Filtro de caminho e Tamanho máximo do arquivo. Um usuário pode gerenciar o processo de obtenção de arquivos usando essas propriedades.
Comentários GetFile
Esta seção é usada para especificar qualquer informação sobre o processador.
PutFile
O processador PutFile é usado para armazenar o arquivo do fluxo de dados em um local específico.
Configurações de PutFile
O processador PutFile tem as seguintes configurações -
Nome
Na configuração Nome, um usuário pode definir qualquer nome para os processadores de acordo com o projeto ou por aquele que torna o nome mais significativo.
Habilitar
Um usuário pode habilitar ou desabilitar o processador usando esta configuração.
Duração da Penalidade
Esta configuração permite que um usuário adicione a duração do tempo de penalidade, no caso de falha do arquivo de fluxo.
Duração do rendimento
Esta configuração é usada para especificar o tempo de rendimento do processador. Nessa duração, o processo não é agendado novamente.
Nível do Boletim
Esta configuração é usada para especificar o nível de log desse processador.
Terminar Relacionamentos Automaticamente
Esta configuração possui uma lista de verificação de todas as relações disponíveis daquele processo em particular. Ao marcar as caixas, o usuário pode programar o processador para encerrar o arquivo de fluxo naquele evento e não enviá-lo posteriormente no fluxo.
Agendamento de PutFile
Estas são as seguintes opções de agendamento oferecidas pelo processador PutFile -
Estratégia de cronograma
Você pode agendar o processo de acordo com o tempo selecionando acionado por cronômetro ou uma string CRON especificada selecionando a opção de driver CRON. Existe também uma estratégia Experimental Event Driven, que acionará o processador em um evento específico.
Tarefas Simultâneas
Esta opção é usada para definir a programação de tarefa simultânea para este processador.
Execução
Um usuário pode definir se deseja executar o processador em todos os nós ou apenas no nó primário usando esta opção.
Executar cronograma
É usado para definir o tempo para estratégia orientada por cronômetro ou expressão CRON para estratégia orientada por CRON.
Propriedades PutFile
O processador PutFile fornece propriedades como Directory para especificar o diretório de saída para fins de transferência de arquivos e outros para gerenciar a transferência, conforme mostrado na imagem abaixo.
Comentários PutFile
Esta seção é usada para especificar qualquer informação sobre o processador.
Neste capítulo, discutiremos a categorização de processos no Apache NiFi.
Processadores de ingestão de dados
Os processadores na categoria Data Ingestion são usados para ingerir dados no fluxo de dados NiFi. Esses são principalmente o ponto de partida de qualquer fluxo de dados no Apache NiFi. Alguns dos processadores que pertencem a essas categorias são GetFile, GetHTTP, GetFTP, GetKAFKA, etc.
Processadores de roteamento e mediação
Os processadores de roteamento e mediação são usados para rotear os arquivos de fluxo para diferentes processadores ou fluxos de dados de acordo com as informações nos atributos ou conteúdo desses arquivos de fluxo. Esses processadores também são responsáveis por controlar os fluxos de dados NiFi. Alguns dos processadores que pertencem a esta categoria são RouteOnAttribute, RouteOnContent, ControlRate, RouteText, etc.
Processadores de acesso a banco de dados
Os processadores desta categoria Database Access são capazes de selecionar ou inserir dados ou executar e preparar outras instruções SQL do banco de dados. Esses processadores usam principalmente a configuração do controlador de pool de conexão de dados do Apache NiFi. Alguns dos processadores que pertencem a esta categoria são ExecuteSQL, PutSQL, PutDatabaseRecord, ListDatabaseTables, etc.
Processadores de extração de atributos
Os processadores de extração de atributos são responsáveis por extrair, analisar e alterar o processamento de atributos do arquivo de fluxo no fluxo de dados NiFi. Alguns dos processadores que pertencem a esta categoria são UpdateAttribute, EvaluateJSONPath, ExtractText, AttributesToJSON, etc.
Processadores de interação do sistema
Os processadores de interação do sistema são usados para executar processos ou comandos em qualquer sistema operacional. Esses processadores também executam scripts em muitos idiomas para interagir com uma variedade de sistemas. Alguns dos processadores que pertencem a esta categoria são ExecuteScript, ExecuteProcess, ExecuteGroovyScript, ExecuteStreamCommand, etc.
Processadores de transformação de dados
Os processadores que pertencem à Transformação de Dados são capazes de alterar o conteúdo dos arquivos de fluxo. Eles podem ser usados para substituir totalmente os dados de um arquivo de fluxo normalmente usado quando um usuário precisa enviar arquivo de fluxo como um corpo HTTP para invocar o processador HTTP. Alguns dos processadores que pertencem a esta categoria são ReplaceText, JoltTransformJSON, etc.
Processadores de envio de dados
Processadores de envio de dados geralmente são o processador final em um fluxo de dados. Esses processadores são responsáveis por armazenar ou enviar dados ao servidor de destino. Depois de armazenar ou enviar os dados com sucesso, esses processadores DROP o arquivo de fluxo com relacionamento de sucesso. Alguns dos processadores que pertencem a esta categoria são PutEmail, PutKafka, PutSFTP, PutFile, PutFTP, etc.
Processadores de divisão e agregação
Esses processadores são usados para dividir e mesclar o conteúdo presente em um arquivo de fluxo. Alguns dos processadores que pertencem a esta categoria são SplitText, SplitJson, SplitXml, MergeContent, SplitContent, etc.
Processadores HTTP
Esses processadores lidam com as chamadas HTTP e HTTPS. Alguns dos processadores que pertencem a esta categoria são InvokeHTTP, PostHTTP, ListenHTTP, etc.
Processadores AWS
Os processadores AWS são responsáveis pela interação com o sistema de serviços da Web da Amazon. Alguns dos processadores que pertencem a esta categoria são GetSQS, PutSNS, PutS3Object, FetchS3Object, etc.
Em um fluxo de dados Apache NiFi, os arquivos de fluxo se movem de um processador para outro por meio de uma conexão que é validada usando um relacionamento entre processadores. Sempre que uma conexão é criada, um desenvolvedor seleciona um ou mais relacionamentos entre esses processadores.
Como você pode ver na imagem acima, as caixas de seleção no retângulo preto são relacionamentos. Se um desenvolvedor selecionar essas caixas de seleção, o arquivo de fluxo será encerrado naquele processador específico, quando o relacionamento for de sucesso ou falha ou ambos.
Sucesso
Quando um processador processa com sucesso um arquivo de fluxo como armazenar ou buscar dados de qualquer fonte de dados sem obter nenhuma conexão, autenticação ou qualquer outro erro, então o arquivo de fluxo vai para o relacionamento de sucesso.
Fracasso
Quando um processador não consegue processar um arquivo de fluxo sem erros, como erro de autenticação ou problema de conexão, etc., o arquivo de fluxo entra em um relacionamento de falha.
Um desenvolvedor também pode transferir os arquivos de fluxo para outros processadores usando conexões. O desenvolvedor pode selecionar e também balancear a carga, mas o balanceamento de carga acabou de ser lançado na versão 1.8, que não será abordada neste tutorial.
Como você pode ver na imagem acima, a conexão marcada em vermelho tem relacionamento de falha, o que significa que todos os arquivos de fluxo com erros irão para o processador à esquerda e respectivamente todos os arquivos de fluxo sem erros serão transferidos para a conexão marcada em verde.
Vamos agora prosseguir com os outros relacionamentos.
comms.failure
Esse relacionamento é atendido quando um Flowfile não pode ser obtido do servidor remoto devido a uma falha de comunicação.
não encontrado
Qualquer arquivo de fluxo para o qual recebemos uma mensagem 'Não encontrado' do servidor remoto será movido para not.found relação.
permissão negada
Quando o NiFi não consegue buscar um arquivo de fluxo do servidor remoto devido à permissão insuficiente, ele se moverá por esse relacionamento.
Um arquivo de fluxo é uma entidade de processamento básico no Apache NiFi. Ele contém conteúdos e atributos de dados, que são usados por processadores NiFi para processar dados. O conteúdo do arquivo normalmente contém os dados obtidos dos sistemas de origem. Os atributos mais comuns de um Apache NiFi FlowFile são -
UUID
Isso significa Universally Unique Identifier, que é uma identidade única de um arquivo de fluxo gerado por NiFi.
Nome do arquivo
Este atributo contém o nome do arquivo desse flowfile e não deve conter nenhuma estrutura de diretório.
Tamanho do arquivo
Ele contém o tamanho de um Apache NiFi FlowFile.
mime.type
Ele especifica o tipo MIME deste FlowFile.
caminho
Este atributo contém o caminho relativo de um arquivo ao qual pertence um flowfile e não contém o nome do arquivo.
A conexão de fluxo de dados Apache NiFi tem um sistema de enfileiramento para lidar com a grande quantidade de entrada de dados. Essas filas podem lidar com uma quantidade muito grande de FlowFiles para permitir que o processador os processe em série.
A fila na imagem acima possui 1 arquivo de fluxo transferido por meio de relacionamento de sucesso. Um usuário pode verificar o arquivo de fluxo selecionando oList queueopção na lista suspensa. Em caso de sobrecarga ou erro, um usuário também pode limpar a fila selecionando oempty queue opção e, em seguida, o usuário pode reiniciar o fluxo para obter esses arquivos novamente no fluxo de dados.
A lista de arquivos de fluxo em uma fila consiste em posição, UUID, nome do arquivo, tamanho do arquivo, duração da fila e duração da linhagem. Um usuário pode ver todos os atributos e conteúdo de um arquivo de fluxo clicando no ícone de informações presente na primeira coluna da lista de arquivos de fluxo.
No Apache NiFi, um usuário pode manter diferentes fluxos de dados em diferentes grupos de processos. Esses grupos podem ser baseados em diferentes projetos ou organizações, com suporte da instância Apache NiFi.
O quarto símbolo no menu na parte superior da interface do usuário NiFi, conforme mostrado na imagem acima, é usado para adicionar um grupo de processos na tela NiFi. O grupo de processos denominado “Tutorialspoint.com_ProcessGroup” contém um fluxo de dados com quatro processadores atualmente em estágio de parada, como você pode ver na imagem acima. Grupos de processos podem ser criados de forma hierárquica para gerenciar os fluxos de dados em uma estrutura melhor, o que é fácil de entender.
No rodapé da interface do usuário NiFi, você pode ver os grupos de processos e pode voltar ao topo do grupo de processos em que um usuário está atualmente presente.
Para ver a lista completa dos grupos de processos presentes no NiFi, um usuário pode ir ao resumo usando o menu presente no lado superior esquerdo da interface do NiFi. Em resumo, existe a guia de grupos de processos onde todos os grupos de processos são listados com parâmetros como Estado da Versão, Transferido / Tamanho, Entrada / Tamanho, Leitura / Gravação, Saída / Tamanho, etc. conforme mostrado na imagem abaixo.
O Apache NiFi oferece rótulos para permitir que um desenvolvedor escreva informações sobre os componentes presentes na tela NiFI. O ícone mais à esquerda no menu superior da interface do usuário NiFi é usado para adicionar o rótulo na tela NiFi.
Um desenvolvedor pode alterar a cor do rótulo e o tamanho do texto com um clique com o botão direito do mouse no rótulo e escolher a opção apropriada no menu.
Apache NiFi é uma plataforma altamente configurável. O arquivo nifi.properties no diretório conf
contém a maior parte da configuração.
As propriedades comumente usadas do Apache NiFi são as seguintes -
Propriedades do núcleo
Esta seção contém as propriedades, que são obrigatórias para executar uma instância NiFi.
S.No. | Nome da propriedade | Valor padrão | descrição |
---|---|---|---|
1 | nifi.flow.configuration.file | ./conf/flow.xml.gz | Esta propriedade contém o caminho para o arquivo flow.xml. Este arquivo contém todos os fluxos de dados criados em NiFi. |
2 | nifi.flow.configuration.archive.enabled | verdadeiro | Esta propriedade é usada para habilitar ou desabilitar o arquivamento em NiFi. |
3 | nifi.flow.configuration.archive.dir | ./conf/archive/ | Esta propriedade é usada para especificar o diretório do arquivo. |
4 | nifi.flow.configuration.archive.max.time | 30 dias | Isso é usado para especificar o tempo de retenção para o conteúdo de arquivamento. |
5 | nifi.flow.configuration.archive.max.storage | 500 MB | ele contém o tamanho máximo do diretório de arquivamento que pode aumentar. |
6 | nifi.authorizer.configuration.file | ./conf/authorizers.xml | Para especificar o arquivo de configuração do autorizador, que é usado para autorização do usuário. |
7 | nifi.login.identity.provider.configuration.file | ./conf/login-identity-providers.xml | Esta propriedade contém a configuração de provedores de identidade de login, |
8 | nifi.templates.directory | ./conf/templates | Esta propriedade é usada para especificar o diretório onde os modelos NiFi serão armazenados. |
9 | nifi.nar.library.directory | ./lib | Esta propriedade contém o caminho para a biblioteca, que NiFi usará para carregar todos os componentes usando os arquivos NAR presentes nesta pasta lib. |
10 | nifi.nar.working.directory | ./work/nar/ | Este diretório irá armazenar os arquivos nar descompactados, uma vez que NiFi os processe. |
11 | nifi.documentation.working.directory | ./work/docs/components | Este diretório contém a documentação de todos os componentes. |
Gestão do Estado
Essas propriedades são usadas para armazenar o estado dos componentes úteis para iniciar o processamento, onde os componentes saíram após uma reinicialização e na próxima execução do planejamento.
S.No. | Nome da propriedade | Valor padrão | descrição |
---|---|---|---|
1 | nifi.state.management.configuration.file | ./conf/state-management.xml | Esta propriedade contém o caminho para o arquivo state-management.xml. Este arquivo contém todos os estados do componente presentes nos fluxos de dados dessa instância NiFi. |
2 | nifi.state.management.provider.local | provedor local | Ele contém o ID do provedor estadual local. |
3 | nifi.state.management.provider.cluster | provedor zk | Esta propriedade contém o ID do provedor de estado de todo o cluster. Isso será ignorado se o NiFi não estiver em cluster, mas deve ser preenchido se estiver executando em um cluster. |
4 | nifi.estado.manejo. embutido. funcionário do zoológico. começar | falso | Esta propriedade especifica se esta instância de NiFi deve ou não executar um servidor ZooKeeper integrado. |
5 | nifi.estado.manejo. embutido. zookeeper.properties | ./conf/zookeeper.properties | Esta propriedade contém o caminho do arquivo de propriedades que fornece as propriedades do ZooKeeper para usar se <nifi.state.management. embutido. funcionário do zoológico. start> é definido como verdadeiro. |
Repositório FlowFile
Vamos agora dar uma olhada nos detalhes importantes do repositório FlowFile -
S.No. | Nome da propriedade | Valor padrão | descrição |
---|---|---|---|
1 | nifi.flowfile.repository. implementação | org.apache.nifi. controlador. repositório. WriteAhead FlowFileRepository | Esta propriedade é usada para especificar o armazenamento dos arquivos de fluxo na memória ou no disco. Se um usuário quiser armazenar os arquivos de fluxo na memória, mude para "org.apache.nifi.controller. Repository.VolatileFlowFileRepository". |
2 | nifi.flowfile.repository.directory | ./flowfile_repository | Para especificar o diretório para o repositório flowfile. |
Apache NiFi oferece suporte a várias ferramentas como ambari, zookeeper para fins de administração. NiFi também fornece configuração no arquivo nifi.properties para configurar HTTPS e outras coisas para administradores.
funcionário do zoológico
O próprio NiFi não controla o processo de votação no cluster. Isso significa que quando um cluster é criado, todos os nós são primários e coordenadores. Portanto, o zookeeper está configurado para gerenciar a votação do nó primário e do coordenador. O arquivo nifi.properties contém algumas propriedades para configurar o zookeeper.
S.No. | Nome da propriedade | Valor padrão | descrição |
---|---|---|---|
1 | nifi.state.management.embedded.zookeeper. propriedades | ./conf/zookeeper.properties | Para especificar o caminho e o nome do arquivo de propriedade do zookeeper. |
2 | nifi.zookeeper.connect.string | vazio | Para especificar a string de conexão do zookeeper. |
3 | nifi.zookeeper.connect.timeout | 3 segs | Especificar o tempo limite de conexão do zookeeper com NiFi. |
4 | nifi.zookeeper.session.timeout | 3 segs | Especificar o tempo limite da sessão do zookeeper com NiFi. |
5 | nifi.zookeeper.root.node | / nifi | Para especificar o nó raiz para zookeeper. |
6 | nifi.zookeeper.auth.type | vazio | Para especificar o tipo de autenticação para zookeeper. |
Habilitar HTTPS
Para usar NiFi sobre HTTPS, os administradores devem gerar keystore e truststore e definir algumas propriedades no arquivo nifi.properties. O kit de ferramentas TLS pode ser usado para gerar todas as chaves necessárias para habilitar HTTPS no apache NiFi.
S.No. | Nome da propriedade | Valor padrão | descrição |
---|---|---|---|
1 | nifi.web.https.port | vazio | Para especificar o número da porta https. |
2 | nifi.web.https.network.interface.default | vazio | Interface padrão para https em NiFi. |
3 | nifi.security.keystore | vazio | Para especificar o caminho e o nome do arquivo do armazenamento de chaves. |
4 | nifi.security.keystoreType | vazio | Para especificar o tipo de keystore, como JKS. |
5 | nifi.security.keystorePasswd | vazio | Para especificar a senha do keystore. |
6 | nifi.security.truststore | vazio | Para especificar o caminho e o nome do arquivo de armazenamento confiável. |
7 | nifi.security.truststoreType | vazio | Para especificar o tipo de armazenamento confiável, como JKS. |
8 | nifi.security.truststorePasswd | vazio | Para especificar a senha do truststore. |
Outras propriedades para administração
Existem algumas outras propriedades, que são utilizadas pelos administradores para gerenciar o NiFi e para sua continuidade de serviço.
S.No. | Nome da propriedade | Valor padrão | descrição |
---|---|---|---|
1 | nifi.flowcontroller.graceful.shutdown.period | 10 s | Para especificar o tempo para desligar normalmente o controlador de fluxo NiFi. |
2 | nifi.administrative.yield.duration | 30 s | Para especificar a duração do rendimento administrativo para NiFi. |
3 | nifi.authorizer.configuration.file | ./conf/authorizers.xml | Para especificar o caminho e o nome do arquivo de configuração do autorizador. |
4 | nifi.login.identity.provider.configuration.file | ./conf/login-identity-providers.xml | Para especificar o caminho e o nome do arquivo de configuração do provedor de identidade de login. |
Apache NiFi oferece um grande número de componentes para ajudar os desenvolvedores a criar fluxos de dados para qualquer tipo de protocolo ou fonte de dados. Para criar um fluxo, um desenvolvedor arrasta os componentes da barra de menus para a tela e os conecta clicando e arrastando o mouse de um componente para outro.
Geralmente, uma NiFi tem um componente de escuta no início do fluxo, como getfile, que obtém os dados do sistema de origem. Na outra extremidade, há um componente transmissor como putfile e há componentes intermediários que processam os dados.
Por exemplo, vamos criar um fluxo, que pega um arquivo vazio de um diretório e adiciona algum texto a esse arquivo e o coloca em outro diretório.
Para começar, arraste o ícone do processador para a tela NiFi e selecione GetFile processador na lista.
Crie um diretório de entrada como c:\inputdir.
Clique com o botão direito no processador e selecione configurar e na guia de propriedades adicionar Input Directory (c:\inputdir) e clique em aplicar e volte para a tela.
Arraste o ícone do processador para a tela e selecione o processador ReplaceText na lista.
Clique com o botão direito no processador e selecione configurar. Noproperties guia, adicione algum texto como “Hello tutorialspoint.com” na caixa de texto de Valor de substituição e clique em aplicar.
Vá para a guia de configurações, marque a caixa de seleção de falha no lado direito e volte para a tela.
Conecte o processador GetFIle ao ReplaceText no relacionamento de sucesso.
Arraste o ícone do processador para a tela e selecione o processador PutFile na lista.
Crie um diretório de saída como c:\outputdir.
Clique com o botão direito no processador e selecione configurar. Na guia de propriedades, adicioneDirectory (c:\outputdir) e clique em aplicar e volte para a tela.
Vá para a guia de configurações e marque a caixa de seleção de falha e sucesso no lado direito e volte para a tela.
Conecte o processador ReplaceText ao PutFile no relacionamento de sucesso.
Agora inicie o fluxo e adicione um arquivo vazio no diretório de entrada e você verá que, ele será movido para o diretório de saída e o texto será adicionado ao arquivo.
Seguindo as etapas acima, os desenvolvedores podem escolher qualquer processador e outro componente NiFi para criar um fluxo adequado para sua organização ou cliente.
O Apache NiFi oferece o conceito de Templates, que facilita a reutilização e distribuição dos fluxos NiFi. Os fluxos podem ser usados por outros desenvolvedores ou em outros clusters NiFi. Ele também ajuda os desenvolvedores NiFi a compartilhar seu trabalho em repositórios como o GitHub.
Criar modelo
Vamos criar um modelo para o fluxo, que criamos no capítulo no 15 “Apache NiFi - Criando fluxos”.
Selecione todos os componentes do fluxo usando a tecla Shift e clique no ícone de criar modelo no lado esquerdo da tela NiFi. Você também pode ver uma caixa de ferramentas conforme mostrado na imagem acima. Clique no íconecreate templatemarcado em azul como na imagem acima. Insira o nome do modelo. Um desenvolvedor também pode adicionar uma descrição, que é opcional.
Baixar modelo
Em seguida, vá para a opção de modelos NiFi no menu presente no canto superior direito da interface NiFi conforme mostrado na imagem abaixo.
Agora clique no ícone de download (presente no lado direito da lista) do modelo que deseja baixar. Um arquivo XML com o nome do modelo será baixado.
Carregar modelo
Para usar um modelo em NiFi, um desenvolvedor terá que fazer upload de seu arquivo xml para NiFi usando UI. Há um ícone de upload de modelo (marcado em azul na imagem abaixo) ao lado do ícone Criar modelo, clique nele e navegue no xml.
Adicionar modelo
Na barra de ferramentas superior da IU NiFi, o ícone do modelo está antes do ícone do rótulo. O ícone é marcado em azul conforme mostrado na imagem abaixo.
Arraste o ícone do modelo, escolha o modelo na lista suspensa e clique em adicionar. Isso adicionará o modelo à tela NiFi.
NiFi oferece um grande número de API, o que ajuda os desenvolvedores a fazer alterações e obter informações de NiFi de qualquer outra ferramenta ou aplicativos personalizados desenvolvidos. Neste tutorial, usaremos o app postman no google chrome para explicar alguns exemplos.
Para adicionar postmantoyour Google Chrome, vá para o URL mencionado abaixo e clique no botão Adicionar ao Chrome. Agora você verá um novo aplicativo adicionado ao seu Google Chrome.
loja online do Chrome
A versão atual do NiFi rest API é 1.8.0 e a documentação está presente no URL mencionado abaixo.
https://nifi.apache.org/docs/nifi-docs/rest-api/index.html
A seguir estão os Módulos API NiFi rest mais usados -
http: // <url nifi>: <porta nifi> / nifi-api / <api-path>
Caso o HTTPS esteja habilitado https: // <nifi url>: <porta nifi> / nifi-api / <api-path>
S.No. | Nome do módulo API | api-path | Descrição |
---|---|---|---|
1 | Acesso | /Acesso | Para autenticar o usuário e obter o token de acesso da NiFi. |
2 | Controlador | /controlador | Para gerenciar o cluster e criar tarefa de relatório. |
3 | Serviços de controlador | / controller-services | É usado para gerenciar serviços do controlador e atualizar as referências de serviço do controlador. |
4 | Tarefas de relatório | / reporting-tasks | Para gerenciar tarefas de relatório. |
5 | Fluxo | /fluxo | Para obter os metadados do fluxo de dados, o status do componente e o histórico de consultas |
6 | Grupos de Processos | / process-groups | Para fazer upload e instanciar um modelo e criar componentes. |
7 | Processadores | / processadores | Para criar e agendar um processador e definir suas propriedades. |
8 | Conexões | / conexões | Para criar uma conexão, defina a prioridade da fila e atualize o destino da conexão |
9 | FlowFile Queues | / flowfile-queues | Para visualizar o conteúdo da fila, baixe o conteúdo do arquivo de fluxo e esvazie a fila. |
10 | Grupos de processos remotos | / remote-process-groups | Para criar um grupo remoto e permitir a transmissão. |
11 | Proveniência | / proveniência | Para consultar a proveniência e pesquisar a linhagem do evento. |
Vamos agora considerar um exemplo e executar no postman para obter os detalhes sobre a instância NiFi em execução.
Solicitação
GET http://localhost:8080/nifi-api/flow/about
Resposta
{
"about": {
"title": "NiFi",
"version": "1.7.1",
"uri": "http://localhost:8080/nifi-api/",
"contentViewerUrl": "../nifi-content-viewer/",
"timezone": "SGT",
"buildTag": "nifi-1.7.1-RC1",
"buildTimestamp": "07/12/2018 12:54:43 SGT"
}
}
O Apache NiFi registra e armazena todas as informações sobre os eventos que ocorrem nos dados ingeridos no fluxo. O repositório de proveniência de dados armazena essas informações e fornece UI para pesquisar essas informações de evento. A proveniência dos dados pode ser acessada para nível de NiFi completo e nível de processador também.
A tabela a seguir lista os diferentes campos na lista de eventos de Proveniência de Dados NiFi com os seguintes campos -
S.No. | Nome do Campo | Descrição |
---|---|---|
1 | Data hora | Data e hora do evento. |
2 | Tipo | Tipo de evento como 'CRIAR'. |
3 | FlowFileUuid | UUID do arquivo de fluxo no qual o evento é executado. |
4 | Tamanho | Tamanho do arquivo de fluxo. |
5 | Nome do componente | Nome do componente que executou o evento. |
6 | Tipo de Componente | Tipo de componente. |
7 | Mostrar linhagem | A última coluna tem o ícone show lineage, que é usado para ver a linhagem do flowfile conforme mostrado na imagem abaixo. |
Para obter mais informações sobre o evento, o usuário pode clicar no ícone de informações presente na primeira coluna da IU da NiFi Data Provenance.
Existem algumas propriedades no arquivo nifi.properties, que são usadas para gerenciar o repositório NiFi Data Provenance.
S.No. | Nome da propriedade | Valor padrão | Descrição |
---|---|---|---|
1 | nifi.provenance.repository.directory.default | ./provenance_repository | Para especificar o caminho padrão de proveniência dos dados NiFi. |
2 | nifi.provenance.repository.max.storage.time | 24 horas | Especificar o tempo máximo de retenção da proveniência dos dados NiFi. |
3 | nifi.provenance.repository.max.storage.size | 1 GB | Para especificar o armazenamento máximo de proveniência de dados NiFi. |
4 | nifi.provenance.repository.rollover.time | 30 segs | Especificar o tempo de rollover da proveniência dos dados NiFi. |
5 | nifi.provenance.repository.rollover.size | 100 MB | Para especificar o tamanho de rollover da proveniência dos dados NiFi. |
6 | nifi.provenance.repository.indexed.fields | EventType, FlowFileUUID, Filename, ProcessorID, Relationship | Para especificar os campos usados para pesquisar e indexar a proveniência dos dados NiFi. |
No Apache NiFi, existem várias maneiras de monitorar as diferentes estatísticas do sistema, como erros, uso de memória, uso de CPU, estatísticas de fluxo de dados, etc. Discutiremos as mais populares neste tutorial.
Monitoramento integrado
Nesta seção, aprenderemos mais sobre o monitoramento integrado no Apache NiFi.
Quadro de avisos
O quadro de avisos mostra os últimos ERROR e WARNING sendo gerados pelos processadores NiFi em tempo real. Para acessar o quadro de avisos, o usuário terá que ir até o menu suspenso à direita e selecionar a opção Quadro de avisos. Ele é atualizado automaticamente e um usuário também pode desativá-lo. Um usuário também pode navegar até o processador real clicando duas vezes no erro. Um usuário também pode filtrar os boletins trabalhando com o seguinte -
- por mensagem
- pelo nome
- por id
- por id de grupo
IU de proveniência de dados
Para monitorar os eventos que ocorrem em qualquer processador específico ou através do NiFi, um usuário pode acessar a proveniência dos dados no mesmo menu do quadro de avisos. Um usuário também pode filtrar os eventos no repositório de proveniência de dados trabalhando com os seguintes campos -
- por nome de componente
- por tipo de componente
- por tipo
NiFi Summary UI
O resumo do Apache NiFi também pode ser acessado no mesmo menu do quadro de avisos. Esta IU contém informações sobre todos os componentes dessa instância ou cluster NiFi em particular. Eles podem ser filtrados por nome, tipo ou URI. Existem diferentes guias para diferentes tipos de componentes. A seguir estão os componentes, que podem ser monitorados na IU de resumo NiFi -
- Processors
- Portas de entrada
- Portas de saída
- Grupos de processos remotos
- Connections
- Grupos de processos
Nesta IU, há um link no lado direito inferior denominado diagnósticos do sistema para verificar as estatísticas da JVM.
Tarefas de relatório
O Apache NiFi fornece várias tarefas de relatório para oferecer suporte a sistemas de monitoramento externos como Ambari, Grafana, etc. Um desenvolvedor pode criar uma tarefa de relatório customizada ou pode configurar os embutidos para enviar as métricas de NiFi aos sistemas de monitoramento externos. A tabela a seguir lista as tarefas de relatório oferecidas pelo NiFi 1.7.1.
S.No. | Nome da tarefa de relatório | Descrição |
---|---|---|
1 | AmbariReportingTask | Para configurar o Ambari Metrics Service para NiFi. |
2 | ControllerStatusReportingTask | Para relatar as informações da IU de resumo NiFi nos últimos 5 minutos. |
3 | MonitorDiskUsage | Para relatar e avisar sobre o uso do disco de um diretório específico. |
4 | MonitorMemory | Para monitorar a quantidade de Java Heap usada em um conjunto de memória Java da JVM. |
5 | SiteToSiteBulletinReportingTask | Para relatar os erros e avisos em boletins usando o protocolo Site a Site. |
6 | SiteToSiteProvenanceReportingTask | Para relatar os eventos NiFi Data Provenance usando o protocolo Site to Site. |
API NiFi
Há um diagnóstico de sistema denominado API, que pode ser usado para monitorar as estatísticas NiFI em qualquer aplicativo desenvolvido de forma personalizada. Vamos verificar a API no postman.
Solicitação
http://localhost:8080/nifi-api/system-diagnostics
Resposta
{
"systemDiagnostics": {
"aggregateSnapshot": {
"totalNonHeap": "183.89 MB",
"totalNonHeapBytes": 192819200,
"usedNonHeap": "173.47 MB",
"usedNonHeapBytes": 181894560,
"freeNonHeap": "10.42 MB",
"freeNonHeapBytes": 10924640,
"maxNonHeap": "-1 bytes",
"maxNonHeapBytes": -1,
"totalHeap": "512 MB",
"totalHeapBytes": 536870912,
"usedHeap": "273.37 MB",
"usedHeapBytes": 286652264,
"freeHeap": "238.63 MB",
"freeHeapBytes": 250218648,
"maxHeap": "512 MB",
"maxHeapBytes": 536870912,
"heapUtilization": "53.0%",
"availableProcessors": 4,
"processorLoadAverage": -1,
"totalThreads": 71,
"daemonThreads": 31,
"uptime": "17:30:35.277",
"flowFileRepositoryStorageUsage": {
"freeSpace": "286.93 GB",
"totalSpace": "464.78 GB",
"usedSpace": "177.85 GB",
"freeSpaceBytes": 308090789888,
"totalSpaceBytes": 499057160192,
"usedSpaceBytes": 190966370304,
"utilization": "38.0%"
},
"contentRepositoryStorageUsage": [
{
"identifier": "default",
"freeSpace": "286.93 GB",
"totalSpace": "464.78 GB",
"usedSpace": "177.85 GB",
"freeSpaceBytes": 308090789888,
"totalSpaceBytes": 499057160192,
"usedSpaceBytes": 190966370304,
"utilization": "38.0%"
}
],
"provenanceRepositoryStorageUsage": [
{
"identifier": "default",
"freeSpace": "286.93 GB",
"totalSpace": "464.78 GB",
"usedSpace": "177.85 GB",
"freeSpaceBytes": 308090789888,
"totalSpaceBytes": 499057160192,
"usedSpaceBytes": 190966370304,
"utilization": "38.0%"
}
],
"garbageCollection": [
{
"name": "G1 Young Generation",
"collectionCount": 344,
"collectionTime": "00:00:06.239",
"collectionMillis": 6239
},
{
"name": "G1 Old Generation",
"collectionCount": 0,
"collectionTime": "00:00:00.000",
"collectionMillis": 0
}
],
"statsLastRefreshed": "09:30:20 SGT",
"versionInfo": {
"niFiVersion": "1.7.1",
"javaVendor": "Oracle Corporation",
"javaVersion": "1.8.0_151",
"osName": "Windows 7",
"osVersion": "6.1",
"osArchitecture": "amd64",
"buildTag": "nifi-1.7.1-RC1",
"buildTimestamp": "07/12/2018 12:54:43 SGT"
}
}
}
}
Antes de iniciar a atualização do Apache NiFi, leia as notas de lançamento para saber sobre as mudanças e adições. Um usuário precisa avaliar o impacto dessas adições e mudanças em sua instalação NiFi atual. Abaixo está o link para obter as notas de lançamento dos novos lançamentos do Apache NiFi.
https://cwiki.apache.org/confluence/display/NIFI/Release+Notes
Em uma configuração de cluster, um usuário precisa atualizar a instalação NiFi de cada nó em um cluster. Siga as etapas abaixo para atualizar o Apache NiFi.
Faça backup de todos os NARs personalizados presentes em seu NiFi ou lib atual ou em qualquer outra pasta.
Baixe a nova versão do Apache NiFi. Abaixo está o link para baixar o código-fonte e os binários da última versão da NiFi.
https://nifi.apache.org/download.html
Crie um novo diretório no mesmo diretório de instalação do NiFi atual e extraia a nova versão do Apache NiFi.
Pare o NiFi graciosamente. Primeiro pare todos os processadores e deixe todos os arquivos de fluxo presentes no fluxo serem processados. Assim que não houver mais nenhum arquivo de fluxo lá, pare o NiFi.
Copie a configuração de authorizers.xml da instalação NiFi atual para a nova versão.
Atualize os valores em bootstrap-notification-services.xml e bootstrap.conf da nova versão NiFi da atual.
Adicione o registro personalizado de logback.xml à nova instalação NiFi.
Configure o provedor de identidade de login em login-identity-supplies.xml a partir da versão atual.
Atualize todas as propriedades em nifi.properties da nova instalação NiFi da versão atual.
Certifique-se de que o grupo e o usuário da nova versão sejam os mesmos da versão atual, para evitar erros de permissão negada.
Copie a configuração de state-management.xml da versão atual para a nova versão.
Copie o conteúdo dos seguintes diretórios da versão atual da instalação do NiFi para os mesmos diretórios da nova versão.
./conf/flow.xml.gz
Também flow.xml.gz do diretório de arquivo.
Para repositórios de proveniência e conteúdo, altere os valores em nifi. arquivo de propriedades para os repositórios atuais.
copie o estado de ./state/local ou mude em nifi.properties se qualquer outro diretório externo for especificado.
Verifique novamente todas as alterações realizadas e verifique se elas têm impacto em quaisquer novas alterações adicionadas na nova versão NiFi. Se houver algum impacto, verifique as soluções.
Inicie todos os nós NiFi e verifique se todos os fluxos estão funcionando corretamente e se os repositórios estão armazenando dados e a Ui está recuperando-os com algum erro.
Monitore os boletins por algum tempo para verificar se há novos erros.
Se a nova versão estiver funcionando corretamente, a versão atual pode ser arquivada e excluída dos diretórios.
O Grupo de processos remotos Apache NiFi ou RPG permite que o fluxo direcione os FlowFiles em um fluxo para diferentes instâncias NiFi usando o protocolo Site-to-Site. A partir da versão 1.7.1, NiFi não oferece relacionamentos balanceados, então RPG é usado para balanceamento de carga em um fluxo de dados NiFi.
Um desenvolvedor pode adicionar o RPG da barra de ferramentas superior da interface do usuário NiFi arrastando o ícone conforme mostrado na imagem acima para a tela. Para configurar um RPG, um desenvolvedor deve adicionar os seguintes campos -
S.No. | Nome do Campo | Descrição |
---|---|---|
1 | URLs | Para especificar URLs de NiFi de destino remoto separados por vírgulas. |
2 | Protocolo de Transporte | Para especificar o protocolo de transporte para instâncias NiFi remotas. É RAW ou HTTP. |
3 | Interface de rede local | Para especificar a interface de rede local para enviar / receber dados. |
4 | Nome de host do servidor proxy HTTP | Especificar o nome do host do servidor proxy para fins de transporte em RPG. |
5 | Porta do servidor proxy HTTP | Especificar a porta do servidor proxy para fins de transporte em RPG. |
6 | Usuário proxy HTTP | É um campo opcional para especificar o nome de usuário do proxy HTTP. |
7 | Senha do proxy HTTP | É um campo opcional para especificar a senha do nome de usuário acima. |
Um desenvolvedor precisa habilitá-lo, antes de usá-lo, como iniciamos os processadores antes de usá-los.
O Apache NiFi oferece serviços compartilhados, que podem ser compartilhados por processadores e a tarefa de relatório é chamada de configurações do controlador. São como o pool de conexão do banco de dados, que pode ser usado por processadores que acessam o mesmo banco de dados.
Para acessar as configurações do controlador, use o menu suspenso no canto superior direito da interface do usuário NiFi, conforme mostrado na imagem abaixo.
Existem muitas configurações de controlador oferecidas pelo Apache NiFi, discutiremos um comumente usado e como o configuramos no NiFi.
DBCPConnectionPool
Adicione o sinal de mais na página Configurações de Nifi após clicar na opção Configurações do controlador. Em seguida, selecione DBCPConnectionPool na lista de configurações do controlador. DBCPConnectionPool será adicionado na página principal de configurações de NiFi, conforme mostrado na imagem abaixo.
Ele contém as seguintes informações sobre o controlador setting:Name
- Type
- Bundle
- State
- Scope
- Configurar e excluir ícone
Clique no ícone configurar e preencha os campos obrigatórios. Os campos estão listados na tabela abaixo -
S.No. | Nome do Campo | Valor padrão | descrição |
---|---|---|---|
1 | URL de conexão do banco de dados | vazio | Para especificar a URL de conexão ao banco de dados. |
2 | Nome da classe do driver de banco de dados | vazio | Para especificar o nome da classe do driver para o banco de dados como com.mysql.jdbc.Driver para mysql. |
3 | Tempo Máximo de Espera | 500 millis | Para especificar o tempo de espera pelos dados de uma conexão com o banco de dados. |
4 | Máximo de conexões totais | 8 | Especificar o número máximo de conexões alocadas no conjunto de conexões do banco de dados. |
Para parar ou definir uma configuração do controlador, primeiro todos os componentes NiFi anexados devem ser interrompidos. NiFi também adiciona escopo nas configurações do controlador para gerenciar a configuração dele. Portanto, apenas aqueles que compartilharam as mesmas configurações não serão afetados e usarão as mesmas configurações do controlador.
As tarefas de relatório NiFi do Apache são semelhantes aos serviços do controlador, que são executados em segundo plano e enviam ou registram as estatísticas da instância NiFi. A tarefa de relatório NiFi também pode ser acessada na mesma página das configurações do controlador, mas em uma guia diferente.
Para adicionar uma tarefa de relatório, um desenvolvedor precisa clicar no botão de adição presente no lado superior direito da página de tarefas de relatório. Essas tarefas de relatório são utilizadas principalmente para monitorar as atividades de uma instância NiFi, seja nos boletins ou na proveniência. Principalmente, essas tarefas de relatório usam Site a Site para transportar os dados de estatísticas NiFi para outro nó ou sistema externo.
Vamos agora adicionar uma tarefa de relatório configurada para mais compreensão.
MonitorMemory
Esta tarefa de relatório é usada para gerar boletins, quando um pool de memória ultrapassa a porcentagem especificada. Siga estas etapas para configurar a tarefa de relatório MonitorMemory -
Adicione o sinal de mais e procure MonitorMemory na lista.
Selecione MonitorMemory e clique em ADD.
Depois de adicionado na página principal da página principal de tarefas de relatório, clique no ícone de configuração.
Na guia de propriedades, selecione o pool de memória que você deseja monitorar.
Selecione a porcentagem após a qual deseja que os boletins alertem os usuários.
Inicie a tarefa de relatório.
Apache NiFi - Processador Personalizado
Apache NiFi é uma plataforma de código aberto e oferece aos desenvolvedores as opções de adicionar seu processador personalizado à biblioteca NiFi. Siga estas etapas para criar um processador personalizado.
Baixe a versão mais recente do Maven no link fornecido abaixo.
https://maven.apache.org/download.cgi
Adicione uma variável de ambiente chamada M2_HOME e defina o valor como o diretório de instalação do maven.
Baixe Eclipse IDE no link abaixo.
https://www.eclipse.org/downloads/download.php
Abra o prompt de comando e execute o comando Maven Archetype.
> mvn archetype:generate
Pesquise o tipo nifi nos projetos de arquétipo.
Selecione org.apache.nifi: projeto nifi-processor-bundle-archetype.
Em seguida, na lista de versões, selecione a versão mais recente, ou seja, 1.7.1 para este tutorial.
Insira groupId, artifactId, versão, pacote e artifactBaseName etc.
Em seguida, um projeto maven será criado tendo como diretórios.
nifi-<artifactBaseName>-processors
nifi-<artifactBaseName>-nar
Execute o comando abaixo no diretório nifi- <artifactBaseName> -processors para adicionar o projeto no eclipse.
mvn install eclipse:eclipse
Abra o eclipse e selecione importar no menu de arquivo.
Em seguida, selecione “Projetos existentes na área de trabalho” e adicione o projeto do diretório nifi- <artifactBaseName> -processors no eclipse.
Adicione seu código na função void onTrigger pública (contexto ProcessContext, sessão ProcessSession), que é executada sempre que um processador está programado para ser executado.
Em seguida, empacote o código em um arquivo NAR executando o comando mencionado abaixo.
mvn clean install
Um arquivo NAR será criado no nifi-
-nar / diretório de destino. Copie o arquivo NAR para a pasta lib do Apache NiFi e reinicie o NiFi.
Após o reinício bem-sucedido do NiFi, verifique a lista de processadores para o novo processador personalizado.
Para quaisquer erros, verifique o arquivo ./logs/nifi.log.
Apache NiFi - Serviço de controladores personalizados
Apache NiFi é uma plataforma de código aberto e oferece aos desenvolvedores as opções de adicionar seu serviço de controladores personalizados no Apache NiFi. As etapas e ferramentas são quase as mesmas usadas para criar um processador personalizado.
Abra o prompt de comando e execute o comando Maven Archetype.
> mvn archetype:generate
Pesquise o tipo nifi nos projetos de arquétipo.
Selecione org.apache.nifi:nifi-service-bundle-archetype projeto.
Em seguida, na lista de versões, selecione a versão mais recente - 1.7.1 para este tutorial.
Insira groupId, artifactId, versão, pacote e artifactBaseName, etc.
Um projeto maven será criado com diretórios.
nifi-<artifactBaseName>
nifi-<artifactBaseName>-nar
nifi-<artifactBaseName>-api
nifi-<artifactBaseName>-api-nar
Execute o comando abaixo nos diretórios nifi- <artifactBaseName> e nifi- <artifactBaseName> -api para adicionar esses dois projetos no eclipse.
mvn install eclipse: eclipse
Abra o eclipse e selecione importar no menu de arquivo.
Em seguida, selecione “Projetos existentes na área de trabalho” e adicione o projeto dos diretórios nifi- <artifactBaseName> e nifi- <artifactBaseName> -api no eclipse.
Adicione seu código nos arquivos de origem.
Em seguida, empacote o código em um arquivo NAR executando o comando mencionado abaixo.
mvn clean install
Dois arquivos NAR serão criados em cada diretório nifi- <artifactBaseName> / target e nifi- <artifactBaseName> -api / target.
Copie esses arquivos NAR para a pasta lib do Apache NiFi e reinicie o NiFi.
Após o reinício bem-sucedido do NiFi, verifique a lista de processadores para o novo processador personalizado.
Para quaisquer erros, verifique ./logs/nifi.log Arquivo.
Apache NiFi - Logging
Apache NiFi usa a biblioteca de logback para lidar com seu registro. Existe um arquivo logback.xml presente no diretório conf do NiFi, que é usado para configurar o logging no NiFi. Os logs são gerados na pasta de logs da NiFi e os arquivos de log são os descritos a seguir.
nifi-app.log
Este é o arquivo de log principal do nifi, que registra todas as atividades do aplicativo Apache NiFi, desde o carregamento de arquivos NAR até os erros de tempo de execução ou boletins encontrados pelos componentes NiFi. Abaixo está o appender padrão emlogback.xml arquivo para nifi-app.log Arquivo.
<appender name="APP_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-app.log</file>
<rollingPolicy
class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
<fileNamePattern>
${org.apache.nifi.bootstrap.config.log.dir}/
nifi-app_%d{yyyy-MM-dd_HH}.%i.log
</fileNamePattern>
<maxFileSize>100MB</maxFileSize>
<maxHistory>30</maxHistory>
</rollingPolicy>
<immediateFlush>true</immediateFlush>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
O nome do anexador é APP_FILE e a classe é RollingFileAppender, o que significa que o criador de logs está usando a política de reversão. Por padrão, o tamanho máximo do arquivo é 100 MB e pode ser alterado para o tamanho necessário. A retenção máxima para APP_FILE é de 30 arquivos de log e pode ser alterada de acordo com a necessidade do usuário.
nifi-user.log
Este log contém os eventos do usuário, como segurança da web, configuração da API da web, autorização do usuário, etc. Abaixo está o appender para nifi-user.log no arquivo logback.xml.
<appender name="USER_FILE"
class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-user.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${org.apache.nifi.bootstrap.config.log.dir}/
nifi-user_%d.log
</fileNamePattern>
<maxHistory>30</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
O nome do anexador é USER_FILE. Segue a política de rollover. O período máximo de retenção para USER_FILE é de 30 arquivos de log. Abaixo estão os registradores padrão para o appender USER_FILE presente no nifi-user.log.
<logger name="org.apache.nifi.web.security" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.web.api.config" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.cluster.authorization" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
<logger name="org.apache.nifi.web.filter.RequestLogger" level="INFO" additivity="false">
<appender-ref ref="USER_FILE"/>
</logger>
nifi-bootstrap.log
Este log contém os logs de bootstrap, a saída padrão do Apache NiFi (todos system.out escritos no código principalmente para depuração) e o erro padrão (todos system.err escritos no código). Abaixo está o anexador padrão para o nifi-bootstrap.log em logback.log.
<appender name="BOOTSTRAP_FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">
<file>${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap.log</file>
<rollingPolicy class="ch.qos.logback.core.rolling.TimeBasedRollingPolicy">
<fileNamePattern>
${org.apache.nifi.bootstrap.config.log.dir}/nifi-bootstrap_%d.log
</fileNamePattern>
<maxHistory>5</maxHistory>
</rollingPolicy>
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<pattern>%date %level [%thread] %logger{40} %msg%n</pattern>
</encoder>
</appender>
Arquivo nifi-bootstrap.log, o nome do appender é BOOTSTRAP_FILE, que também segue a política de rollback. A retenção máxima para o appender BOOTSTRAP_FILE é de 5 arquivos de log. Abaixo estão os registradores padrão para o arquivo nifi-bootstrap.log.
<logger name="org.apache.nifi.bootstrap" level="INFO" additivity="false">
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>
<logger name="org.apache.nifi.bootstrap.Command" level="INFO" additivity="false">
<appender-ref ref="CONSOLE" />
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>
<logger name="org.apache.nifi.StdOut" level="INFO" additivity="false">
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>
<logger name="org.apache.nifi.StdErr" level="ERROR" additivity="false">
<appender-ref ref="BOOTSTRAP_FILE" />
</logger>