top of page
pedrobusko

Por que Kafka é o novo data lake?

Este é um artigo traduzido originalmente publicado no blog do Yingjun Wu, Fundador e CEO da RisingWave Labs: "Why Kafka Is the New Data Lake?". Muitos engenheiros de dados usam o Kafka para armazenar dados ingeridos recentemente, antes de transferi-los para data lakes. No entanto, há cada vez mais evidências que sugerem que Kafka está evoluindo para uma nova forma de data lake. Junte-se a nós para explorar por que essa evolução está ocorrendo.

A mudança na gestão de dados para data lakes é realmente transformadora. Os data lakes são fundamentais no gerenciamento de grandes quantidades de dados brutos, não estruturados e semiestruturados. Sua capacidade de armazenar dados históricos como uma única fonte de verdade é crucial para que as organizações mantenham a consistência, a integridade e a confiabilidade dos dados em diferentes departamentos e equipes.

Ao integrar um mecanismo de computação como Apache Spark , Trino ou ClickHouse , um data lake pode ser transformado em um 'data lakehouse'. Isso não apenas ajuda a armazenar grandes quantidades de dados, mas também a processá-los com eficiência.

As organizações modernas normalmente usam Kafka para armazenar dados recentes e usam data lakes para persistir dados históricos.
As organizações modernas normalmente usam Kafka para armazenar dados recentes e usam data lakes para persistir dados históricos.

Apache Kafka , uma plataforma de streaming de eventos amplamente utilizada, entrou na pilha de tecnologia de inúmeras corporações orientadas por dados. Kafka há muito é visto como um “repositório de dados recentes” na pilha de dados moderna. Muitos engenheiros de dados usam o Kafka para armazenar dados ingeridos recentemente, geralmente por um período de 7 dias a um mês, antes de transferir esses dados para data lakes.

As pessoas têm a impressão de que “as plataformas de streaming de eventos são para dados transitórios e os data lakes são para dados históricos”. No entanto, há cada vez mais evidências que sugerem que Kafka está evoluindo para uma nova forma de data lake.

Este artigo explicará por que essa evolução está ocorrendo.


O que é Data Lake?

Um data lake é um repositório centralizado que permite armazenar todos os seus dados estruturados e não estruturados em qualquer escala. Ao contrário de um data warehouse, que armazena dados de maneira estruturada e organizada, um data lake retém os dados em seu formato nativo bruto, normalmente com uma arquitetura plana.

Existem três estruturas populares de gerenciamento de data lake, nomeadamente Apache Iceberg , Apache Hudi e Delta Lake . Embora cada um desses sistemas tenha características e vantagens exclusivas, todos os três são amplamente adotados para armazenar e gerenciar dados históricos em grande escala. Seu design e funcionalidades facilitam o gerenciamento de grandes quantidades de dados, e seus recursos de integração com mecanismos de computação populares como o Apache Spark os tornam adequados para vários aplicativos de big data e casos de uso de análise.


Kafka tem todas as propriedades do Data Lake

Kafka é inerentemente adequado para ser um data lake. Antes de debater se Kafka é a nova forma de data lake, vamos primeiro examinar se Kafka possui todas as propriedades necessárias para se tornar um data lake.


Kafka realmente possui todas as propriedades essenciais.


  • Propriedades ACID semelhantes a bancos de dados. Conforme destacado na palestra de Martin Kleppmann no Kafka Summit San Francisco 2018 “ Is Kafka a Database?” , Kafka evoluiu para incluir todas as propriedades semelhantes a bancos de dados, especificamente atomicidade, consistência, isolamento e durabilidade (ACID). Embora muitas pessoas usem o Kafka para armazenar apenas dados recentes, o Kafka, na verdade, tem retenção infinita, semelhante aos data lakes modernos. Esse recurso torna o Kafka uma opção atraente para armazenar grandes quantidades de dados.

  • Armazenamento em camadas econômico. Um dos principais motivos pelos quais as pessoas hesitam em usar o Kafka para armazenar dados de longa duração é a percepção de que o Kafka é caro. Isso costumava ser verdade. O design clássico do Kafka exigia o armazenamento de dados em instâncias de computação (como AWS EC2), que pode ser muito mais caro do que o armazenamento de objetos como AWS S3. No entanto, isso mudou. A versão mais recente do Kafka construída pela Confluent , junto com outras plataformas populares de streaming de eventos como Redpanda e Apache Pulsar , adotou armazenamento em camadas, que armazena dados frios em um armazenamento de objetos barato, reduzindo assim custos e tornando viável a persistência de dados de longo prazo. . Este novo design torna o Kafka adequado para armazenar grandes quantidades de dados a baixo custo, sem se preocupar com escalabilidade.

  • Armazenamento de dados de diferentes tipos. Kafka pode lidar com uma ampla variedade de tipos de dados, desde dados estruturados, como dados relacionais, até dados semiestruturados, como JSON e Avro, e até dados não estruturados, como documentos de texto, imagens e vídeos (embora incomuns). Essa versatilidade é crucial no cenário diversificado de dados atual e permite que o Kafka sirva como um repositório centralizado para todos os dados de uma organização, reduzindo a complexidade e a sobrecarga do gerenciamento de múltiplas soluções de armazenamento.

  • Armazenamento de dados em tempo real. Embora muitas pessoas utilizem data lakes para armazenar dados históricos, os data lakes modernos estão evoluindo e se tornando cada vez mais em tempo real. Esta evolução é natural, pois aplicações e dispositivos modernos podem gerar enormes quantidades de dados continuamente. Conseqüentemente, os data lakes estão implementando otimizações para permitir a ingestão de dados em tempo real. Como plataforma de streaming de eventos, o Kafka oferece suporte inerente à ingestão de dados em tempo real. Sua arquitetura é adequada para armazenar dados em tempo real de movimentação rápida e dados históricos de movimentação lenta.

