ETL em Big Data

Preview:

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.

Citation preview

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