Database
 sql >> Base de Dados >  >> RDS >> Database

Introdução ao HDFS | O que é HDFS e como funciona?


A técnica central de armazenamento de arquivos no armazenamento está no sistema de arquivos que o ambiente operacional usa. Ao contrário dos sistemas de arquivos comuns, o Hadoop usa um sistema de arquivos diferente que lida com grandes conjuntos de dados em uma rede distribuída. Ele é chamado de Hadoop Distributed File System (HDFS) . Este artigo apresenta a ideia, com informações básicas relacionadas para começar.

O que é um sistema de arquivos?


Um sistema de arquivos normalmente é um método e uma estrutura de dados que o sistema operacional usa para gerenciar arquivos em um disco ou partição. Do ponto de vista de um disco magnético, cada dado é uma carga armazenada em setores ao longo das trilhas. Pense nas trilhas como linhas espirais e setores como as pequenas células ao longo das trilhas espirais. Agora, se solicitarmos que o disco localize alguns dados, ele, na melhor das hipóteses, pode redirecionar sua cabeça para alguns setores na sequência espiral. Esses dados brutos não são significativos, a menos que o sistema operacional entre em cena; é responsável por delimitar as informações de um conjunto de setores a serem reconhecidos como um arquivo. Um sistema operacional organiza as informações em uma estrutura de dados de contabilidade chamada sistema de arquivos. Essa estrutura define o padrão de contabilidade. Mas, há alguma diferença técnica sobre como os sistemas operacionais gerenciam essa estrutura. Por exemplo, o Windows usa o modelo FAT32, NTFS, o Linux usa EXT2, EXT3 e assim por diante. Mas, a ideia básica é que todos eles organizem os dados de acordo com alguma estrutura definida.

A organização do sistema de arquivos é a principal responsável pelo gerenciamento da criação, modificação e exclusão de arquivos (diretórios também são arquivos), partição de disco, tamanhos de arquivo e assim por diante, e eles operam diretamente em setores brutos de um disco ou partição.

Arquivos em um sistema distribuído


As características de um sistema distribuído são diferentes no sentido de que o armazenamento está espalhado por várias máquinas em uma rede. Um único repositório não pode conter uma quantidade tão grande de dados. Se uma única máquina tiver uma capacidade de armazenamento e poder de processamento limitados, mas, quando o trabalho de processamento e o armazenamento forem distribuídos entre as máquinas na rede, o poder e a eficiência se tornarão múltiplos. Isso não apenas abre a possibilidade de amplo poder de processamento, mas também alavanca o uso da infraestrutura existente. Este resultado é que o custo é minimizado, mas a eficiência é aumentada. Cada máquina na rede se torna um cavalo de batalha potencial que abriga dados limitados enquanto coletivamente faz parte de armazenamento ilimitado e amplo poder de processamento. A compensação é a complexidade. Se isso pode ser aproveitado com técnicas inovadoras, um sistema distribuído é excelente para lidar com os problemas de big data. O sistema de arquivos HDFS visa alcançar isso. De fato, além do HDFS, existem muitos outros sistemas de arquivos distribuídos semelhantes, como o GPFS da IBM (General Parallel File System), Ceph (link da Wikipédia:lista de sistemas de arquivos distribuídos) e similares. Todos eles tentam resolver esse problema de várias direções com taxas de sucesso variadas.

Visão geral do HDFS


O sistema de arquivos normal foi projetado para funcionar em uma única máquina ou ambiente operacional único. Os conjuntos de dados no Hadoop exigem capacidade de armazenamento além do que uma única máquina física pode fornecer. Portanto, torna-se imperativo particionar dados em várias máquinas. Isso requer um processo especial para gerenciar os arquivos na rede distribuída. HDFS é o sistema de arquivos que aborda especificamente esse problema. Este sistema de arquivos é mais complexo do que um sistema de arquivos normal porque tem que lidar com programação de rede, fragmentação, tolerância a falhas, compatibilidade com sistema de arquivos local e assim por diante. Ele capacita o Hadoop a executar aplicativos de Big Data em vários servidores. Caracteriza-se por ser altamente tolerante a falhas com alta taxa de transferência de dados em hardware de baixo custo. O objetivo do sistema de arquivos HDFS é o seguinte:
  • Para lidar com arquivos muito grandes
  • O acesso de dados de streaming ao sistema de arquivos deve aproveitar um padrão de gravação uma vez e leitura várias vezes.
  • Executar em hardware comum de baixo custo
  • Ele deve aproveitar o acesso a dados de baixa latência.
  • Suporte a um grande número de arquivos
  • Suporte a vários gravadores de arquivos com modificação arbitrária de arquivos

