- Nome: Cícero Henrique dos Santos
- Instituição: Semantix Academy
- Turma: Big Data Engineer 08-21
- Professor: Rodrigo Rebouças
- Pré-requisitos
- Descrição do projeto
- Configurando o Docker em sua máquina
- Preparando o ambiente
- Nível básico
- Nível avançado
Para melhor compreensão e execução do projeto é necessário conhecimentos básicos (fundamentos) em: Big Data, Docker, Python, Kafka, Elastic e Spark.
Esse projeto tem como objetivo desenvolver os conhecimentos adquiridos durante o treinamento de Big Data Enginner promovido pela Semantix Inc no segundo semestre de 2021.
O projeto é dividido em duas partes (básico e avançado) sobre o tema Campanha Nacional de Vacinação contra Covid-19.
⚠ Observação: Todas as imagens de exemplo abaixo (Visualizações) são apenas para referencias, o projeto irá ter valores diferentes e as formas de se criar tabelas com dataframe/dataset das visualizações, pode ser realizado da maneira que preferir.
A fim de facilitar o desenvolvimento das etapas do projeto, abaixo segue um passo a passo de preparação de ambiente.
- Verificar se o Windows está atualizado. Caso seja inferiro a 18362, clique no link ao lado para atualizar o Windows 10. Atualizar o Windows;
- Pesquise por Ativar ou desativar recursos do Windows e siga os passos abaixo:
- Desativar Hyper-V;
- Desativar Plataforma do Hipervisor do Windows;
- Habilitar a Plataforma de Máquina Virtual;
- Habilitar o Subsistema do Windows para Linux (WSL).
- Faça o Download do WSL 2 clicando no link ao lado: Download WSL 2;
- Acesse a Microsoft Store, e faça download e instale a distribuição Linux Ubuntu 20.04 LTS (recomendado);
- Instale o Docker Desktop no Windows: Docker Desktop;
- Obs: Abra o Docker Desktop e verifique se estão habilitados o "Enable integration with my default WSL distro" e "Ubuntu-20.04" em Settings->Resource->WSL Integration.
- Abra o terminal do WSL2 e crie um diretório para o projeto no
~$/home/<seu-nome>
com o comando:mkdir projeto-final-spark
- Acesse o diretório
cd projeto-final-spark
- No diretório projeto-final-spark, clone o cluster disponibilizado no treinamento:
git clone https://github.com/rodrigo-reboucas/docker-bigdata.git spark
- Confirme se o arquivo foi baixado com o comando de listar:
ls
- Entra na pasta spark
cd spark
- Configure o vm.max_map_count para 262144:
- Digite o comando
sudo nano /etc/sysctl.conf
- Vá até o final do arquivo e incluia o parâmetro
vm.max_map_count=262144
- CTRL+O para salvar e CTRL+X para sair
- Verifique se funcionou utilizando o comando
grep vm.max_map_count /etc/sysctl.conf
no terminal. Obs.: Sempre que iniciar o cluster, deve-se utilizar o comandosudo sysctl -w vm.max_map_count=262144
para que os containers sejam ativos.
- Digite o comando
- baixe as imagens com o comando
docker-compose -f docker-compose-parcial.yml pull
- Verifique se as imagens foram baixadas através do comando de listar
docker image ls
- Inicie todos os serviços com o comando:
docker-compose -f docker-compose-parcial.yml up -d
Obs.: Cuidado para não iniciar o cluster completo (docker-compose-completo.yml), pois dependendo das congifurações da sua máquina, ficará pesado para executar. - Por fim, será necessário configurar que as tabelas Hive aceitem o formato parquet.
- Faça downlod do arquivo .jar com o comando
curl -O https://repo1.maven.org/maven2/com/twitter/parquet-hadoop-bundle/1.6.0/parquet-hadoop-bundle-1.6.0.jar
- Copie o arquivo para o diretório
/opt/spark/jars
com o comandodocker cp parquet-hadoop-bundle-1.6.0.jar jupyter-spark:/opt/spark/jars
- Faça downlod do arquivo .jar com o comando
Agora sua máquina está configurada e seus arquivos estão prontos para serem utilizados no HDFS.
Continue os próximos passos pelo Jupyter-Notebook acessando pelo navegador a porta http://localhost:8889/
.
Depois crie um arquivo de tipo PySpark chamado projeto_final_spark_nivel_basico. Neste arquivo continuaremos com os próximos passos utilizando PySpark.
- Dados: https://mobileapps.saude.gov.br/esus-vepi/files/unAFkcaNDeXajurGB7LChj8SgQYS2ptm/04bd3419b22b9cc5c6efac2c6528100d_HIST_PAINEL_COVIDBR_06jul2021.rar
- Referência das Visualizações:
- Site: https://covid.saude.gov.br/
- Guia do Site: Painel Geral
- ✅Enviar os dados para o HDFS
- ✅Otimizar todos os dados do HDFS para uma tabela Hive particionada por município
- ✅Criar as 3 visualizações pelo Spark com os dados enviados para o HDFS
- ✅Salvar a primeira visualização como tabela Hive
- ✅Salvar a segunda visualização com formato parquet e compressão snappy
- ✅Salvar a terceira visualização em um tópico no Kafka
- ✅Criar a visualização pelo Spark com os dados enviados para o HDFS
- ⬜Salvar a visualização do exercício 6 em um tópico no Elastic
- ⬜Criar um dashboard no Elastic para visualização dos novos dados enviados
- Link oficial para todas as informações: https://opendatasus.saude.gov.br/dataset/covid-19-vacinacao
- Informações para se conectar ao cluster:
- URL https://imunizacao-es.saude.gov.br/desc-imunizacao
- Nome do índice: desc-imunizacao
- Credenciais de acesso o Usuário: imunizacao_public
- Senha: qlto5t&7r_@+#Tlstigi
- Links utéis para a resolução do problema:
- Consumo do API: https://opendatasus.saude.gov.br/dataset/b772ee55-07cd-44d8-958f-b12edd004e0b/resource/5916b3a4-81e7-4ad5-adb6-b884ff198dc1/download/manual_api_vacina_covid-19.pdf
- Conexão do Spark com Elastic: https://www.elastic.co/guide/en/elasticsearch/hadoop/current/spark.html https://docs.databricks.com/data/data-sources/elasticsearch.html#elasticsearch-notebook https://github.com/elastic/elasticsearch-hadoop https://www.elastic.co/guide/en/elasticsearch/hadoop/current/configuration.html
- Instalar Dependências: https://www.elastic.co/guide/en/elasticsearch/hadoop/current/install.html
- ⬜Replicar as visualizações do site https://covid.saude.gov.br/, porém acessando diretamente a API de Elastic.