Kafka é adequado para ser o novo Data Lake?

Kafka possui todas as propriedades do data lake. Mas se Kafka tem potencial para servir como o novo data lake em produção? Várias razões convincentes apoiam esta perspectiva.


  • É a fonte de dados. Muitas organizações ingerem dados diretamente no Kafka antes de transferi-los posteriormente para data warehouses ou outros sistemas de armazenamento. Se Kafka for empregado como o data lake que retém dados permanentemente, ele nega a necessidade de realocar dados entre diferentes sistemas. A eliminação da movimentação de dados não apenas reduz custos, mas também minimiza o potencial de inconsistência e perda de dados.

  • Fonte Única da Verdade. Aproveitar o Kafka como data lake significa que ele pode servir como a verdadeira fonte única de verdade para toda a organização. A inconsistência de dados ocorre porque as pessoas transformam os dados. Mas se usarmos a fonte de dados como destino dos dados, não encontraremos nenhum problema de inconsistência de dados. Além disso, esta abordagem simplifica significativamente a arquitectura de dados, reduzindo o número de sistemas que precisam de ser mantidos, sincronizados e integrados, tornando assim a infra-estrutura mais gerível, menos propensa a erros e mais económica.

  • Rico ecossistema. Kafka possui um ecossistema muito rico e robusto para a ingestão de dados de várias fontes de dados, e a maioria dos mecanismos de computação pode consumir prontamente dados do Kafka. Esta flexibilidade facilita muito a integração do Kafka em sistemas e fluxos de trabalho existentes, reduzindo assim o esforço e a complexidade necessários para adotar o Kafka como um data lake. Além disso, os recursos do Kafka vão além da ingestão e armazenamento de dados. Ele também oferece recursos nativos de processamento de fluxo leve (por meio de Kafka Streams ), o que significa que os dados podem ser processados ​​em tempo real à medida que são ingeridos. Esta é uma vantagem significativa para organizações que necessitam de análises em tempo real e capacidades de tomada de decisão.

O Kafka substituirá as estruturas de gerenciamento de data lake existentes?

A resposta direta é não, pelo menos não no futuro imediato. Apesar da capacidade do Kafka de armazenar dados históricos e em tempo real, isso não significa que ele substituirá estruturas de gerenciamento de data lake amplamente utilizadas, como Apache Iceberg, Apache Hudi e Delta Lake.

Essas estruturas de gerenciamento de data lake são otimizadas para armazenamento de dados em grande escala, mantendo as propriedades ACID. Funcionalmente, o Kafka ainda não incorporou recursos cruciais, como reconhecimento de tipo de dados para compactação, suporte para pushdown de consulta e suporte para atualizações e inserções, tornando-o menos atraente no fornecimento de dados históricos.

Uma possível arquitetura a ser adotada em um futuro próximo é utilizar o Kafka como uma interface unificada para leitura e gravação e armazenar dados quentes e quentes no Kafka. Em seguida, os dados frios podem ser transferidos progressivamente de Kafka para Iceberg/Hudi/Delta, de forma transparente e sem o conhecimento do usuário. Essa abordagem aproveita os pontos fortes do Kafka e dos data lakes existentes. Os usuários podem continuar a ler e gravar dados invocando diretamente a API Kafka, alheios à estrutura subjacente e ao formato dos dados. Isto significa que as complexidades dos mecanismos subjacentes de transformação e armazenamento de dados são abstraídas dos utilizadores finais, simplificando a sua interação com o sistema.

Construindo um Streaming Data Lakehouse com Kafka

