Muitas empresas estão usando a arquitetura de Data Lake (lago de dados) porque ferramentas tradicionais de armazenamento e análise de dados muitas vezes não fornecem a agilidade e a flexibilidade para gerar os insights de negócio que a organização precisa através de um volume de dados que nunca para de crescer.
Um Data Lake é uma abordagem de arquitetura que permite armazenar grandes quantidades de dados em um local central para que esteja disponível para ser categorizado, processado, analisado e consumido por diversos grupos dentro de sua organização.
É uma plataforma de armazenamento baseada em nuvem, segura e durável que permite você inserir e armazenar tanto dados estruturados quanto não estruturados.
Como os dados podem ser armazenados em seu formato original, você não precisa convertê-los em um esquema predefinido e também não precisa necessariamente saber de antemão quais perguntas (consultas) vai fazer sobre seus dados.
Você pode usar um portfólio completo de ferramentas de exploração de dados, relatórios, análises, machine learning (aprendizado de máquina) e visualização nos dados (dataviz).
Disclaimer: Há anos trabalho no ambiente da Amazon Web Services, por isso os serviços que utilizarei como exemplo aqui serão todos da AWS, ainda assim é possível abstrair os mesmos conceitos para os ambientes em nuvem da Azure ou da Google Cloud, por exemplo.
Características de um Data Lake
- Centralizar todos os dados da organização num único local.
- Aceita dados estruturados, semi-estruturados e não-estruturados.
- Alta performance em escrita (ingestão) e em acesso (consumption).
- Baixo custo de armazenamento.
- Suporta regras de segurança e proteção de dados.
- Desacopla o armazenamento do processamento (permitindo alta performance e alta escala).
Como saber se eu Preciso de um Data Lake?
Data Lakes são úteis quando você precisa manipular um grande volume de dados (Big Data).
Pense num volume grande o suficiente que não pode ser processado num único servidor num tempo aceitável, e que não poderia ser executado num SBDG convencional, por isso, precisa de processamento paralelo e de compactação de dados.
Geralmente, usa-se de Data Lakes para um volume de petabytes ou exabytes de dados.
Se você tem poucas fontes (origens) de dados, pouco volume de dados, formatos padronizados de dados, e tudo pode ser facilmente analisado num único banco de dados relacional, muito provavelmente, criar um Data Lake seria uma abordagem exagerada que trataria uma complexidade desnecessária para o seu caso de uso.
O custo de armazenamento de Data Lakes é geral mente bem menor do que de um Data Warehouse, chegando a ser de 20x a 50x mais barato armazenar, gerenciar e analisar dados em comparação com as tecnologias tradicionais de data warehouse.
Se você responder sim para as seguintes perguntas, é bem possível que um Data Lake seja uma abordagem adequada para o seu cenário:
- Preciso tratar streaming de dados (IoT, Click Streams, etc.)?
- Meus dados tem diferentes fontes de origem?
- Os formatos desses dados são variados?
- O volume de dados é muito grande (petabytes, exabytes)?
Como funciona um Data Lake?
A AWS oferece uma série de serviços e tecnologias que vão permitir que você faça upload de volumes muito grandes de dados nos seus mais diferentes formatos como CSV, JSON e Parquet em Buckets do S3, e depois catalogue esses dados com o AWS Glue para finalmente usando o Athena fazer consultas nesses dados que estão armazenados em seu formato original quase como se estivesse fazendo consultas em um banco de dados relacional através com SQL.
É possível criar soluções de Data Lake de maneira econômica usando o Amazon S3 e AWS Glue para fazer o seguinte:
- Ingerir e armazenar dados de uma ampla variedade de fontes em uma plataforma centralizada.
- Armazenar, pagando apenas pelo que você usar.
- Criar um catálogo de dados para localizar e usar os dados armazenados no Data Lake.
- Proteger os dados armazenados no Data Lake.
- Usar ferramentas e políticas para monitorar, analisar e otimizar a infraestrutura e os dados.
- Transformar dados brutos em formatos otimizados (ex: parquet).
- Consultar dados.
- Usar ferramentas de análise de dados, ciência de dados, machine learning e visualização de dados (dataviz).
- Integrar rapidamente as ferramentas de processamento de dados.
- Compartilhar dados e resultados processados facilmente.
Ingestão de Dados no Data Lake
Um dos principais recursos de uma arquitetura de data lake é a capacidade de ingerir vários tipos de dados de maneira rápida e fácil, isso é, gravar dados de diferentes fontes no seu data lake.
Algumas fontes de dados comuns são, por exemplo:
- dados streams em tempo real (dispositivos, IoT, click streams)
- dados de plataformas on premisses
- dados de sistemas legados
- dados de mainframes
- dados de data warehouses
Algumas ferramentas úteis para ingestão de dados que a AWS oferece são:
Amazon Kinesis Firehose: Um serviço gerenciado para fornecer dados de streaming em tempo real diretamente para o Amazon S3. O Kinesis Firehose é dimensionado automaticamente para atender o volume e taxa de transferência de dados que você precisa. Pode ser configurado para transformar dados, compactar (GZIP, ZIP e SNAPPY.), criptografar e chamar funções do Lambda.
AWS Snowball: São dispositivos físicos usados para migrar grandes quantidades de dados on premisses para a nuvem da AWS. Solicitado pelo Console da AWS, um dispositivo Snowball é enviado para você copiar seus dados com criptografia AES de 256 bits. As chaves de criptografia nunca são enviadas com o dispositivo Snowball, portanto, o processo de transferência de dados é altamente seguro. Você então manda o dispositivo de volta para a AWS. Após o recebimento na AWS, seus dados são transferidos do dispositivo Snowball para um bucket do S3 e armazenados como objetos S3 no formato original.
AWS Storage Gateway: esse serviço pode ser usado para integrar plataformas de processamento de dados on premisses com um Data Lake no S3. É possível criar um compartilhamento de arquivos de rede através de uma conexão NFS. Os arquivos salvos nessa partição (mount) então são convertidos em objetos e armazenados no Amazon S3 em seu formato original, sem nenhuma modificação.
Catalogar Dados no Data Lake
Além de ingerir dados, é necessário organizar e catalogar esses dados para que você e sua equipe saibam exatamente o que está armazenado em seu Data Lake e então consigam encontrar e acessar facilmente as informações quando precisarem delas.
Um catálogo de dados fornece uma interface de consulta de todos os recursos armazenados nos seu Data Lake (buckets do S3).
O catálogo de dados foi projetado para fornecer uma única fonte de verdade sobre o conteúdo do Data Lake.
Há 2 tipos principais de catálogo de dados:
- Abrangente (Comprehensive Data Catalog): contém informações sobre todos os ativos que foram ingeridos no Data Lake
- HCatalog (Hive Metastore Catalog): contém informações sobre ativos de dados que foram transformados e definições de tabela que são utilizáveis por ferramentas como o Athena, o Redshift, Spectrum e EMR.
Esses 2 tipos de catálogos não são mutuamente exclusivos. O abrangente pode ser usado para pesquisar todos os ativos no Data Lake, e o HCatalog pode ser usado para descobrir e consultar esses dados.
O Catálogo Abrangente pode ser criado usando serviços como AWS Lambda, DynamoDB, ou Elasticsearch Service, por exemplo.
Por exemplo, triggers do Lambda podem ser usados para preencher tabelas do DynamoDB com nomes de objetos e metadados dos arquivos armazenados no S3, e em seguida, o Amazon ES pode ser usado para pesquisar recursos específicos, metadados relacionados e classificações de dados.
Já para construir o seu HCatalog, recomendo utilizar o AWS Glue, que já é compatível com Hive e uma série de outras ferramentas que podem ser usadas posteriormente para explorar esses dados.
Você basicamente precisa registrar suas fontes de dados no AWS Glue através do seu console da AWS ou via API.
O Glue já é capaz de entender muitos formatos de fonte de dados como JSON, CSV, Parquet, AVRO, XML, e Ion.
Consultando dados no Data Lake
Os dados catalogados no Glue podem ser acessados pelo Athena, pelo Redshift, pelo Spectrum e pelo EMR, assim como qualquer ferramenta que entenda o padrão de catálogo de dados Hive Metastore.
Um dos recursos mais importantes de um Data Lake é a capacidade de fazer In-Place Querying, isso é poder consultar de dados sem precisar provisionar e gerenciar clusters de servidores. Em outras palavras você pode executar consultas analíticas sofisticadas diretamente no dados que estão no S3.
Athena: Você pode consultar dados do S3 como Athena pagando apenas pelas consultas executas. O Athena é um serviço de consulta que facilita a análise de dados diretamente no Amazon S3 usando SQL padrão. O Athena não tem servidor (é serverless), portanto, não há infraestrutura para configurar ou gerenciar e você paga apenas pelo volume de ativos de dados verificados durante as consultas que você executa. O Athena é dimensionado automaticamente e executando consultas em paralelo para que os resultados sejam muito rápidos, mesmo em consultas complexas com muitos dados. É possíveo acessar o Athena também através de um driver JDBC.
Amazon Redshift Spectrum: Uma segunda maneira de fazer In-Place Querying na AWS é utilizar Redshift Spectrum. O Redshift é um serviço de data warehouse gerenciado que pode ser usado em combinação com o S3 para consultar até exabytes de dados, tudo isso realizado com sintaxa SQL e permitindo que você cruze os dados do seu DataLake no S3 com os dados no Redshift.
QuickSight: QuickSight é um serviço para Visualização dos Dados (DataViz), com ele você pode criar gráficos e Dashboards integrados ao athena que consutlará os dados do seu Data Lake. É possível utilizar outras ferramentas similares como Tableau ou QlikView também.
Além disso você pode também combinar usa série de ferramentas para analisar e transformar seus dados como por exemplo, o Amazon EMR para utilizar clusters Hadoop, o Amazon ML (Machine Learning) para Predctive Analytics, e o Amazon Sage Maker para diversos tipos de algorítimos baseados em IA.
De todas essas o Athena é uma abordagem bastante simples e econômica para analisar grandes quantidades de dados em comparação com um data warehouse ou cluster Hadoop.
No vídeo abaixo, veja o passo-a-passo da criação de um Data Lake Serverless da AWS com o S3, Glue e Athena.
Veja no vídeo abaixo (em inglês) um exemplo de como utilizar o AWS Glue para catalogar dados e posteriormente consultá-los via com o AWS Athena.
Caso queria fazer o exemplo com os dados da YellowTaxi, você pode baixar os arquivos nesse link.
Otimização de Dados
Muito embora você possa armazenar seus dados no seu Data Lake no formato original seja ele qual for, para melhor performance e otimização inclusive dos custos em determinados casos de uso, recomenda-se fazer a transformação dos dados para formatos como Parquet, por exemplo.
O Parquet é um formato que utiliza armazenamento colunar em vez de linear como o CSV. Para se ter uma ideia das vantagens, no Apache Spark, por exemplo, consultas que levam aproximadamente 12 horas para executar lendo de um arquivo CSV podem ser executadas em até 1 hora com Parquet, uma melhoria de 11x no tempo de resposta.
A maneira mais simples de se fazer isso é através de um Job do AWS Glue, mas também é possível executar um cluster Hadoop no EMR que lê os arquivos originais e os transforma combinando soluções como Hive e PySpark.
Segurança do seu Data Lake
É importante desde a concepção do seu Data Lake pensar na segurança das informações. Através do IAM e das configurações de segurança do S3, você precisa certificar-se que apenas os usuários que realmente precisam ter acesso aos dados tem acesso para ver e modificar os arquivos.
Você também precisa pensar no nível ideal de durabilidade dos dados, o S3 permite configurar isso e dependendo de suas escolhas os custos podem ser maiores ou menores.
Por fim, recomendo, pensar na criptografia das informações, você pode armazenar suas chaves no Amazon KMS e então usá-las para criptografar e descriptografar os dados para aumentar o nível de segurança das informações.
Veja no vídeo abaixo como é simples usar o KMS com o S3 para manter os dados criptografados:
Case de Data Lake na Movile
Nada como um case real e brasileiro para entender como um Data Lake pode ajudar uma empresa a atingir seus objetivos de negócio. Nessa apresentação Matheus conta o case da Movile.
Melhores Livros sobre Data Lakes
Palestras sobre Data Lake
No vídeo abaixo, aprofunde-se no entendimento de como o AWS Glue pode te ajudar a catalogar e organizar os dados no seu Data Lake.
Veja ainda o Case de Data Lake da AWS da Fintech americana Robinhood
No vídeo abaixo veja como o AWS Lake Formation pode te ajudar a acelerar a construção do seu Data Lake combinando serviços como Athena, Redshift, e EMR.
Referências
- White Paper da AWS sobre Data Datakes