O Iceberg é um formato aberto de tabela para data lake que permite armazenamento em HDFS ou Alibaba Cloud OSS e análise por meio de Spark, Flink, Hive e Presto.
Capacidades principais
O Apache Iceberg surgiu como solução para migrar data warehouses Hive para a nuvem e tornou-se o formato de tabela padrão para serviços de data lake baseados em nuvem. Para obter detalhes, visite o site oficial do Apache Iceberg.
O Iceberg oferece as seguintes capacidades:
Armazenamento de data lake de baixo custo em HDFS ou Object Storage Service (OSS).
Integração nativa com mecanismos de computação open source para ingestão e análise.
Semântica ACID completa.
Alterações de dados no nível de linha.
Reversão para versões históricas.
Filtragem eficiente de dados.
Evolução de schema.
Evolução do layout de partição.
Particionamento oculto.
A tabela a seguir compara três arquiteturas: ClickHouse open source (data warehouse em tempo real), Hive open source (data warehouse offline) e Alibaba Cloud Iceberg (data lake).
|
Critérios de comparação |
Subitem |
Data warehouse em tempo real ClickHouse open source |
Data warehouse offline Hive open source |
Data lake Alibaba Cloud Iceberg |
|
Arquitetura do sistema |
Arquitetura |
Computação e armazenamento acoplados |
Computação e armazenamento desacoplados |
Computação e armazenamento desacoplados |
|
Suporte a múltiplos mecanismos de computação |
Não compatível |
Compatível |
Compatível |
|
|
Armazenamento de dados em object storage |
Não compatível |
Parcialmente compatível |
Compatível |
|
|
Armazenamento de dados em HDFS |
Não compatível |
Compatível |
Compatível |
|
|
Abertura do formato de armazenamento |
Desativado |
Aberto |
Aberto |
|
|
Valor de negócio |
Tempestividade |
Segundos |
Horas/Dias |
Minutos |
|
Flexibilidade de computação |
Baixa |
Alta |
Alta |
|
|
Transacionalidade |
Não compatível |
Incompleto |
Compatível |
|
|
Universalidade da semântica no nível de tabela |
Fraca |
Fraca |
Excelente |
|
|
Alterações de dados no nível de linha |
Não compatível |
Suporte limitado |
Compatível |
|
|
Qualidade dos dados |
Muito alta |
Alta |
Alta |
|
|
Custo de manutenção |
Desempenho de consulta |
Alto |
Alto |
Alto |
|
Custo de armazenamento |
Muito alto |
Médio |
Baixo |
|
|
Self-service |
Não compatível |
Não compatível |
Compatível |
|
|
Elasticidade de recursos |
Regular |
Regular |
Excelente |
Comparação com o Iceberg open source
A tabela a seguir compara o Alibaba Cloud Iceberg com o Iceberg open source quanto a recursos básicos, alterações de dados e mecanismos de computação.
√ indica que o recurso é compatível. x indica que o recurso ainda não é compatível.
|
Categoria |
Item |
Subitem |
Iceberg open source |
Edição Comercial do Iceberg (Alibaba Cloud) |
|
Recursos básicos |
ACID |
N/A |
√ |
√ |
|
Reversão para versões históricas |
N/A |
√ |
√ |
|
|
Integração de source e Sink |
Batch |
√ |
√ |
|
|
Streaming |
√ |
√ |
||
|
Filtragem eficiente de dados |
N/A |
√ |
√ |
|
|
Alterações de dados |
Evolução de schema |
N/A |
√ |
√ |
|
Evolução de partição |
N/A |
√ |
√ |
|
|
Atualizações copy-on-write |
N/A |
√ |
√ |
|
|
Atualizações merge-on-read |
Leitura |
√ |
√ |
|
|
Escrita |
√ |
√ |
||
|
Compactação |
x |
x |
||
|
Mecanismos de computação |
Apache Spark |
Leitura |
√ |
√ |
|
Escrita |
√ |
√ |
||
|
Apache Hive |
Leitura |
√ |
√ |
|
|
Escrita |
√ |
√ |
||
|
Apache Flink |
Leitura |
√ |
√ |
|
|
Escrita |
√ |
√ |
||
|
PrestoDB ou Trino |
Leitura |
√ |
√ |
|
|
Escrita |
√ |
√ |
||
|
Linguagens de programação |
Java |
N/A |
√ |
√ |
|
Python |
N/A |
√ |
√ |
|
|
Recursos avançados |
Integração nativa com Alibaba Cloud OSS |
N/A |
x |
√ |
|
Integração nativa com Alibaba Cloud DLF |
N/A |
x |
√ |
|
|
Aceleração de cache de dados locais |
N/A |
x |
√ |
|
|
Compactação automática de arquivos pequenos |
N/A |
x |
√ |
Esta comparação foi elaborada em setembro de 2021 com base em uma análise do Iceberg open source e da edição comercial do Iceberg disponíveis naquela data. A compatibilidade com recursos pode mudar em futuras atualizações de versão.
Cenários
O Iceberg é um componente central em soluções de data lake, adequado para os seguintes cenários.
|
Cenário |
Descrição |
|
Importação e consulta de dados em tempo real |
Fluxos de dados upstream entram no data lake Iceberg em tempo real e ficam imediatamente disponíveis para consulta. Por exemplo, em um cenário de logs, inicie um job de streaming do Iceberg ou do Spark para gravar logs em uma tabela Iceberg. Em seguida, consulte os dados com Hive, Spark, Iceberg ou Presto. O suporte a ACID garante isolamento entre ingestão e consultas, evitando leituras sujas. |
|
Exclusão ou atualização de dados |
Data warehouses tradicionais têm dificuldade para executar exclusões ou atualizações no nível de linha de forma eficiente. Essas operações geralmente exigem a execução de um job offline que lê toda a tabela original, modifica os dados e os reescreve. O Iceberg restringe as alterações do nível da tabela para o nível do arquivo, permitindo atualizações parciais eficientes. Em um data lake Iceberg, altere diretamente os dados em uma tabela executando um comando como |
|
Controle de qualidade de dados |
Utilize a validação de schema do Iceberg para descartar ou processar adicionalmente dados anômalos durante a importação. |
|
Evolução de schema de dados |
O Iceberg aceita alterações de schema por meio de instruções DDL do Spark SQL sem reescrever dados históricos, tornando a evolução rápida. O suporte a ACID isola as alterações de schema dos jobs de leitura existentes, garantindo leituras consistentes durante todo o processo. |
|
Machine learning em tempo real |
Em fluxos de trabalho de machine learning, o processamento de dados (limpeza, transformação, extração de features) consome a maior parte do tempo. O Iceberg unifica dados históricos e em tempo real em um único fluxo confiável, no qual cada etapa de processamento é um nó no pipeline. Isso elimina caminhos separados para batch e streaming. O Iceberg também fornece um SDK nativo em Python para desenvolvedores de algoritmos. |