Buscar

Construindo Infraestrutura de Engenharia de Dados com Apache NiFi

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 28 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Prof. Giovane Barcelos 
giovane_barcelos@uniritter.edu.br 
Engenharia de Dados
ED0201
mailto:giovane_barcelos@uniritter.edu.br
Pág. 2 Engenharia de Dados De 28
Plano de Ensino
Conteúdo programático
N2N2
N1N1
1. Construindo os pipelines de dados: extrair, transformar e carregar
1.1 O que é engenharia de dados? (a)
1.2 Construindo nossa infraestrutura de engenharia de dados (b)
1.3 Leitura e gravação de arquivos
1.4 Trabalhando com bancos de dados (c, d)
1.5 Limpeza, transformação e enriquecimento de dados
1.6 Construindo o pipeline de dados (h)
2. Implantação de pipelines de dados na produção
2.1 Recursos de um pipeline em produção (f, g)
2.2 Controle de versão com o NiFi Registry (e)
2.3 Monitorando pipelines de dados
2.4 Implantando pipelines de dados
2.5 Construindo um pipeline de dados em produção (i)
3 Além do Lote (batch) - criando pipelines de dados em tempo real
3.1 Construindo um cluster Kafka (b)
3.2 Streaming de dados com Apache Kafka (e)
3.3 Processamento de dados com Apache Spark (e)
3.4 Dados de borda (edge) em tempo real com MiNiFi, Kafka e Spark
3.5 Construção, implantação e gerenciamento de pipelines: uma revisão geral
Pág. 3 Engenharia de Dados De 28
➢ Inicialmente precisamos estar aptos a criar pipelines de engenharia de 
dados para mover dados e visualizar resultados 
➢ Isto inclui monitorar as transformações e debugar erros
➢ Para atender estes requisitos vamos instalar as seguintes soluções:
✔ Banco de Dados: 
● PostgreSQL: banco de dados relacional 
● Elasticsearch: banco de dados não relacional do tipo de pesquisa
✔ Construtores de workflows:
● Airflow: plataforma de gerenciamento de workflow desenvolvido 
pelo Airbnb em 2014
● Apache NiFi: automatiza fluxo de dados entre sistemas distintos
✔ Ferramentas administrativas: 
● PgAdmin para PostgreSQL: GUI do PostgreSQL
● Kibana para Elasticsearch: dashboard de visualização Elasticsearch
Construindo nossa infraestrutura de engenharia de dados
O que precisamos?
Pág. 4 Engenharia de Dados De 28
➢ Primeira ferramenta que vamos utilizar para construir pipelines de 
engenharia de dados
➢ Permite construir pipelines de dados usando processadores pré-
construídos 
➢ Não é necessário escrever qualquer código para um pipeline 
➢ Permite definir agendador para executar pipelines frequentes 
➢ Pode-se determinar que uma tarefa seja mais lenta que outra
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Apache NiFi
Pág. 5 Engenharia de Dados De 28
1. Java JRE para executar o Apache NiFi que é escrito em Java: 
 sudo apt update
 sudo apt install curl openjdk-11-jre-headless -y 
2. Download do NiFi: 
 cd /opt # Path de instalação do NiFi
 sudo curl https://mirrors.estointernet.in/apache/nifi/1.14.0/nifi-1.14.0-bin.tar.gz -o
3. Descompactar os arquivos do NiFi:
 sudo tar xvzf nifi.tar.gz
4. Remoção do arquivo compactado e link simbólico do diretório do NiFi:
 sudo rm nifi.tar.gz
 sudo ln -s nifi-1.14.0 nifi
5. Direito de propriedade do usuário e grupo do xdebian sobre NiFi:
 sudo chown xdebian:xdebian nifi* -R
 
 
 
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Apache NiFi (1/15)
Pág. 6 Engenharia de Dados De 28
6. Verificar a situação da instalação do NiFi: 
 cd /opt/nifi
 bin/nifi.sh status
