Baixe o app para aproveitar ainda mais
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
Compartilhar