2. ➔ Mestre em Inteligência Artificial - USP
➔ Business Strategy - La Verne, USA
➔ Graduado em Ciência da Computação -
PUC/SP
➔ Oficial da Arma de Comunicações - Exército
Brasileiro
➔ +17 anos trabalhando com desenvolvimento
de software
➔ Engineer Manager | CTO | Leader Expert
David Robert
linkedin.com/in/davidrobert
davidrobert@gmail.com
3. Construir uma visão unificada que
integre diferentes tecnologias de
banco de dados, múltiplos sistemas
transacionais, etc
Apresentando uma jornada no uso
de soluções de mercado para
construir uma estratégia baseada
em dados.
5. Contexto
➔ Necessidade de implementar um job para enviar as
informações ao ElasticSearch
➔ Design de código não-amigável da API do Flink (bad smell)
➔ Dados desagregados armazenados no ElasticSearch
➔ Leitura de outras fontes de dados também precisam ser
previamente implementadas no Flink
➔ O Kibana exibe apenas o que está no ElasticSearch!
9. É um repositório central de dados,
armazenando dados bruto, que permita
consultas complexas
Data Lake
10. Solução Inicial:
Utilizar o backup das mensagens do Kafka
armazenados no S3.
Dificuldades:
Como fazer querys em diferentes arquivos
(em diferentes formatos)?
11.
12. Apache Hive
➔ Fornece acesso a diversos tipos de dados, abstraindo
os diferentes tipos de armazenamento como "tabelas"
➔ O acesso aos dados é feito com ≅ SQL
➔ Acesso somente a arquivos
13. Combinação de três componentes:
1. Arquivos de dados em diversos formatos, normalmente
armazenados no HDFS ou Amazon S3
2. Metadados sobre o mapeamento de arquivos para tabelas.
Armazenado em um banco relacional (Ex.: MySQL)
3. HiveQL: uma linguagem de consulta executada em um framework
de computação distribuída (MapReduce/Tez)
Apache Hive - Funcionamento
14. Apache Hive - Exemplo de Utilização
Mapeamento dos arquivos gerados pelo Secor, armazenados no
Amazon S3 (backup das mensagens do Kafka)
CREATE EXTERNAL TABLE IF NOT EXISTS my_schema.my_beautiful_table (
payload STRING
)
PARTITIONED BY (dt STRING)
STORED AS TEXTFILE
LOCATION 's3a://my-bucket-on-amazons-s3/folder_with_all_files';
23. Presto
➔ Não é um banco de dados!
➔ Abstrai e centraliza o acesso à várias fontes de dados
(conector)
➔ Criado para análise exploratória e interativa
➔ Permite acesso usando comandos SQL à qualquer uma
das fontes de dados suportadas
➔ Criado e desenvolvido pelo Facebook
25. ➔ É possível acessar o Hive diretamente, ou executar as mesmas
queries através do Presto
➔ As consultas executadas pelo Hive usam MapReduce, e utilizam
o disco (HDFS)
➔ O Presto não utiliza MapReduce, todas as queries são feitas em
memória, e são mais rápidas do que executadas diretamente no
Hive (porém, seu cluster precisa de mais recursos)
Presto & Hive
28. Debezium
➔ Plataforma de Change Data Capture (CDC). Exemplos de uso:
◆ replicação de dados para outros bancos de dados
◆ extração de microsserviços de monólitos
◆ invalidação de cache
➔ Faz a leitura do binlog do MySQL e envia no Kafka
➔ Captura somente às alterações do banco
➔ Usa o Kafka Connect, altamente escalável com conectores CDC para
vários bancos de dados, incluindo Postgres, Mysql e MongoDB