7. Configuração JAVA_HOME do NiFi:
 echo -e "\nexport JAVA_HOME=/usr/lib/jvm/default-java/" >> ~/.bashrc
 source ~/.bashrc
8. Verificar a situação da instalação do NiFi: 
 bin/nifi.sh status
 # Caso não funcione é necessário abrir um novo terminal e testar novamente
9. Criar um usuário e senha para o NiFi:
 bin/nifi.sh set-single-user-credentials admin nifiadmin12345 
10. Iniciar o servidor NiFi e verificar acesso web:
 bin/nifi.sh start
 https://localhost:8443/nifi/ # Espere +- 1min
 
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Apache NiFi (6/15)
https://localhost:8443/nifi/
Pág. 7 Engenharia de Dados De 28
11. Alteração da porta 8443 para 9300 do NiFi: 
 sed -i 's/8443/9300/g' /opt/nifi/conf/nifi.properties
12. Reinicie o NiFi: 
 cd /opt/nifi 
 bin/nifi.sh restart
13. Verifique o novo acesso web para porta 9300: 
 https://localhost:9300/nifi/ # Espere +- 1min
14. Instalação do NiFi como serviço (daemon) do Linux:
 sudo bin/nifi.sh install
15. Copia do driver postgresql para o um novo diretório do NiFi:
 mkdir /opt/nifi/drivers 
 cd /opt/nifi/drivers
 wget https://jdbc.postgresql.org/download/postgresql-42.2.23.jar 
 
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Apache NiFi (11/15)
https://localhost:9300/nifi/
https://jdbc.postgresql.org/download/postgresql-42.2.23.jar
Pág. 8 Engenharia de Dados De 28
➢ A ferramenta mais importante do Apache NiFi é o Processor:
➢ As outras ferramentas disponíveis da esquerda para direita são: 
✔ Input Port
✔ Output Port
✔ Processor Group 
✔ Remote Processor Group 
✔ Funnel 
✔ Template 
✔ Label
➢ Vamos testar o GenerateFlowFile, LogAttribute e PutFile
Construindo nossa infraestrutura de engenharia de dados
Conhecendo o Apache NiFi
Pág. 9 Engenharia de Dados De 28
➢ Iniciado em 2014 pela AirBnb
➢ Faz o mesmo que o Apache NiFi, no entanto permite criar fluxo usando 
Python puro
➢ Interface mais amigável
➢ Atualmente é um dos servidores open source de pipeline mais populares
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Apache Airflow
Pág. 10 Engenharia de Dados De 28
1. Instalar aplicativos e bibliotecas utilizadas pelo Airflow:
 sudo apt update;
 sudo apt install python3-pip software-properties-common python3-
setuptools libssl-dev libkrb5-dev -y
2. Criar diretório do xdebian para configurações e arquivos de projeto: 
 sudo mkdir /opt/airflow
 sudo chown xdebian:xdebian /opt/airflow/
3. Configurar variáveis de ambiente do Airflow:
 echo -e "\nexport AIRFLOW_HOME=/opt/airflow" >> ~/.bashrc
 echo -e "\nexport PATH=$PATH:/home/xdebian/.local/bin" >> ~/.bashrc
 source ~/.bashrc
 export AIRFLOW_HOME=/opt/airflow
 export PATH=$PATH:/home/xdebian/.local/bin
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Apache Airflow (1/14)
Pág. 11 Engenharia de Dados De 28
4. Instalar opções para postgreSQL, slack e celery:
 pip3 install 'apache-airflow[postgres,slack,celery]'
 pip3 install typing_extensions
5. Inicialização das configurações e banco de dados: 
 airflow db init
6. Crie um usuário do Airflow para acesso via Web:
 airflow users create \
 --username admin \
 --firstname Admin \
 --lastname AirFlow \
 --role Admin \
 --password airflow \
 --email admin@airflow.org
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Apache Airflow (4/14)
Pág. 12 Engenharia de Dados De 28
7. Carregue o servidor web e o servidor de agendamento:
 airflow webserver
 airflow scheduler
