HBase
 sql >> Base de Dados >  >> NoSQL >> HBase

Tutorial HDFS – Uma introdução completa ao HDFS para iniciantes


Quer saber como o Hadoop armazena grandes quantidades de dados de maneira confiável e tolerante a falhas?

Neste tutorial do HDFS, discutiremos um dos principais componentes do Hadoop, ou seja, o Hadoop Distributed File System (HDFS).

Primeiro, veremos uma introdução ao Distributed FileSystem. Em seguida, estudaremos o sistema de arquivos distribuído do Hadoop. O artigo explica o motivo do uso do HDFS, da arquitetura HDFS e dos blocos no HDFS.

O artigo também lista alguns dos recursos do Hadoop HDFS. Além disso, você conhecerá as mensagens de pulsação no Hadoop HDFS.

Este tutorial do HDFS fornece o guia introdutório completo para o armazenamento mais confiável do Hadoop HDFS.

Vamos começar com uma introdução ao Distributed FileSystem.

Sistema de Arquivos Distribuído


Quando o conjunto de dados excede a capacidade de armazenamento de uma única máquina, torna-se obrigatório particionar o conjunto de dados em várias máquinas separadas. O sistema de arquivos que gerencia os dados na rede de máquinas é chamado de sistema de arquivos distribuído .

Um sistema de arquivos distribuído é um sistema de arquivos que nos permite armazenar dados em várias máquinas ou nós em um cluster e permite que vários usuários acessem os dados.

Como o DFS é baseado na rede, todas as complicações da programação de rede aparecem, tornando um sistema de arquivos distribuído mais complexo do que o sistema de arquivos normal. Um dos maiores desafios do DFS é tolerar a falha do nó sem sofrer perda de dados.

O Hadoop vem com um sistema de arquivos distribuído chamado Hadoop Distributed Filesystem para armazenar grandes quantidades de dados enquanto fornece tolerância a falhas e alta disponibilidade.

Curioso para conhecer o HDFS? Então agora, vamos começar com o tutorial HDFS.

Tutorial HDFS – Introdução


O Hadoop Distributed FileSystem (HDFS) é um sistema de arquivos distribuído baseado em Java usado no Hadoop para armazenar uma grande quantidade de dados estruturados ou não estruturados, variando em tamanho de GigaBytes a PetaBytes, em um cluster de hardware comum. É o armazenamento mais confiável conhecido até hoje no planeta.

No HDFS, os dados são armazenados em vários locais, portanto, se qualquer uma das máquinas falhar, os dados poderão ser obtidos de outra máquina que contenha a cópia dos dados. Assim, é altamente tolerante a falhas e não garante perda de dados, mesmo em caso de falha de hardware.

É o principal componente do Hadoop, juntamente com MapReduce, YARN e outros utilitários comuns.

Segue um Escrever-Once-Read-Many filosofia que simplifica a coerência de dados e permite acesso de alto rendimento.

Por que HDFS?


No mundo de TI de hoje, quase 75% dos dados do mundo residem no Hadoop HDFS. É devido ao seguinte motivo:
  • O HDFS armazena dados em todo o hardware comum, pelo que não há necessidade de máquinas de última geração para armazenar big data. Assim, fornece armazenamento econômico para armazenamento de big data.
  • O HDFS segue o padrão de processamento de dados mais eficiente que é o padrão Write-Once-Read-Many-Times. Um conjunto de dados gerado de várias fontes é copiado e, em seguida, as várias análises são realizadas nesse conjunto de dados ao longo do tempo. Portanto, é melhor para processamento em lote.
  • O HDFS pode armazenar dados de qualquer tamanho gerados de qualquer fonte em qualquer formato, estruturado ou não.
  • Seu modelo write-one-read-many relaxa os requisitos de controle de simultaneidade. Os dados podem ser acessados ​​várias vezes sem nenhum problema de coerência de dados.
  • O HDFS funciona com base na suposição de localidade de dados de que mover a computação para os dados é muito mais fácil e rápido do que mover os dados para a unidade computacional. O HDFS facilita a localização da lógica de processamento próxima aos dados, em vez de mover os dados para o espaço do aplicativo. Assim, isso reduz o congestionamento da rede e o tempo de resposta geral.

Então, avançando neste tutorial do HDFS, vamos pular para a Arquitetura HDFS.

Arquitetura HDFS


O Hadoop DFS segue mestre-escravo arquitetura. O HDFS consiste em dois tipos de nós que são nós mestre e nós escravos. O nó mestre gerencia o namespace do sistema de arquivos, ou seja, armazena os metadados sobre os blocos de arquivos.

Os nós escravos armazenam os dados do usuário e são responsáveis ​​pelo processamento dos dados com base na instrução do nó mestre.

Mestre HDFS


Mestre em HDFS é a peça central do Hadoop HDFS. São as máquinas de ponta que armazenam metadados relacionados a todos os arquivos armazenados no HDFS. Ele gerencia e mantém o namespace do sistema de arquivos e fornece instruções para os nós escravos.