Noções básicas de HDFS


A menor quantidade de dados lidos e gravados em um disco tem algo chamado tamanho do bloco . Normalmente, o tamanho desse bloco é de 512 bytes e os blocos do sistema de arquivos são de alguns kilobytes. O HDFS funciona com o mesmo princípio, mas o tamanho do bloco é muito maior. O tamanho de bloco maior potencializa a busca, minimizando as buscas e, portanto, o custo. Esses blocos são distribuídos em algo chamado clusters , que nada mais são do que blocos e cópias de blocos em diferentes servidores da rede. Arquivos individuais são replicados entre servidores no cluster.

Existem dois tipos de nós operando no cluster em um padrão mestre-escravo. O nó mestre é chamado de namenodes e o nó do trabalhador é chamado de datanodes . É por meio desses nós que o HDFS mantém a árvore e os metadados do sistema de arquivos (e diretórios). Na verdade, um arquivo é dividido em blocos e armazenado em um subconjunto de datanodes para se espalhar pelo cluster. O datanodo é responsável pelas solicitações de leitura, gravação, criação, exclusão e replicação de blocos no sistema de arquivos.

Os namenodes , por outro lado, são servidores que monitoram o acesso ao sistema de arquivos e mantêm os arquivos de dados no HDFS. Eles mapeiam blocos para o datanode e tratam de solicitações de abertura, fechamento e renomeação de arquivo/diretório.

nós de dados são a parte central do sistema de arquivos e fazem o trabalho de armazenamento e recuperação de solicitações de bloco do cliente. Namenode é o mantenedor a quem datanodes relatório. Isso significa que se os namenodes forem obliterados, as informações sobre os arquivos serão perdidas. Portanto, o Hadoop garante que o nó de nome seja resiliente o suficiente para resistir a qualquer tipo de falha. Uma técnica para garantir isso é fazer backup em um namenode secundário mesclando periodicamente a imagem do namespace com o log de edição. O namenode secundário geralmente reside em uma máquina separada para assumir o controle do namenode principal em caso de falha grave.

Existem muitas maneiras de interagir com o sistema de arquivos HDFS, mas a interface de linha de comando talvez seja a mais simples e comum. O Hadoop pode ser instalado em uma máquina e executado para ter uma experiência em primeira mão. abordaremos isso em artigos subsequentes, portanto, fique atento.

Operações do sistema de arquivos


As operações do sistema de arquivos HDFS são bastante semelhantes às operações normais do sistema de arquivos. Seguem alguns anúncios só para dar uma ideia.

Copia arquivos do sistema de arquivos local para HDFS:
% hadoop fs -copyFromLocal docs/sales.txt hdfs://localhost/
   user/mano/sales.txt

Cria um diretório no HDFS:
% hadoop fs -mkdir students

Lista arquivos e diretórios no diretório de trabalho atual no HDFS:
% hadoop fs -ls .

Conclusão


HDFS é uma implementação do que um sistema de arquivos representado pela abstração do Hadoop faz. O Hadoop é escrito em Java; portanto, todas as interações do sistema de arquivos são intercedidas por meio da API Java. A interface de linha de comando é um shell fornecido para interações comuns. O estudo do HDFS abre um horizonte diferente para o setor de arquitetura distribuída e seus intrincados procedimentos de trabalho. Muito trabalho está sendo feito para aperfeiçoar esse modelo de computação, cujo impulso, sem dúvida, foi o Big Data nos últimos anos.

Referência


Documentação da Arquitetura HDFS