Um data lakehouse é uma plataforma de dados poderosa que combina os melhores recursos de data lakes e data warehouses. Ele fornece uma plataforma unificada que pode lidar com grandes quantidades de dados estruturados e não estruturados e oferecer suporte a análises avançadas e aprendizado de máquina. Com a evolução do Kafka para um novo data lake, podemos essencialmente construir um “streaming data lakehouse” que pode armazenar e processar dados históricos e em tempo real. Existem pelo menos dois componentes principais necessários para construir um data lakehouse de streaming em cima do Kafka:


  • Sistema de processamento de fluxo. O primeiro componente essencial é um sistema de processamento de fluxo, como RisingWave , Apache Flink ou KsqlDB . Esses sistemas são projetados para processar fluxos de dados em tempo real armazenados no Kafka, permitindo que as empresas tomem decisões mais rápidas e informadas, analisando os dados à medida que são gerados.

  • Mecanismo analítico em tempo real. O segundo componente crucial é um mecanismo analítico em tempo real, como Apache Spark, Trino ou ClickHouse. Esses mecanismos são projetados para analisar os dados processados, fornecer insights e facilitar a tomada de decisões. Eles são capazes de lidar com grandes volumes de dados com baixa latência, tornando-os ideais para uma arquitetura de data lakehouse de streaming construída em Kafka.


Com Kafka como o novo data lake, é possível construir um data lakehouse de streaming com sistemas de processamento de stream e sistemas analíticos em tempo real.
Com Kafka como o novo data lake, é possível construir um data lakehouse de streaming com sistemas de processamento de stream e sistemas analíticos em tempo real.

Ao combinar o Kafka com um sistema robusto de processamento de fluxo e um poderoso mecanismo analítico em tempo real, as empresas podem criar uma arquitetura de data lakehouse de streaming que é capaz de lidar com as demandas do processamento e análise de dados modernos. Esta arquitetura permite que as organizações maximizem o valor dos seus dados, fornecendo insights em tempo real que podem impulsionar uma melhor tomada de decisões e criar uma vantagem competitiva.


Lista de desejos para Kafka

Embora o Kafka seja incrivelmente poderoso e versátil, há áreas que podem ser melhoradas se o Kafka realmente evoluir para um data lake. Aqui estão alguns itens da minha lista de desejos para Kafka.


  • Reconhecimento de tipo de dados para compactação. Atualmente, Kafka trata os dados como uma matriz de bytes e não tem conhecimento da estrutura e do tipo real dos dados. Essa falta de conhecimento significa que a compactação que o Kafka realiza é genérica e não tão eficiente quanto poderia ser se entendesse a estrutura dos dados. Se o Kafka pudesse estar ciente dos tipos de dados que está manipulando, ele poderia realizar a compactação de dados de maneira mais eficaz. Esta melhoria reduziria os requisitos de armazenamento e otimizaria o desempenho das consultas analíticas, minimizando a quantidade de dados que precisam ser transferidos e processados.

  • Suporte para pushdown de consulta. O pushdown de consulta é uma técnica que envolve enviar partes de uma consulta (como filtros) para a camada de armazenamento, permitindo recuperação e processamento de dados mais eficientes. Atualmente, o Kafka não suporta pushdown de consulta, o que significa que todos os dados precisam ser carregados na memória e processados, mesmo que apenas um pequeno subconjunto seja necessário. Se o Kafka pudesse oferecer suporte ao pushdown de consulta, melhoraria o desempenho das consultas analíticas, reduzindo a quantidade de dados que precisam ser carregados na memória e processados.

  • Suporte para atualização e exclusão. Atualmente, o Kafka foi projetado como um log somente anexado e, embora existam soluções alternativas para lidar com atualizações e exclusões, elas não são tão diretas e eficientes como nos bancos de dados tradicionais. Se Kafka pudesse oferecer suporte nativo a operações de atualização e exclusão, tornaria a manutenção de dados mais fácil e eficiente. Também tornaria o Kafka uma solução de armazenamento de dados mais completa e versátil, aumentando sua adequação como data lake. Esta adição seria um divisor de águas para muitas organizações, simplificando suas arquiteturas de dados e reduzindo a sobrecarga associada à manutenção de dados.

CONCLUSÃO


Adotar o Kafka como o novo data lake representa uma mudança fundamental no gerenciamento e análise de dados. Seus recursos avançados, combinados com a adição de um sistema de processamento de fluxo e um mecanismo analítico em tempo real, tornam-no uma base sólida para a construção de uma arquitetura de casa no lake. Além disso, a sua adequação à persistência de dados, a capacidade de servir como uma fonte única de verdade e o rico ecossistema solidificam ainda mais a sua posição como uma opção viável de data lake. Vamos ver como o Kafka e outras plataformas de streaming de eventos evoluirão no futuro próximo.


1.099 visualizações0 comentário

Pedro Busko's blog

©2022 by Pedro Busko's blog. Proudly created with Wix.com

bottom of page