O NameNode é o nó mestre no Hadoop HDFS.

HDFS Slave


Os Slave Nodes são responsáveis ​​por armazenar os dados de negócios reais. Eles são as máquinas de configuração normal (hardware de commodity) que armazenam e processam os conjuntos de dados sob instrução do nó mestre.

Os DataNodes são os nós escravos no Hadoop HDFS.

HDFS NameNode


NameNode é o nó mestre. Ele gerencia as operações de namespace do sistema de arquivos, como abrir/fechar, renomear arquivos e diretórios. NameNode mapeia blocos de dados para DataNodes e registra cada alteração feita no namespace do sistema de arquivos.

HDFS DataNode


DataNodes são os nós escravos que lidam com solicitações de leitura/gravação de clientes HDFS. DataNodes cria, exclui e replica blocos de dados de acordo com as instruções do nó de nome governante.

Quer saber como os dados são armazenados no HDFS?

Blocos em HDFS


O HDFS divide os arquivos em pedaços de tamanho de bloco chamados blocos de dados. Esses blocos são armazenados em vários DataNodes no cluster. O tamanho de bloco padrão é 128 MB. Podemos configurar o tamanho do bloco padrão, dependendo da configuração do cluster.

Para o cluster com máquinas de ponta, o tamanho do bloco pode ser mantido grande (como 256 Mb ou mais). Para o cluster com máquinas com configuração como 8Gb de RAM, o tamanho do bloco pode ser mantido menor (como 64 Mb).

Além disso, o HDFS cria réplicas de blocos com base no fator de replicação (um número que define o total de cópias de um bloco de um arquivo). Por padrão, o fator de replicação é 3. Isso significa que 3 cópias de cada bloco são criadas e armazenadas em vários nós.

Se algum DataNode falhar, o bloco será buscado de outro DataNode contendo uma réplica de um bloco. Isso torna a tolerância a falhas do HDFS.

Você já pensou em como o NameNode descobre a falha do DataNode?

Falha no DataNode


Todos os DataNodes no Hadoop HDFS enviam continuamente uma pequena mensagem de pulsação (sinais) para NameNode para dizer “I am Alive” a cada 3 segundos.

Se o NameNode não receber uma mensagem de pulsação de nenhum DataNode específico por mais de 10 minutos, ele considerará o DataNode como morto e começará a criar uma réplica dos blocos que estavam disponíveis nesse DataNode.

NameNode instrui os DataNodes que contêm uma cópia desses dados para replicar esses dados em outros DataNodes para equilibrar a replicação. Dessa forma, NameNode descobre a falha do DataNode.

Quer saber como o NameNode coloca réplicas em diferentes DataNode? Vamos explorar o reconhecimento de rack no HDFS para obter uma resposta à pergunta acima.

Reconhecimento de rack no HDFS


O Hadoop HDFS armazena dados em todo o cluster de hardware comum. Para fornecer tolerância a falhas, réplicas de blocos são criadas e armazenadas em diferentes DataNodes.

O NameNode coloca as réplicas de blocos em vários DataNodes seguindo o algoritmo Rack Awareness para garantir que não haja perda de dados, mesmo que o DataNode ou todo o rack fique inativo. O NameNode coloca a primeira réplica no DataNode mais próximo.

Ele armazena a segunda réplica em um DataNode diferente no mesmo rack e a terceira réplica em um DataNode diferente em um rack diferente.

Se o fator de replicação for 2, ele colocará a segunda réplica em um DataNode diferente em um rack diferente para que, se um rack completo ficar inativo, o sistema também estará altamente disponível.

O principal objetivo de uma política de posicionamento de réplicas com reconhecimento de rack é melhorar a tolerância a falhas, a confiabilidade dos dados e a disponibilidade.

A seguir, no tutorial do HDFS, discutimos alguns dos principais recursos do Hadoop HDFS.

Recursos importantes do Hadoop HDFS

1. Alta disponibilidade


É um sistema de arquivos altamente disponível. Nesse sistema de arquivos, os dados são replicados entre os nós do cluster Hadoop criando uma réplica dos blocos nos outros escravos presentes no cluster HDFS. Assim, sempre que um usuário deseja acessar esses dados, ele pode acessar seus dados a partir dos escravos, que contêm seus blocos.

2. Tolerância a falhas


A tolerância a falhas no Hadoop HDFS é a força de trabalho de um sistema em condições desfavoráveis. É altamente tolerante a falhas. A estrutura do Hadoop divide os dados em blocos.

Depois disso, ele cria várias cópias de blocos em diferentes máquinas do cluster. Assim, quando qualquer máquina do cluster fica inativa, um cliente pode acessar facilmente seus dados da outra máquina, que contém a mesma cópia dos blocos de dados.

3. Alta confiabilidade