8. Acesso ao servidor Web pela porta padrão 8080: 
 http://localhost:8080
9. Script de inicialização Airflow:
 cat << EOF > /opt/airflow/start_airflow.sh
 export JAVA_HOME=/usr/lib/jvm/default-java/
 export AIRFLOW_HOME=/opt/airflow
 export PATH=$PATH:/home/xdebian/.local/bin
 airflow webserver 1>>/opt/airflow/airflow.log 2>&1 &
 airflow scheduler 1>>/opt/airflow/airflow.log 2>&1 &
 tail -f /opt/airflow/airflow.log
 EOF
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Apache Airflow (7/14)
http://localhost:8080/
Pág. 13 Engenharia de Dados De 28
10. Direito de execução para o script de inicialização:
 chmod 755 /opt/airflow/start_airflow.sh
11. Ícone de execução do script de inicialização da área de trabalho: 
 cat << EOF > /home/xdebian/'Área de trabalho'/'Start Apache Airflow.desktop'
 [Desktop Entry]
 Version=1.0
 Type=Application
 Name=Start Apache Airflow
 Comment=
 Exec=/opt/airflow/start_airflow.sh
 Icon=internet-web-browser
 Path=/opt/airflow/
 Terminal=true
 StartupNotify=false
 EOF
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurandoo Apache Airflow (10/14)
Pág. 14 Engenharia de Dados De 28
12. Script de finalização do Airflow:
 cat << EOF > /opt/airflow/stop_airflow.sh
 ps -ef | grep -i airflow | grep -i airflow | awk '{print $2}' | xargs kill -9
 EOF
13. Direito de execução para o script de finalização:
 chmod 755 /opt/airflow/stop_airflow.sh
14. Ícone de execução do script de finalização da área de trabalho: 
 [Desktop Entry]
 Version=1.0
 Type=Application
 Name=Stop Apache Airflow
 Comment=
 Exec=/opt/airflow/stop_airflow.sh
 Icon=system-log-out
 Path=
 Terminal=true
 StartupNotify=false
 EOF
 
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Apache Airflow (12/15)
Pág. 15 Engenharia de Dados De 28
➢ Selecione DAG example_bash_operator→
➢ Verifique os diferentes tipos de visualização: Tree View, Graph View, etc
Construindo nossa infraestrutura de engenharia de dados
Conhecendo o Apache Airflow
Pág. 16 Engenharia de Dados De 28
➢ Elasticsearch é um NoSQL (Not Only SQL) do tipo motor de pesquisa 
➢ Baseado na biblioteca Lucene 
➢ É o banco de dados de pesquisa mais popular na atualidade
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Elasticsearch
Pág. 17 Engenharia de Dados De 28
1. Download do Elasticsearch: 
 wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
2. Instalação do transporte https do apt:
 sudo apt-get update; sudo apt-get install apt-transport-https -y
3. Instalação repositório Debian do Elasticsearch:
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" |
sudo tee /etc/apt/sources.list.d/elastic-7.x.list
4. Atualização do repositório e instalação do Elasticsearch:
 sudo apt-get update && sudo apt-get install elasticsearch -y
 
 
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Elasticsearch (1/7)
Pág. 18 Engenharia de Dados De 28
5. Alterações na configuração do nome do cluster e node:
 sudo echo "cluster.name: DataEngineeringWithPython" >> 
/etc/elasticsearch/elasticsearch.yml 
 echo "ES_JAVA_OPTS=\"-Xms1024m -Xmx1024m\"" >> 
