Visão geral do CarbonData
CarbonData é um novo formato de armazenamento de dados nativo do Apache Hadoop. CarbonData permite consultas interativas mais rápidas em PetaBytes de dados usando técnicas avançadas de armazenamento colunar, índice, compactação e codificação para melhorar a eficiência da computação. Além disso, o CarbonData também é um mecanismo de análise de alto desempenho que integra fontes de dados ao Spark.
O propósito de usar CarbonData é fornecer resposta rápida a consultas ad hoc de Big Data. Essencialmente, o CarbonData é um mecanismo de Processamento Analítico On-line (OLAP), que armazena dados usando tabelas semelhantes às do Sistema de Gerenciamento de Banco de Dados Relacional (RDBMS). Você pode importar mais de 10 TB de dados para tabelas criadas no formato CarbonData e o CarbonData organiza e armazena automaticamente os dados usando os índices multidimensionais compactados. Depois que os dados são carregados em CarbonData, o CarbonData responde a consultas ad hoc em segundos.
O CarbonData integra fontes de dados ao ecossistema Spark e você pode consultar e analisar os dados usando o Spark SQL. Você também pode usar a ferramenta de terceiros JDBCServer fornecida pelo Spark para se conectar ao SparkSQL.
Topologia do CarbonData
O CarbonData é executado como uma fonte de dados dentro do Spark. Portanto, o CarbonData não inicia nenhum processo adicional em nós em clusters. O motor CarbonData funciona dentro do executor do Spark.
Os dados armazenados na CarbonData Table são divididos em vários arquivos de dados do CarbonData. Sempre que os dados são consultados, o CarbonData Engine lê e filtra os conjuntos de dados. CarbonData Engine é executado como parte do processo Executor do Spark e é responsável por manipular um subconjunto de blocos de arquivos de dados.
Os dados da tabela são armazenados no HDFS. Os nós no mesmo cluster do Spark podem ser usados como nós de dados do HDFS.
Recursos do CarbonData
- SQL: CarbonData é compatível com o Spark SQL e suporta operações de consulta SQL executadas no Spark SQL.
- Definição de conjunto de dados de tabela simples: CarbonData permite definir e criar conjuntos de dados usando instruções de Linguagem de Definição de Dados (DDL). CarbonData DDL é flexível e fácil de usar, e pode definir tabelas complexas.
- Fácil gerenciamento de dados: CarbonData fornece várias funções de gerenciamento de dados para carregamento e manutenção de dados. O CarbonData suporta o carregamento em massa de dados históricos e o carregamento incremental de novos dados. Os dados carregados podem ser excluídos com base no tempo de carregamento e uma operação de carregamento específica pode ser desfeita.
- O formato de arquivo CarbonData é um armazenamento colunar no HDFS. Esse formato tem muitos novos recursos de armazenamento de arquivos baseados em colunas, como divisão de tabelas e compactação de dados. CarbonData tem as seguintes características:
- Armazena dados junto com o índice: acelera significativamente o desempenho da consulta e reduz as varreduras de I/O e os recursos da CPU, quando há filtros na consulta. O índice de CarbonData consiste em vários níveis de índices. Uma estrutura de processamento pode aproveitar esse índice para reduzir a tarefa que precisa ser agendada e processada e também pode executar a varredura de pular em uma unidade de grãos mais fina (chamada blocklet) na varredura do lado da tarefa em vez de verificar o arquivo inteiro.
- Dados codificados operáveis: com o suporte a esquemas eficientes de compressão e codificação global, CarbonData pode consultar dados compactados/codificados. Os dados podem ser convertidos pouco antes de retornar os resultados para os usuários, o que é chamado de materialização tardia.
- Suporta vários casos de uso com um único formato de dados: como consulta interativa no estilo OLAP, Acesso Sequencial (grande varredura) e Acesso Aleatório (varredura estreita).
Principais tecnologias e vantagens do CarbonData
- Resposta rápida da consulta: CarbonData apresenta consultas de alto desempenho. A velocidade de consulta do CarbonData é 10 vezes maior que a do Spark SQL. Ele usa formatos de dados dedicados e aplica várias tecnologias de índice, código de dicionário global e várias otimizações push-down, fornecendo resposta rápida a consultas de dados em nível de TB.
- Compressão de dados eficiente: CarbonData comprime dados combinando os algoritmos de compressão leves e pesados. Isso economiza significativamente de 60% a 80% de espaço de armazenamento de dados e o custo de armazenamento de hardware.
Servidor de cache de índice do CarbonData
Para resolver a pressão e os problemas trazidos pelo aumento do volume de dados para o driver, um servidor de cache de índice independente é introduzido para separar o índice do lado do aplicação Spark da consulta Carbon. Todo o conteúdo do índice é gerenciado pelo servidor de cache de índice. As aplicações Spark obtêm os dados de índice necessários no modo RPC. Desta forma, uma grande quantidade de memória no lado do serviço é liberada para que os serviços não sejam afetados pela escala de cluster e o desempenho ou as funções não sejam afetados.