etl em big data
DESCRIPTION
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.TRANSCRIPT
BIGHANDLING LARGE DATAArquitetura Clusterizada
ETL em Big Data
A Realidade:Você tem uma pilha enorme de dados para tratar ?
E suas ferramentas tradicionais de tratamentosão insuficientes para dar conta do recado...
Really B
ig Data
Você pode contratar um trator caro e grande para ajudar no seu trabalho...
Really B
ig Data
… ou então você pode utilizar vários tratores menores e tero trabalho pronto de uma maneira rápida, sem gastar muito.
Really B
ig Data
Mas se você investiu em um grande trator, o que vaiacontecer se ele vier a falhar ?
Really B
ig Data
Com tratores menores, em caso de problemas, um de seusoutros tratores poderá continuar o trabalho normalmente.
Really B
ig Data
Qual das opções você vai escolher ?
vs
CloverETL Capacidade de Resistência em ClusterOtimizado para robustez...
Falha no Processo Hardware & Software
fail-over automático
Antes Depois
Node 2 Node 1 Node 2Node 1
load balancing automático
Load Balancing
Nova
tare
fa
Antes Depois
Node 2
Node 1 Node 1
Node 2
CloverETL Cluster - BIG DATA
Otimizado para ser rápido...
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 !
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.
Agora, uma transformação de dados pode ser executada em paralelo em qualquer um dos ‘nodes’ disponíveis no
CloverETL Cluster.
Cada um dos “nodes” executando um processo é automaticamente alimentado
com porções distintas dos dados de entrada.
Parte 1
Parte 2
Parte 3
Parte
1
Parte
2
Parte
3
Agora
Antes
=
=
Trabalhando em paralelo, o processo todo é executado com maior rapidez, consumindo menos recursos.
Isso parece ser muito bom.Mas como isso é feito exatamente?
CloverETL permite que certos componentes de tranformação sejam alocados a múltiplos “nodes”do cluster.
exec1x
exec1x
exec3x
Alocado para
Alocado para
Alocado para
Alocado paraNode 1
Node 2
Node 3
CloverETL Cluster
Esses componentes então rodam em múltiplas instâncias.
Nós chamamos isso de Allocation.
Alocad
o para
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 11st instance
2nd instance
3rd instance
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
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 data1st instance
Node 3
Vamos dar uma olhadaem detalhes no exemplo a seguir.
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
Aqui, iremos processar os mesmos dados, agora em paralelo.
Nos temos um totalde 51 registros
novamente.
Split Gather
job em3 streamsparalelos
O processo dos dados de entrada são
executados em paralelo
Resultados parciais
Resumo da execução em paralelo.
☟
drag&drop drag&
drop
serial
paralelo
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
Vamos continuar.Mais detalhes sobre os sandboxes
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
Parte 2
Parte 1 Partitionedsandbox“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.
Partitioned Sandboxes
Um partitioned sandbox é uma abstração baseada na estrutura de Cluster do CloverETL.
A estrutura lógica do Sandbox com umavisão unificada dos arquivos
A estrutura física do Sandbox com as alocações dos “nodes”
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.
☟
Armadilhas ParalelasQuando 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 stream1record stream2record stream3record 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.
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
Ordenação (sort) em paralelo
mergehere
sorthere
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
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
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
Para saber mais, consulte:
www.cloveretl.com.brforum.cloveretl.comblog.cloveretl.com
www.datamotion.com.br