/etc/default/elasticsearch
6. Reinicialização do serviço Elasticsearch: 
sudo service elasticsearch restart 
7. Acesso da interface Web do Elasticsearch:
 http://localhost:9200/ 
 
 
 
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Elasticsearch (5/7)
http://localhost:9200/
Pág. 19 Engenharia de Dados De 28
➢ Interface de usuário utilizada para visualizar dados do Elasticsearch e 
navegar no Elastic Stack 
➢ Faz também monitoramento de consultas e permite entender como as 
solicitações fluem pelos aplicativos 
➢ Possui muitos gráficos estatísticos: histogramas, gráficos de linha, 
gráficos de pizza, explosão solar e muitos outros
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Kibana
Pág. 20 Engenharia de Dados De 28
1. Atualização dos pacotes do sistema operacional: 
 sudo apt-get update
2. Instalação do Kibana disponível nos pacotes:
 sudo apt-get install kibana -y
3. Acesso da interface Web do Kibana:
 http://localhost:5601/ 
4. As configurações do Kibana podem ser realizadas em: 
 /etc/kibana
 
 
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o Kibana (1/4)
http://localhost:5601/
Pág. 21 Engenharia de Dados De 28
Construindo nossa infraestrutura de engenharia de dados
Conhecendo o Kibana
Pág. 22 Engenharia de Dados De 28
➢ Sistema de banco de dados objeto relacional com mais de 30 anos de 
atividade que possui grande reputação pela confiabilidade, robustez e 
performance
➢ Nome Postgres tem como origem uma alusão de sucessão ao Ingres
➢ É full ACID e possui conjunto extenso de funcionalidades típicas de 
bancos de dados relacionais (view, trigger, PK, FK, SP, replication, etc)
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o PostgreSQL
Pág. 23 Engenharia de Dados De 28
1. Atualização dos pacotes do sistema operacional: 
 sudo apt-get update
2. Instalação do PostgreSQL disponível nos pacotes:
 sudo apt-get install postgresql -y
3. Backup da configuração de login do PostgreSQL:
 sudo cp /etc/postgresql/11/main/pg_hba.conf /etc/postgresql/11/main/pg_hba.conf.bkp
4. Configuração de acesso livre para qualquer tentativa de conexão:
 sudo sed -i 's/peer/trust/g' /etc/postgresql/11/main/pg_hba.conf
 sudo sed -i 's/peer/md5/g' /etc/postgresql/11/main/pg_hba.conf
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o PostgreSQL (1/7)
Pág. 24 Engenharia de Dados De 28
5. Reinicialização do banco de dados: 
 sudo service postgresql restart
6. Alteração da senha do postgres no banco de dados: 
 sudo -u postgres psql
 ALTER USER postgres PASSWORD 'postgres';
 exit
7. Criando uma instância de banco de dados:
 sudo -u postgres createdb dataengineering
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o PostgreSQL (5/7)
Pág. 25 Engenharia de Dados De 28
➢ Interface gráfica para administração e desenvolvimento no PostgreSQL
➢ Inclui todos os recursos e características do PostgreSQL embutidos
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o pgAdmin
Pág. 26 Engenharia de Dados De 28
1. Atualização dos pacotes do sistema operacional: 
 sudo apt-get update
2. Instalação do pgAdmin disponível nos pacotes:
 sudo apt install pgadmin3 -y
Construindo nossa infraestrutura de engenharia de dados
Instalando e configurando o PostgreSQL (1/2)
Pág. 27 Engenharia de Dados De 28
Construindo nossa infraestrutura de engenharia de dados
Vamos conhecer o PostgreSQL com pgAdmin
Pág. 28 Engenharia de Dados De 28
Lembre-seLembre-se
" A informação é o petróleo do século XXI e a análise é o 
motor de combustão"
Peter Sondergaard
	Slide 1
	Slide 2
	Slide 3
	Slide 4
	Slide 5
	Slide 6
	Slide 7
	Slide 8
	Slide 9
	Slide 10
	Slide 11
	Slide 12
	Slide 13
	Slide 14
	Slide 15
	Slide 16
	Slide 17
	Slide 18
	Slide 19
	Slide 20
	Slide 21
	Slide 22
	Slide 23
	Slide 24
	Slide 25
	Slide 26
	Slide 27
	Slide 28

Continue navegando