Blocos de dados no hadoop distributed file system (hdfs)

Quando você armazenar um arquivo no HDFS, o sistema divide-os em um conjunto de blocos individuais e armazena esses blocos em vários nós escravos no cluster Hadoop. Isso é uma coisa completamente normal para fazer, como todos os sistemas de arquivos quebrar arquivos em blocos antes de armazená-los no disco.

HDFS não tem idéia (e não se importa) que está armazenado dentro do arquivo, então arquivos RAW não são divididos de acordo com regras que nós, humanos, iria entender. Os seres humanos, por exemplo, gostaria limites recordes - as linhas mostrando onde um registro começa e termina - a ser respeitado.

HDFS é muitas vezes felizmente sem saber que o registro final em um bloco pode ser apenas um registro parcial, com o resto do seu conteúdo desviados para o seguinte bloco. HDFS só quer ter certeza de que os arquivos são divididos em blocos de tamanho uniforme que correspondem ao tamanho de bloco predefinido para a instância Hadoop (a menos que um valor personalizado foi inserido para o arquivo que está sendo armazenada). Na figura anterior, que o tamanho do bloco é de 128 MB.

Não cada arquivo que você precisa para armazenar é um múltiplo exato do tamanho do bloco do seu sistema, de modo que o bloco de dados final para um arquivo usa apenas tanto espaço quanto for necessário. No caso da figura anterior, o bloco final de dados é de 1 MB.

Video: Basics of Hadoop Distributed File System (HDFS)



O conceito de armazenar um arquivo como uma coleção de blocos é inteiramente consistente com a forma como os sistemas de arquivos normalmente trabalham. Mas o que é diferente sobre HDFS é a escala. Um tamanho de bloco típico que você veria em um sistema de arquivos no Linux é 4KB, enquanto um tamanho de bloco típico no Hadoop é 128MB. Este valor é configurável, e pode ser personalizado, tanto como um novo padrão do sistema e um valor personalizado para arquivos individuais.

Hadoop foi projetado para armazenar dados em escala petabyte, onde quaisquer limitações potenciais para dimensionamento são minimizados. O tamanho alta bloco é uma consequência directa desta necessidade de armazenar dados em uma escala maciça.

Primeiro de tudo, cada bloco de dados armazenados em HDFS tem seu próprio metadados e precisa ser monitorado por um servidor central para que os aplicativos que precisam acessar um arquivo específico pode ser direcionado para onde todos os blocos do arquivo estão armazenados. Se o tamanho do bloco estavam na faixa kilobyte, mesmo volumes modestos de dados na escala de terabyte iria sobrecarregar o servidor de metadados com muitos blocos de rastrear.

Em segundo lugar, HDFS é concebido para permitir alto rendimento de modo a que o processamento paralelo destas grandes conjuntos de dados acontece tão rapidamente quanto possível. A chave para a escalabilidade do Hadoop no lado de processamento de dados é, e sempre será, paralelismo - a capacidade de processar os blocos individuais desses arquivos grandes em paralelo.

Video: HDFS - Copying data to HDFS

Para ativar o processamento eficiente, um equilíbrio deve ser atingido. Por um lado, o tamanho do bloco precisa ser grande o suficiente para justificar os recursos dedicados a uma unidade individual de processamento de dados (por exemplo, um mapa ou reduzir tarefa). Por outro lado, o tamanho do bloco não pode ser tão grande que o sistema está esperando muito tempo para uma última unidade de processamento de dados para concluir seu trabalho.

Estas duas considerações, obviamente, dependem dos tipos de trabalho que está sendo feito sobre os blocos de dados.


Publicações relacionadas