Formatos de arquivo em big data: um breve programa educacional

Formatos de arquivo em big data: um breve programa educacional
Divindade do Tempo por Remarin

Equipe Soluções em nuvem Mail.ru oferece tradução do artigo engenheiro Rahul Bhatia da Clairvoyant sobre quais formatos de arquivo existem em big data, quais são os recursos mais comuns dos formatos Hadoop e qual formato é melhor usar.

Por que são necessários diferentes formatos de arquivo?

Um grande gargalo de desempenho para aplicativos habilitados para HDFS, como MapReduce e Spark, é o tempo necessário para pesquisar, ler e gravar dados. Estes problemas são agravados pela dificuldade em gerir grandes conjuntos de dados se tivermos um esquema em evolução em vez de um esquema fixo, ou se existirem algumas restrições de armazenamento.

O processamento de big data aumenta a carga no subsistema de armazenamento - o Hadoop armazena dados de forma redundante para obter tolerância a falhas. Além dos discos, são carregados o processador, a rede, o sistema de entrada/saída e assim por diante. À medida que o volume de dados aumenta, também aumenta o custo de processamento e armazenamento.

Vários formatos de arquivo em Hadoop inventado para resolver precisamente esses problemas. Selecionar o formato de arquivo apropriado pode trazer alguns benefícios significativos:

  1. Tempo de leitura mais rápido.
  2. Tempo de gravação mais rápido.
  3. Arquivos compartilhados.
  4. Suporte para evolução de esquema.
  5. Suporte de compressão expandido.

Alguns formatos de arquivo destinam-se ao uso geral, outros a usos mais específicos e alguns são projetados para atender a características de dados específicas. Portanto, a escolha é realmente muito grande.

Formato de arquivo Avro

Para serialização de dados Avro é amplamente utilizado - é baseado em string, ou seja, um formato de armazenamento de dados de string no Hadoop. Ele armazena o esquema no formato JSON, facilitando a leitura e interpretação por qualquer programa. Os dados em si estão em formato binário, compactos e eficientes.

O sistema de serialização da Avro é neutro em termos de linguagem. Os arquivos podem ser processados ​​em diversas linguagens, atualmente C, C++, C#, Java, Python e Ruby.

Um recurso importante do Avro é seu suporte robusto para esquemas de dados que mudam com o tempo, ou seja, evoluem. Avro entende alterações de esquema – exclusão, adição ou alteração de campos.

Avro oferece suporte a uma variedade de estruturas de dados. Por exemplo, você pode criar um registro que contenha uma matriz, um tipo enumerado e um subregistro.

Formatos de arquivo em big data: um breve programa educacional
Este formato é ideal para gravar na zona de destino (transição) de um data lake (lago de dados, ou data lake - uma coleção de instâncias para armazenar vários tipos de dados, além de fontes de dados diretamente).

Portanto, esse formato é mais adequado para gravação na zona de destino de um data lake pelos seguintes motivos:

  1. Os dados desta zona são normalmente lidos na sua totalidade para processamento posterior por sistemas a jusante - e um formato baseado em linhas é mais eficiente neste caso.
  2. Os sistemas downstream podem recuperar facilmente tabelas de esquemas de arquivos – sem necessidade de armazenar esquemas separadamente em meta-armazenamento externo.
  3. Qualquer alteração no esquema original é facilmente processada (evolução do esquema).

Formato de arquivo Parquet

Parquet é um formato de arquivo de código aberto para Hadoop que armazena estruturas de dados aninhadas em formato colunar plano.

Comparado à abordagem tradicional em fileiras, o Parquet é mais eficiente em termos de armazenamento e desempenho.

Isto é especialmente útil para consultas que leem colunas específicas de uma tabela ampla (muitas colunas). Graças ao formato do arquivo, apenas as colunas necessárias são lidas, portanto a E/S é mantida no mínimo.

Uma pequena digressão e explicação: Para entender melhor o formato de arquivo Parquet no Hadoop, vamos ver o que é um formato baseado em coluna - ou seja, colunar. Este formato armazena valores semelhantes para cada coluna juntos.

Por exemplo, o registro incluirá os campos ID, Nome e Departamento. Nesse caso, todos os valores da coluna ID serão armazenados juntos, assim como os valores da coluna Nome e assim por diante. A tabela ficará mais ou menos assim:

ID
Nome
Departamento

1
emp1
d1

2
emp2
d2

3
emp3
d3

No formato string, os dados serão salvos da seguinte forma:

1
emp1
d1
2
emp2
d2
3
emp3
d3

Em um formato de arquivo colunar, os mesmos dados serão salvos assim:

1
2
3
emp1
emp2
emp3
d1
d2
d3

O formato colunar é mais eficiente quando você precisa consultar diversas colunas de uma tabela. Ele lerá apenas as colunas obrigatórias porque são adjacentes. Desta forma, as operações de E/S são reduzidas ao mínimo.

Por exemplo, você só precisa da coluna NOME. EM formato de string Cada registro no conjunto de dados precisa ser carregado, analisado por campo e, em seguida, extraído os dados NAME. O formato da coluna permite fazer uma busca detalhada diretamente na coluna Nome porque todos os valores dessa coluna são armazenados juntos. Você não precisa digitalizar toda a gravação.