O HDFS fornece armazenamento de dados confiável. Ele pode armazenar dados na faixa de 100s de petabytes. O HDFS armazena dados de forma confiável em um cluster. Ele divide os dados em blocos. Em seguida, a estrutura do Hadoop armazena esses blocos em nós presentes no cluster.

O HDFS também armazena dados de forma confiável criando uma réplica de cada bloco presente no cluster. Portanto, fornece facilidade de tolerância a falhas.

4. Replicação


A Replicação de Dados é um recurso exclusivo do HDFS. A replicação resolve o problema de perda de dados em condições desfavoráveis, como falha de hardware, travamento de nós, etc. O HDFS mantém o processo de replicação em intervalos regulares de tempo.

Ele também continua criando réplicas de dados do usuário em diferentes máquinas presentes no cluster. Assim, quando qualquer nó cai, o usuário pode acessar os dados de outras máquinas. Assim, não há possibilidade de perda de dados do usuário.

5. Escalabilidade


Ele armazena dados em vários nós no cluster. Portanto, sempre que os requisitos aumentarem, você poderá dimensionar o cluster. Dois mecanismos de escalabilidade estão disponíveis no HDFS:Escalabilidade Vertical e Horizontal.

6. Armazenamento distribuído


Os recursos do HDFS são obtidos por meio de armazenamento e replicação distribuídos. Ele armazena dados de maneira distribuída entre os nós. No Hadoop, os dados são divididos em blocos e armazenados nos nós presentes no cluster.

Depois disso, ele cria a réplica de cada bloco e armazena em outros nós. Quando uma única máquina no cluster falha, podemos acessar facilmente nossos dados de outros nós que contêm sua réplica.

A seguir, no tutorial do HDFS, discutimos algumas operações úteis do HDFS.

Operação HDFS


O Hadoop HDFS tem muitas semelhanças com o sistema de arquivos Linux. Podemos fazer quase todas as operações que podemos fazer com um sistema de arquivos local, como criar um diretório, copiar o arquivo, alterar permissões etc.

Ele também fornece diferentes direitos de acesso, como leitura, gravação e execução para usuários, grupos e outros.

1. Leia a operação


Quando o cliente HDFS deseja ler qualquer arquivo do HDFS, o cliente primeiro interage com o NameNode. NameNode é o único local que armazena metadados. NameNode especifica o endereço dos escravos onde os dados são armazenados. Em seguida, o cliente interage com os DataNodes especificados e lê os dados de lá.

O cliente HDFS interage com a API do sistema de arquivos distribuído. Em seguida, ele envia uma solicitação ao NameNode para enviar uma localização de bloco. NameNode primeiro verifica se o cliente tem privilégios suficientes para acessar os dados ou não? Depois disso, NameNode compartilhará o endereço no qual os dados são armazenados no DataNode.

NameNode fornece um token ao cliente, que mostra ao DataNode para leitura do arquivo para fins de segurança. Quando um cliente vai ao DataNode para ler o arquivo, após verificar o token, o DataNode permite que o cliente leia esse bloco específico.

Depois que o cliente abre o fluxo de entrada e começa a ler os dados dos DataNodes especificados. Assim, desta forma, o cliente lê os dados diretamente do DataNode.

2. Operação de escrita


Para escrever um arquivo, o cliente primeiro interage com NameNode. O HDFS NameNode fornece o endereço do DataNode no qual os dados devem ser gravados pelo cliente.

Quando o cliente termina de escrever o bloco, o DataNode começa a replicar o bloco em outro DataNode. Em seguida, ele copia o bloco para o terceiro DataNode. Depois de criar a replicação necessária, ele envia uma confirmação final ao cliente. A autenticação é a mesma que a operação de leitura.

O cliente envia apenas 1 cópia dos dados independentemente do nosso fator de replicação, enquanto os DataNodes replicam os blocos. A gravação do arquivo não é cara porque grava vários blocos paralelamente vários blocos em vários DataNodes.

Resumo


Na conclusão do tutorial do HDFS, podemos dizer que o Hadoop HDFS armazena dados de maneira distribuída em todo o cluster de hardware comum.

O Hadoop HDFS é um sistema de armazenamento altamente confiável, tolerante a falhas e altamente disponível conhecido até o momento. Segue a arquitetura mestre-escravo onde NameNode é o nó mestre e os DataNodes são os nós escravos.

Além disso, o HDFS divide o arquivo de entrada do cliente em blocos de 128 MB, que podemos configurar conforme nossa necessidade. Ele também armazena réplicas de blocos para fornecer tolerância a falhas.

O NameNode segue a política de reconhecimento de rack para colocar réplicas no DataNode para garantir que nenhum dado seja perdido durante uma falha de máquina ou falha de hardware. Além disso, o DataNodes envia uma mensagem de pulsação ao NameNode para garantir que eles estejam ativos.

Durante a leitura ou gravação do arquivo, o cliente primeiro interage com o NameNode.

O Hadoop O HDFS é um sistema de armazenamento escalável, confiável, distribuído, tolerante a falhas e altamente disponível para armazenamento de big data.