Resumo

Concluído
  • O HDFS (Sistema de Arquivos Distribuído Hadoop) é um clone de software livre do GFS (Sistema de Arquivos do Google).
  • O HDFS foi projetado para ser executado em um cluster de nós e é compatível com o modelo de programação MapReduce fornecendo um DFS (sistema de arquivos distribuído) para os dados de E/S.
  • O HDFS tem um namespace comum em todo o cluster, ele é capaz de armazenar arquivos grandes, é otimizado para acesso de gravação única e muitas leituras e foi projetado para fornecer alta disponibilidade na presença de falhas de nó.
  • O HDFS segue uma topologia primário-secundário, já o NameNode lida com os metadados e os dados são armazenados nos DataNodes.
  • Os arquivos no HDFS são divididos em blocos, também chamados de partes, com um tamanho padrão de 128 MB.
  • Os blocos são replicados por padrão três vezes (chamado de fator de replicação) em todo o cluster.
  • O HDFS pressupõe uma topologia de cluster em estilo de árvore, otimiza o acesso a arquivos para melhorar o desempenho e tenta colocar as réplicas de bloco entre racks.
  • O design original do HDFS segue uma semântica imutável e não permite que os arquivos existentes sejam abertos para gravações. As versões mais recentes do HDFS são compatíveis com acréscimos de arquivo.
  • O HDFS é fortemente consistente porque uma gravação de arquivo é marcada como completa somente depois que todas as réplicas forem gravadas.
  • O NameNode mantém o controle das falhas do DataNode usando um mecanismo de pulsação. Caso haja falha na resposta dos DataNodes, eles serão marcados como inativos e outras cópias dos blocos presentes nesse DataNode serão criadas para manter o fator de replicação desejado.
  • O NameNode é um SPOF (ponto único de falha) no design original do HDFS. Um NameNode secundário poderá ser designado para copiar metadados periodicamente do NameNode primário, porém não fornecerá uma redundância completa de failover.
  • O HDFS fornece alta largura de banda para MapReduce, alta confiabilidade, baixo custo por byte e boa escalabilidade.
  • O HDFS é ineficiente com arquivos pequenos devido ao grande tamanho de bloco padrão, não está em conformidade com o POSIX e não permite regravações de arquivo, exceto para acréscimos nas versões mais recentes do HDFS.
  • O Ceph é um sistema de armazenamento projetado para aplicativos em nuvem. O Ceph é baseado em um repositório de objetos distribuído com serviços que estão em camadas sobre ele.
  • No núcleo do Ceph está o RADOS, um cluster de autogerenciamento de OSDs (daemons de repositório de objetos) e nós de monitoramento. Os nós usam técnicas avançadas para serem autogerenciados, tolerantes a falhas e escalonáveis.
  • Um objeto no RADOS é transformado em hash em um grupo de posicionamento e associado a um OSD usando o algoritmo CRUSH.
  • O RADOS pode ser acessado por meio de librados, um cliente RADOS nativo que funciona com diferentes linguagens de programação.
  • Os aplicativos também podem acessar dados no RADOS como objetos por meio do RADOS Gateway que é compatível com protocolos S3 e Swift por intermédio de uma interface REST.
  • O RADOS também pode exportar dispositivos de armazenamento em bloco usando o RBD. Eles podem ser usados como imagens de disco para máquinas virtuais.
  • O Ceph FS é um sistema de arquivos que está em camadas sobre o RADOS. Isso é obtido usando nós de metadados especiais que acompanham os metadados do sistema de arquivos. Os nós de metadados particionam a árvore do sistema de arquivos de maneira dinâmica por meio de um algoritmo especial. As entradas de metadados também são registradas em diário no RADOS para tolerância a falhas.