1
Agenda
• Configurando o Ambiente
• Revisando a aula anterior
• Staging Area
• Web Scraping e Web Crawling
• Streaming Processing
• Evolução do estudo de caso de ETL para
trabalhar com Real Time Analytics
2
CONFIGURANDO O AMBIENTE DA
MÁQUINA VIRTUAL
3
Download dos frameworks
• Flink-Kafka: http://bit.ly/2xUjgnD
• Kafka 0.11: http://bit.ly/2yC2mfj
• Kafka 0.8: http://bit.ly/2yIyvUH
• Spark: http://bit.ly/2zEiv3X
4
Configurando a rede
• Escolha a máquina virtual ETL e clique em Configurações
5
Configurando a rede
• Selecione a aba Rede do lado esquerdo.
6
Configurando a rede
• Dentro da aba Rede: Clique em “Habilitar Placa de Rede” e
selecione a opção “Placa em modo Bridge” em “Conectado
a”. Clique em OK para salvar.
7
RECAPITULANDO...
8
Data warehouse
Data warehouse é um sistema que extrai, limpa, padroniza
e entrega os dados das fontes de dados em um
armazenamento dimensional dos dados permitindo
implementar consultas e análises para o propósito de
tomada de decisões.
Fonte: Ralph Kimball, Joe Caserta: The Data Warehouse ETL Toolkit; Wiley 2004
9
Data Lake
10
Data Lake
11
Estruturas de dados em ETL
• Fontes de dados não estruturados
12
Levantando os Requisitos
• Necessidades do Negócio
• Perfil dos Dados
• Requisitos de Segurança
• Integração dos Dados
• Latência dos Dados
• Arquivamento e Linhagem
• Interfaces de Entrega para o Usuário Final
• Habilidades Disponíveis
• Licenças Legadas
13
STAGING AREA
14
Staging Area
15
Staging Area
• Área de armazenamento dos dados temporários
do ETL
• A Staging Area deve ser administrada apenas
pelo time de ETL
• Usuários não são permitidos nesta área por
qualquer razão
• Relatórios não podem acessar dados nesta área
• Apenas processos de ETL podem ler e escrever
na Staging Area
16
Projeto da Staging Area
• O arquiteto ETL deve fornecer ao time de administração
do banco de dados e do S.O. uma estimativa de
utilização de espaço e parâmetros de configuração dos
bancos de dados e sistema de arquivos necessários.
17
Projeto da Staging Area
• Table Name: o nome da tabela ou arquivo na
staging area. Existe uma linha na planilha para
cada “staging”
18
Projeto da Staging Area
• Update Strategy: indica como a tabela é mantida.
– Tabela persistente: dados serão adicionados, atualizados e talvez
deletados.
– Tabelas transientes: tabelas recarregadas a cada processo ETL.
19
Projeto da Staging Area
• Load Frequency: revela como a tabela é
carregada ou modificada pelo processo ETL
– Geralmente diariamente, mas pode ser em qualquer
intervalo de tempo.
20
Projeto da Staging Area
• ETL job: tabelas são populadas ou atualizadas
pelos jobs ETL
– Quando muitos jobs afetam uma tabela, são listados
todos os jobs nesta planilha
21
Projeto da Staging Area
• Initial Row Count: o time de ETL deve estimar quantas
linhas cada tabela na staging area irá conter inicialmente
– Esse valor é geralmente baseado no número de tuplas da
fonte/destino de dados.
22
Projeto da Staging Area
• Average Row Length: estimar o tamanho de cada
linha da tabela de staging
– No Oracle, por exemplo, o DBMS STATS pode ser
utilizado
23
Projeto da Staging Area
• Grows With: define quando cada tabela na staging area
cresce.
– Nem sempre as tabelas crescem a cada vez que são acessadas.
– Esse campo é baseado na regra de negócio
24
Projeto da Staging Area
• Expected Monthly Rows: número de linhas que cresce na
tabela por mês.
– Estimativa baseada no histórico e regras de negócio.
– Alocar o espaço previamente.
25
Projeto da Staging Area
• Expected Monthly Bytes: valor em bytes de
crescimento da tabela por mês.
– Cálculo: Average Row Length X Expected Monthly
Rows.
26
Projeto da Staging Area
• Initial Table Size: valor em bytes ou megabytes
do tamanho inicial da tabela
– Cálculo: Average Row Length X Initial Row Count.
27
Projeto da Staging Area
• Table Size 6 Months: estimativa do tamanho das tabelas
depois de 6 meses
– Cálculo: (Average Row Length X Initial Row Count) + (Average
Row Length X Expected Monthly Rows X 6) / 1,048,576)
28
Padrões de projeto e planejamento
• A staging area deve ser gerenciada e mantida como
qualquer outro banco de dados no seu ambiente.
• Muitas staging areas são administrada com
desenvolvedores tendo acesso a tudo (criar, deletar e
modificar tabelas)
• Naturalmente essa área deve ser controlada com apenas
o arquiteto de dados tendo acesso a projetar ou modificar
as tabelas.
• Desenvolvedores são bem criativos: se você constrói uma
tabela, é esperado que ela seja utilizada por outra pessoa
para finalidades que você nunca imaginou!
29
Padrões de projeto e planejamento
• Análise de impacto
– Examina os metadados associados às tabelas para
determinar o que será afetado por alguma mudança
na estrutura ou conteúdo.
– Responsabilidade onerosa já que mudanças nos
dados podem ser contínuas.
– Apenas o processo ETL sabe exatamente quais
elementos estão conectados.
– Comunicação entre o time de ETL e o time de banco
de dados é crucial para assegurar uma apropriada
análise de impacto das mudanças.
30
Padrões de projeto e planejamento
• Captura dos Metadados
– Linhagem dos dados: conjunto de transformações aplicados nos
dados entre a fonte dos dados e o Data Storage.
– Definições de negócio: toda tabela criada na staging area vem de
definições de negócio que são capturadas na camada de
apresentação.
– Definições técnicas: descreve os atributos físicos dos dados
(estrutura, formato e localização) propriamente documentados
para minimizar ambiguidade e assegurar reusabilidade.
– Metadados dos processos: o time de ETL deve saber exatamente
quantos registros foram carregados em cada etapa com sucesso.
31
Padrões de projeto e planejamento
• Convenção de
nomenclatura
– As tabelas de dados devem ser
padronizadas com uma
nomenclatura definida pelo
arquiteto.
– Uma boa prática é aplicar o
mesmo padrão de nomenclatura
dos bancos de dados para as
tabelas da staging area.
– Não esqueçam de
DOCUMENTAR!!
32
Aspectos para ter em mente
• Gerenciabilidade
• Mantenabilidade
• Transparência
• Escalabilidade
• Flexibilidade
• Complexidade
• Possibilidade de realizar auditoria
• Testabilidade
• Tolerância a falhas
33
WEB CRAWLING & SCRAPING
34
Web Crawling e Scraping
35
Web Scraping
• Prática de coletar dados da Web que não seja
por API ou intermédio humano (Browser)
• O QUE É WEB SCRAPING?
– Scripts automatizados
– Solicitar páginas HTML
– Fazer o parsing e análise do arquivo
– Minerar informações e metadados da URL
– Gerar bases de dados
– Abrir portas para Machine Learning, Sales, Marketing,
Hacking, Big Data e etc..
36
Por quê usar WEB SCRAPING?
• Navegadores são muito bons! (Mas não
são a única opção)
• Coletar e processar grande quantidade de
dados
• Ir onde nenhum buscador jamais foi…
• Banco de dados estendido, de uma até 1
zilhão de páginas
37
QUANDO USAR?
• Quando você está coletando dados de
vários sites
• Quando o site não tem uma API coesa
• Quando você precisa de um conjunto de
dados não disponíveis na API
• A origem não tem infraestrutura ou
conhecimento técnico para criar uma API
• Quando a API tem limite de
velocidade/requisição.
38
QUANDO USAR?
• Buscadores
• Indexação e Ranking de conteúdo (SEO)
• Mineração de dados
• Encontrar oportunidades comerciais,
reclamações, contatos, pessoas, sales,
identificação de leads e etc
39
Scrapy
• Framework livre escrito em Python
• Scraping e web crawling
– Usado para extrair dados estruturados de
páginas web.
• Instalação
–sudo pip install scrapy
–scrapy startproject <nome_do_projeto>
–cd <nome_do_projeto>
–spark crawl <nome_do_projeto>
40
Hands on
• Instalação
–sudo apt-get install python-pip
–sudo pip install --upgrade pip
–sudo pip install scrapy
• Download do projeto: http://bit.ly/2gy3nkj
• Descompacte o arquivo do projeto
• Entre na pasta do projeto: cd farmacia
• Execute o projeto: scrapy crawl farmacia
41
Data Stream
42
Definições
Tuplas são compostas por estruturas chave/valor:
Chave possui o timestamp da tupla.
Em ambientes de Stream:
As fontes geradoras são implementadas por estruturas como por exemplo
Spouts no Storm.
43
Definições
Tuplas podem ser:
Estruturadas ou não estruturadas:
.... ....
Tupla
44
Dado no stream source
Tipicamente imprevisível.
45
A entrada é variável e tipicamente imprevisível
46
Operadores
47
Operadores
Recebem tuplas.
Processam/modificam as tuplas.
Geram novas tuplas.
48
Definições dos operadores
Operadores
Stateless Stateful
(map, filter)
Blocking Non-Blocking
(join, freq. item set) (count, sum)
49
Definições dos operadores
Stateless (Sem Estado):
Precisam apenas da tupla da entrada para geração da tupla de
saída.
Exemplos: map/filter.
Statefull (Com Estado):
Blocking (Bloqueante):
50
Tipos de operadores
Filtragem (filter)
Sem estado (Stateless).
Agregação (aggregate)
Não Bloqueante (Statefull).
Junção (join)
Bloqueante (Statefull).
Divisão (split)
Sem estado (Stateless).
51
Definição de janela
Tupla Tupla Tupla Tupla Tupla Tupla Tupla TuplaTupla Tupla Tupla Tupla Tupla
Início Fim
52
Definição de Avanço
Início Antigo Fim Antigo
avanço
Tupla Tupla Tupla Tupla Tupla Tupla Tupla
53
Modelo de
Programação
54
NiagaraCQ
Granules
Cougar
TelegraphCQ
S4
STREAM
Storm
Aurora/Medusa
BusinessEvents
Samza
StreamBase
Spark Streaming
Borealis
Oracle CEP
MillWheel
InfoSphere
TimeStream
Streams
Flink Streaming
Stream Mill
55
Gerações segundo a maioria dos autores
Centralizado Massivamente
Distribuído
Paralelo
Heinze (2014)
56
Batch Vs. Stream Batch
Stream
Hadoop Storm
57
Plataformas
Storm
58
Conceitos (Storm)
59
Conceitos (Storm)
Principais componentes formadores de um grafo:
Spout:
Fonte geradora do Streaming (Tuplas).
Bolt:
Unidades de processamento/transformação dos dados (Tuplas).
Sink:
Similar ao bolt porém não gera dados de saída.
Usado para exportação de dados do ambiente de SPS.
60
Topologia
61
Arquitetura do Storm
Message Queue
(opicional)
62
Exploração do
Paralelismo
63
Paralelismo Estático
2
3
4
1
64
Plataformas
Apache Kafka
65
Plataforma Apache Kafka
• Modelo Publish & Subscribe
– Leitura e escrita de fluxo de dados como um sistema
de troca de mensagens
• Processamento
– Escrita de aplicações de streams escaláveis que
processam eventos em tempo real
• Armazenamento
– Armazena o fluxo de dados de forma segura em um
ambiente distribuído, replicado e tolerante à falhas.
66
Plataforma Apache Kafka
67
Plataforma Apache Kafka
68
Plataforma Apache Kafka
69
Plataforma Apache Kafka
70
Plataforma Apache Kafka
71
Plataforma Apache Kafka
72
Hands-on com Apache Kafka
• Entrar dentro da pasta do Kafka
• No terminal, inicie o Zookeeper
– bin/zookeeper-server-start.sh
config/zookeeper.properties
• Em outro terminal, inicie o servidor do Kafka
– bin/kafka-server-start.sh config/server.properties
• Em outro terminal, crie um tópico do Kafka
– bin/kafka-topics.sh --create --zookeeper
localhost:2181 --replication-factor 1 --partitions 1 --
topic test
73
Hands-on com Apache Kafka
• Em outro terminal, envie algumas mensagens
– bin/kafka-console-producer.sh --broker-list
192.168.1.63:9092 --topic test
• Abra um novo terminal para receber as
mensagens
– bin/kafka-console-consumer.sh --bootstrap-server
192.168.1.63:9092 --topic test --from-beginning
74
Plataformas
Spark Streaming
75
Processamento de fluxo de dados discreto
Roda um stream como uma sequência de jobs
determinísticos batchs muito pequenos
live data stream
Spark
Corta o live stream em batches de X Streaming
segundos
Resilient Distributed Dataset (RDD): é uma estrutura onde os dados estão em memória e
podem ser recuperados sem a necessidade de replicação.
76
Processamento de fluxo de dados discreto
Roda um streaming como uma sequência de jobs
determinísticos batchs muito pequenos
live data stream
Spark
O tamanho do batch é tão pequeno como ½ Streaming
segundo, latência ~ 1 segundo
batches of X
seconds
Potencial para combinar processamento em
batch e streaming no mesmo sistema
Spark
processed
results
77
Arquitetura do Spark
78
Mecanismo de Tolerância a Falhas
RDDs sabem a seqüência de tweets Entrada de
operações que o criou de uma entrada RDD dados
de dados original tolerante a falhas replicada em
memória
79
Hands-on com Spark + Kafka
• Análise de Sentimento do Twitter
• Façam o download: http://bit.ly/2gyHQYx
80
Plataformas
Flink
81
Arquitetura Lambda
A arquitetura Lambda [Marz, 2013], seria mais
adequada para descrever os atuais sistemas de Big
Data [Kir15],[Cae16] .
82
4ª Geração de processamento de dados
83
Plataforma Apache Flink
84
Plataforma Apache Flink
85
Arquitetura do Apache Flink
86
Transformações Apache Flink
• E outras
87
Plataformas
Apache Flume
88
Plataforma Apache Flume
• Distribuído
• Confiável
• Robusto e tolerante a falhas
• Serviço para coleta, agregação e
movimentação de grande volume de dados
• Arquitetura simples e flexível baseado no
fluxo de dados baseado em streaming
• Modelo de dados extensível para aplicações
de análises online
89
Plataforma Apache Flume
• Fontes de dados comuns:
– Logs de aplicações
– Dados de sensores
– Dados geolocalizados
– Redes sociais
90
O que o Apache Flume faz?
Funcionalidade Descrição
91
Plataformas
Apache Sqoop
92
Plataforma Apache Sqoop
• Ferramenta para importação de dados de
bancos de dados relacionais
• Pode ser utilizado também para exportar
dados do Hadoop para bancos de dados
relacionais.
• Trabalha bem com RDBMS com conectividade
JDBC
93
Plataforma Apache Sqoop
• Armazena os dados no HDFS
– Permite mapear os dados de entrada dos bancos
de dados relacionais para o Hbase e Hive
• Utilizado para transferência e importação de
dados de forma paralela
• Ajuda a mitigar a carga excessiva de sistemas
externos.
• Provê interação com os dados de forma
programática.
94
Plataforma Apache Sqoop
• sqoop import --connect jdbc:postgresql://hdp-
master/sqoop_db --username sqoop_user --password
postgres --table cities
• sqoop export --connect jdbc:postgresql://hdp-
master/sqoop_db --username sqoop_user --password
postgres --table cities --export-dir cities
95
Plataformas
Apache Beam
96
Plataforma Apache Beam
• Modelo de programação simples para batch e
streaming.
• Executa pipelines em múltiplos ambientes de
execução.
• Permite escrever e compartilhar novos SDKs,
conectores IO e bibliotecas de transformação.
97
Plataforma Apache Beam
98
A evolução do Apache Beam
99
Comparação entre
Plataformas
100
101
102
Referências
• KIMBALL, Ralph; CASERTA, Joe. The Data Warehouse? ETL
Toolkit: Practical Techniques for Extracting, Cleaning,
Conforming, and Delivering Data. John Wiley & Sons, 2011.
• DOAN, AnHai; HALEVY, Alon; IVES, Zachary. Principles of data
integration. Elsevier, 2012.
• KRISHNAN, Krish. Data warehousing in the age of big data.
Newnes, 2013.
• ROLDÁN, María Carina. Pentaho Data Integration Beginner's
Guide. Packt Publishing Ltd, 2013.
• Big Data ETL:
– https://www.slideshare.net/SparkSummit/spark-summit-keynote-by-suren-
nathan
– https://software.intel.com/sites/default/files/article/402274/etl-big-data-with-
hadoop.pdf
103
Referências
• FRIEDMAN, Ellen; TZOUMAS, Kostas. Introduction to Apache
Flink: Stream Processing for Real Time and Beyond. 2016.
• NARKHEDE, Neha; SHAPIRA, Gwen; PALINO, Todd. Kafka: The
Definitive Guide. 2016.
• JAIN, Ankit; NALYA, Anand. Learning storm. Packt Publishing, 2014.
• KARAU, Holden et al. Learning spark: lightning-fast big data
analysis. " O'Reilly Media, Inc.", 2015.
• DEROOS, Dirk et al. Hadoop for Dummies. John Wiley & Sons,
Incorporated, 2014.
• MITCHELL, Ryan. Web scraping with Python: collecting data from
the modern web. " O'Reilly Media, Inc.", 2015.
104
105