Uma explanação de como o uso do ETL é útil e fundamental nos projetos de Big Data.
A DataMotion é uma empresa líder em soluções de Integração e Qualidade de Dados, especializada no tratamento e cruzamento de dados para os principais países da América Latina.
2. A Realidade:
Você tem uma pilha enorme de dados para tratar ?
E suas ferramentas tradicionais de tratamento
são insuficientes para dar conta do recado...
Really Big Data
3. Você pode contratar um trator caro e grande
para ajudar no seu trabalho...
Really Big Data
4. … ou então você pode utilizar vários tratores menores e ter
o trabalho pronto de uma maneira rápida, sem gastar muito.
Really Big Data
5. Mas se você investiu em um grande trator, o que vai
acontecer se ele vier a falhar ?
Really Big Data
6. Com tratores menores, em caso de problemas, um de seus
outros tratores poderá continuar o trabalho normalmente.
Really Big Data
12. Tradicionalmente, transformações de dados rodavam em um grande
e único servidor, com múltiplas CPUs, repletas de memória RAM.
E isso era caro !
13. Então o time do CloverETL
desenvolveu um conceito para uma
transformação de dados em cluster.
Assim nasceu o
CloverETL Cluster
Uma poderosa solução de transformação de dados que pode rodar em
máquinas usuais de baixo custo.
14. Agora, uma transformação de dados pode ser executada em
paralelo em qualquer um dos ‘nodes’ disponíveis no
CloverETL Cluster.
15. Cada um dos “nodes” executando um
processo é automaticamente alimentado
com porções distintas dos dados de entrada.
Parte 1
Parte 2
Parte 3
17. Isso parece ser muito bom.
Mas como isso é feito exatamente?
18. CloverETL permite que certos
componentes de tranformação sejam
alocados a múltiplos “nodes”do
cluster.
exec
1x
exec
1x
exec
3x
Alocado para
Alocado para
Alocadopara
Alocadopara
Node 1
Node 2
Node 3
CloverETL Cluster
Esses componentes então rodam em múltiplas instâncias.
Nós chamamos isso
de Allocation.
Alocado para
19. Componentes Especiais
permitem que os dados de
entrada sejam divididos e
encaminhados em paralelo
para múltiplos “nodes” onde
o processamento será
realizado.
Node 1
Node 2
Node 3
Serial data Partitioned data
Node 1
1st instance
2nd instance
3rd instance
20. Outros componentes agrupam
os dados em fluxos paralelos,
direcionando e unificando o
processamento.
Node 1
Node 2
Node 3
Serial dataPartitioned data
Node 1
1st instance
2nd instance
3rd instance
21. A tranformação original é automaticamente
“reescrita” em diversas partes menores, que
serão executadas dentro do cluster.
Cada “node”que será utilizado será gerido
pelo Allocation.
Node 1
Node 2
Node 3
2nd instance
3rd instance
Serial data Serial dataPartitioned data
1st instance
Node 3
22. Vamos dar uma olhada
em detalhes no exemplo a seguir.
23. Neste exemplo, iremos ler dados de endereço de uma
empresa, que totalizam10.499.849 registros.
Consolidado do agrupamento
Nos temos um total de 51 records –
um para cada estado americano
processamento serial
24. Aqui, iremos processar os mesmos dados, agora em paralelo.
Nos temos um total
de 51 registros
novamente.
Split Gather
job em
3 streams
paralelos
O processo dos
dados de entrada são
executados em
paralelo
Resultados parciais
26. Qual é o truque?
Divisão do arquivo de
entrada em blocos paralelos.
Fazer o trabalho pesado em porções
menores - todas rodando em paralelo.
Trazer as porções individuais do
resultado em um conjunto final.
☞
☜
Resultado
28. O Sandbox
Um pouco mais de detalhe
sobre o SANDBOX.
SANDBOX é um nome lógico para uma
estrutura de arquivos gerenciada por um
servidor. Isso permite que projetos individuais
no servidor sejam separados em unidades
distintas. Cada transformação de dados
pode acessar multiplos sandboxes, tanto
local quanto remotamente.
Vamos olhar para um tipo de
Sandbox especial – partitioned
29. Parte 2
Parte 1 Partitioned
sandbox
“SboxP”
Parte 3
Node 1
Node 2
Node 3
SboxP
Em um partitioned Sandbox, o arquivo de entrada é dividido
em sub-arquivos, cada um residindo em diferentes “nodes” do Cluster
Cluster em uma mesma estrutura de diretório.
30. Partitioned
Sandboxes
Um partitioned sandbox é
uma abstração baseada na
estrutura de Cluster do
CloverETL.
A estrutura lógica do Sandbox com uma
visão unificada dos arquivos
A estrutura física do Sandbox com as
alocações dos “nodes”
31. Partitioned Sandbox
Partitioned sandbox define como
o dado é particionado
no CloverETL Cluster
Allocation
Allocation define como o processo de
transformação é distribuido ao longo
do ambiente CloverETL
☜
☞
A alocação pode ser baseada no layout do sandbox.
O processamento ocorre onde o dado reside
Nos costumamos dizer que o cluster que executa
nossos componentes de transformação, também
contêm porções de dados que deseja processar.
☟
32. Armadilhas Paralelas
Quando o processamento é feito em paralelo, alguns pontos importantes
devem ser considerados.
Aggregating, Sorting, Joining…
Trabalhando em paralelo, significa produzindo resultados parciais.
Primeiro nós produzimos 4
resultados parciais. Então
agregamos esse processo transitório
até chegar o resultado final.
➔semi-result1
➔semi-result 2
➔semi-result3
➔semi-result4
record stream1
record stream2
record stream3
record stream4
Esses resultados parciais servirão de
base para a criação do resultado final
do processamento.
➔resultado finalsemi-result1,2,3,4 ➔
Uma notícia boa: Quando aumentamos a
quantidade de processos em paralelo, nós não
alteramos a tranformação em si.
33. Armadilhas Paralelas
Transformação Completa – aggregation & post-processing
sum()
here
count()
here
Explicando !
Exemplo: contagem de ocorrência de empresas por estado
utilizando a função count().
No passo 1, nós produzimos resultados parciais. Em função
dos registros serem particionados, os dados referentes aos
estados irão aparecer em múltiplas instâncias,
Por exemplo, nós poderíamos ter os dados de NY distribuidos
em 4 processos parciais, em 4 streams distintas.
No passo 2, poderíamos combinar os 4
processos do passo 1 em uma única sequência
e então agregar novamente os resultados finais.
Nesta etapa de agregação dos dados
poderíamos por exemplo, utilizar a função sum()
Passo 1
Aggregating, Sorting, Joining…
Passo 2
34. Ordenação (sort) em paralelo
merge
here
sort
here
Explicando !
Sorting em paralelo ➔ registros são sorteados
em streams parelelos individuais, respeitando-se a
prioridade de cada conteúdo
O processo de sort é reunido em um único
stream ➔ registros são combinados
respeitando-se as mesmas chaves da etapa 1
1 2
Aggregating, Sorting, Joining… Armadilhas Paralelas
35. Explicando !
Consolidação em paralelo ➔ registros master
& slave(s) devem ser particionados por uma
mesma chave. Esse mesmo conteúdo será
utilizado em momentos futuros.
Aggregating, Sorting, Joining…
Consolidação em paralelo
Armadilhas Paralelas
36. Resumindo…
Optar pelo processamento paralelo é fácil!
Consulte-nos.
☞ Os problemas de BIG DATA podem ser resolvidos utilizando-se Clusters
☞ Transformações tradicionais podem ser facilmente convertidas
☞ Não existe máquina, pois os usuários tem controle completo de tudo
☞ CloverETL possui recursos de controle de falhar e load balancing
37. Para saber mais, consulte:
www.cloveretl.com.br
forum.cloveretl.com
blog.cloveretl.com
www.datamotion.com.br