Data Lake

Falla Guys,

Primeiro artigo de 2020 \o/ agora a porra ficou séria … ano começou definitivamente haha.

Vamos quebrar a sequência dos posts sobre Big Data Clusters (semana que vem voltaremos com mais BDC) e conversar sobre um assunto que toda empresa em processo de transformação digital, ou que pensa em utilizar Big Data, ou trabalhar com Machine Learning (ML) e tem a intenção de ser Data-Driven já pensou a respeito, muitas vezes esse carinha pode ser mal interpretado, causando diversas confusões sobre a real necessidade e formas de implementações. Claaaro, que estamos falando dele, o famoso e todo poderoso Data Lake.

Certamente você já ouviu falar dele (caso ainda não, vai ver hoje rs), neste post, vamos entender o que é um Data Lake e suas formas de implementações.


O que é Data Lake ?

Podemos considerar o Data Lake como uma prática de arquitetura implementada sob uma infraestrutura robusta que tem como objetivo suportar o armazenamento de grandes volumes de dados, centralizando o acesso e disponibilizando os dados para processamento, análise, consumo e distribuição (democratizando) das informações para outros sistemas.

O conceito Data Lake é muito utilizado em ambientes de Big Data que visa capturar dados brutos de várias fontes, centralizando em um local conhecido, para fim de democratização da informação que posteriormente podem ser consumidas em Analytics, como Machine Learning (ML), Business Intelligence (BI), Inteligência Artificial (AI) e analytics em geral..

“Data Lake pode ser resumido como um repositório centralizado com poder de escalabilidade para armazenamento dos dados gerados na empresa. Os dados armazenados no Data Lake podem ser de vários tipos, como, estruturados, semi-estruturados e não estruturados

Portanto, já podemos entender que Data Lake se trata de um conceito e não de uma tecnologia, ou seja, o projeto de Data Lake envolve diversas tecnologias que atende cada camada que podem ser denominadas, por, Ingestão (batch, streaming), processamento (MPP, Memoria), e consumo dos dados. E cada camada, pode ser implementada com uma tecnologia diferente.

Curiosidade:
James Dixon, foi quem supostamente pronunciou o termo Data Lake pela primeira vez, na ocasião, James era Diretor de Tecnologia do Pentaho (Estados Unidos) e o termo Data Lake foi dito para fazer referência a solução de armazenamento e democratização para ambientes de Big Data.

O vídeo abaixo tem um conteúdo muito bacana sobre Data Lake, de uma forma bem simples ele explora os principais conceitos que são utilizados/pensados durante o projeto.

Vale a pena assistir 🙂 Pegue sua pipoca e divirta-se 🙂


O que são as zones do Data Lake ?

Durante o projeto de implementação do Data Lake, diversos aspectos são discutidos e entre eles sempre tocamos no assunto “zones”.
Essas zones são estruturas lógicas que fazem parte do ciclo de vida do dado no mundo analítico, possibilitando a linhagem e governança dos dados dentro do ambiente. Esse conceito está intimamente ligado a “Design by Analytics”.

Pense na sequência lógica:
– O dado é gerado no sistema produto (SQL, Oracle, Mongo, Cassandra, etc);
– Esse dado (bruto) é capturado (batch) e copiado (ingestão) para o Lake;
– Ocorre (processos/rotinas) tratamento no dado (tira máscara, coloca máscara, padroniza, etc);
– Ocorre (processos/rotinas) especializações no dado (somando com outro dado, enriquecendo com outras fontes, etc);

A implementação das zones podem variar de caso para caso, mas basicamente podemos considera-las como “Transient Zone”, “Raw Data”,“Stage”, “Refined Zone”.

Sendo,

  • Zone (Transient): Camada de ingestão dos dados no Lake. Podemos considerar como a porta de entrada, nessa camada podemos incluir o inicio da governança, catalogação de tudo que está entrando no ambiente, sources, tipos, etc.
  • Zone (Raw Data): Camada de armazenamento dos dados brutos. Aqui é onde todos os dados que estão chegando via ingestão (streaming, Batch) vão ser armazenados no primeiro momento. A ideia aqui é trazer o dado no estado original dele, exemplo, se você está capturando dado do MongoDB, traga o json, se está capturando de um outro HDFS, traga o parquet, orc, avro, etc. Sem tratamento, o objetivo é capturar o mais rápido possível (leia sobre ELT).
  • Zone (Stage): A camada de stage ou trusted é utilizada como tratamento e enriquecimento dos dados, aplicando governança, padronizações de data types, mascaras e limpeza de dados.
  • Zone (Refined): A cada Refined ou especializada é onde encontramos o dado já tratado, enriquecido e possivelmente onde as aplicações irão consumir. Essa camada “normalmente” é construída sob infraestrutura com banco de dados relacionais (SQL Server, Oracle, etc), devido a sua característica de consumo, que normalmente é feita via API’s e sistemas transacionais.