Assim, o formato colunar melhora o desempenho da consulta porque requer menos tempo de pesquisa para chegar às colunas necessárias e reduz o número de operações de E/S porque apenas as colunas desejadas são lidas.

Uma das características únicas Parquete é que neste formato pode armazenar dados com estruturas aninhadas. Isso significa que em um arquivo Parquet, até mesmo os campos aninhados podem ser lidos individualmente sem a necessidade de ler todos os campos na estrutura aninhada. Parquet usa um algoritmo de trituração e montagem para armazenar estruturas aninhadas.

Formatos de arquivo em big data: um breve programa educacional
Para entender o formato de arquivo Parquet no Hadoop, você precisa conhecer os seguintes termos:

  1. Grupo de linhas (grupo de linhas): divisão horizontal lógica de dados em linhas. Um grupo de linhas consiste em um fragmento de cada coluna do conjunto de dados.
  2. Fragmento de coluna (pedaço de coluna): Um fragmento de uma coluna específica. Esses fragmentos de coluna residem em um grupo específico de linhas e têm garantia de serem contíguos no arquivo.
  3. Página (página): Os fragmentos da coluna são divididos em páginas escritas uma após a outra. As páginas têm um título comum, para que você possa pular as desnecessárias durante a leitura.

Formatos de arquivo em big data: um breve programa educacional
Aqui o título contém apenas o número mágico PAR1 (4 bytes) que identifica o arquivo como um arquivo Parquet.

O rodapé diz o seguinte:

  1. Metadados de arquivo que contêm as coordenadas iniciais dos metadados de cada coluna. Ao ler, você deve primeiro ler os metadados do arquivo para encontrar todos os fragmentos da coluna de interesse. As partes da coluna devem então ser lidas sequencialmente. Outros metadados incluem a versão do formato, o esquema e quaisquer pares de valores-chave adicionais.
  2. Comprimento dos metadados (4 bytes).
  3. número mágico PAR1 (4 bytes).

Formato de arquivo ORC

Formato de arquivo linha-coluna otimizado (Coluna de linha otimizada, ORC) oferece uma forma muito eficiente de armazenar dados e foi projetado para superar as limitações de outros formatos. Armazena dados em um formato perfeitamente compacto, permitindo pular detalhes desnecessários - sem exigir a construção de índices grandes, complexos ou mantidos manualmente.

Vantagens do formato ORC:

  1. Um arquivo é a saída de cada tarefa, o que reduz a carga no NameNode (nó de nome).
  2. Suporte para tipos de dados Hive, incluindo DateTime, tipos de dados decimais e complexos (struct, list, map e union).
  3. Leitura simultânea do mesmo arquivo por diferentes processos RecordReader.
  4. Capacidade de dividir arquivos sem procurar marcadores.
  5. Estimativa da alocação máxima possível de memória heap para processos de leitura/gravação com base nas informações do rodapé do arquivo.
  6. Os metadados são armazenados no formato de serialização binária Protocol Buffers, que permite adicionar e remover campos.

Formatos de arquivo em big data: um breve programa educacional
ORC armazena coleções de strings em um único arquivo e, dentro da coleção, os dados da string são armazenados em formato colunar.

Um arquivo ORC armazena grupos de linhas chamadas listras e informações de suporte no rodapé do arquivo. O Postscript no final do arquivo contém parâmetros de compactação e o tamanho do rodapé compactado.

O tamanho de faixa padrão é 250 MB. Devido a faixas tão grandes, a leitura do HDFS é realizada de forma mais eficiente: em grandes blocos contíguos.

O rodapé do arquivo registra a lista de pistas no arquivo, o número de linhas por pista e o tipo de dados de cada coluna. O valor resultante de contagem, mínimo, máximo e soma para cada coluna também é escrito lá.

O rodapé da faixa contém um diretório de locais de fluxo.

Os dados de linha são usados ​​ao verificar tabelas.

Os dados do índice incluem os valores mínimo e máximo de cada coluna e a posição das linhas em cada coluna. Os índices ORC são usados ​​apenas para selecionar faixas e grupos de linhas, não para responder a consultas.

Comparação de diferentes formatos de arquivo

Avro em comparação com Parquet

  1. Avro é um formato de armazenamento de linha, enquanto Parquet armazena dados em colunas.
  2. Parquet é mais adequado para consultas analíticas, o que significa que as operações de leitura e consulta de dados são muito mais eficientes do que gravações.
  3. As operações de gravação no Avro são executadas com mais eficiência do que no Parquet.
  4. Avro lida com a evolução do circuito de forma mais madura. Parquet suporta apenas adição de esquema, enquanto Avro suporta evolução multifuncional, ou seja, adição ou alteração de colunas.
  5. Parquet é ideal para consultar um subconjunto de colunas em uma tabela com várias colunas. Avro é adequado para operações ETL onde consultamos todas as colunas.

ORC vs Parquet

  1. O Parquet armazena melhor os dados aninhados.
  2. ORC é mais adequado para pushdown de predicado.
  3. ORC suporta propriedades ACID.
  4. ORC compacta melhor os dados.

O que mais ler sobre o assunto:

  1. Análise de big data na nuvem: como uma empresa pode se tornar orientada a dados.
  2. Um guia humilde para esquemas de banco de dados.
  3. Nosso canal de telegram sobre transformação digital.

Fonte: habr.com

Adicionar um comentário