Cada projeto pode implementar seu Data Lake de uma forma diferente, isso depende muito da necessidade que muitas vezes está orientado ao negócio (core) da empresa. Por exemplo, já vi alguns casos onde o Lake tinha três camadas de stage e cada uma tinha suas rotinas de padronização de dados, limpeza, etc.

Data Lake Governance Best Practices

Cada uma dessas fases podem ser representada por essas “zonas” que em muitos casos podem ser tecnologias diferentes, como por exemplo:

A camada “Raw Data” pode ser no Apache Hadoop (HDFS) e na “Refined Zone” pode ser um Apache Hive, SQL Server, etc. Tudo depende do tipo de consumo, volume de dados, necessidade de tempestividade entre outras variáveis.
Abaixo um outro exemplo de tecnologias por camada:


Principais Características do Data Lake

São muitas as características, mas podemos definir algumas que são mais padrões e atende a maior parte dos requisitos:

  • Ingestão em alta velocidade com grandes volumes de dados;
  • Possibilidade do armazenamento de diversas estruturas de dados (Estruturados, semi-estruturados e não-estruturados);
  • Centralizar todos os dados da organização em um único local;
  • Democratização dos dados para a empresa;
  • Baixo custo de armazenamento. (Isso não pode ser considerado uma regra);
  • Desacoplamento entre o armazenamento e o processamento. Isso faz muito sentido quando falamos em escalabilidade e performance;
  • Dependendo da arquitetura e tecnologia adotada, possibilita a centralidade do consumo em batch e near-real time, onde todos os consumers podem beber da mesma água;
  • Criação de plataforma completa de produção para aplicações que exigem processamento em pipelines de dados, como Machine Learning (ML), Inteligência Artificia (IA), BI e analytics em geral;

Arquitetura Data Lake

Busquei alguns exemplos de implementações do Lake, observe que cada caso tem uma peculiaridade e diferentes tecnologias, mas no fundo, todos tem o mesmo objetivo: “Construir uma camada de dados escalável para que possa ser consumido em grande escala e de forma segura“.

Exemplo 01: Data Lake construído na Cloud, utilizando Azure:

Observe esse desenho, para cada camada (Ingest, Store, Analyze e Serve) foi utilizado uma tecnologia diferentes, neste caso, plataforma Azure.
Se observarmos a arquitetura conceitual, segue o que conversamos durante o post. Os dados são capturados dos sistemas produtos (data sources) em diferentes formatos para o Lake, onde passa por algumas camadas de tratamento, especialização e no final é liberado para consumo de outras aplicações e Dashboard, essas informações podem ser utilizadas para tomada de decisões que por consequência irá gerar novos dados e alimentar o Lake.. doido isso né? essa é a beleza de uma empresa Data-Driven (vou escrever mais sobre isso também:) )

Exemplo 02: Data Lake utilizando Open Source:

Neste caso, já podemos ver um desenho mais comum para Data Lake. Utilizando Software Open Source e principalmente o Apache Hadoop + Spark. Um desenho de arquitetura muito interessante e que com certeza muitas empresas utilizam, … talvez isso explica um pouco o buuum do Hadoop e Spark no Brasil nos últimos anos.

The proposed Data Lake architecture.

Demais exemplos de arquitetura e links para estudo:


Cases Públicos

Case 01: Extracting Insight and Value from a Lake of Data (Empresa DELL)

Esse caso de estudo é muito interessante pois mostra como eles resolveram um problema de Marketing, passando a analisar muitos volumes de dados. E para isso, foi implementado um Data Lake.
https://www.intel.com/content/dam/www/public/us/en/documents/case-studies/data-lake-analytics-emc-case-study.pdf

Case 02: Data Lake além da buzzword (Empresa MOVILE)

Esse vídeo é bem bacana, pois o Matheus fala com uma visão diferente da necessidade do Lake nas empresas. Como está na “moda” muita gente implementou o Lake, mas no fundo não sabia direito o que fazer com todos os dados depositados lá, não tinha governança e o que era para ser uma solução pode se transformar em um baita problema.
Ele também cita qual foi a estratégia para implementação do Data Lake na Movile, estudos e tecnologias. Muito interessante, vale a pena assistir.


Espero ter acrescentando algum conhecimento na vida de vocês hoje com esse post 🙂
Caso ficou alguma dúvida, é só comentar aqui no blog ou me enviar um e-mail (luizh.rosario@gmail.com) que vamos trocando ideia.

Grande Abraço
vlw flw
Garetti


Se você estiver lendo esse post antes do dia 06/02/2020… tem uma grande oportunidade na mão 🙂
No dia 06, vou participar do Meetup na FCamara falando sobre Data Lake e formas de implementações com o Big Data Clusters.

Segue link para inscrição: http://bit.ly/MeetupDataLake

Nos vemos lá 😉
Grande abraço

Comente sobre isso: