Comparação de sistemas de arquivos Hadoop versus Ceph

Concluído

Agora resumimos1 as principais diferenças entre o HDFS e o Ceph.

  • Diferenças de arquitetura: O HDFS segue o modelo de colocação de computação e armazenamento. Os DataNodes do HDFS normalmente são corresidentes com nós MapReduce e a ideia principal por trás de todo o modelo é levar a computação para os dados. O Ceph foi projetado para ser um serviço de armazenamento autônomo, embora os OSDs que armazenam dados no Ceph possam estar colocalizados com os nós MapReduce.
  • Compatibilidade: Os clientes HDFS precisam ser implementados usando uma das APIs. O HDFS não foi projetado para ser um sistema de arquivos POSIX e não é compatível com algumas das semânticas POSIX (como abrir arquivos existentes para gravação). Soluções alternativas, como um driver FUSE, existem para permitir a montagem do HDFS. No entanto, a maioria dos aplicativos precisará ser reimplementada com um cliente HDFS, caso eles ainda não sejam compatíveis com a solução alternativa. O Ceph, por outro lado, expõe várias APIs, incluindo o driver Ceph FS em conformidade com o POSIX, o que facilita muito a integração com os aplicativos existentes quando comparado ao HDFS.
  • Layout de dados: Os NameNodes do HDFS expõem o local físico dos blocos para aplicativos cliente que podem usar essas informações para potencialmente aprimorar a localização dos acessos de dados. O Ceph é semelhante, pois os servidores de metadados sempre exibirão a localização do objeto de dados ao cliente quando uma solicitação de dados for feita.
  • Suporte para arquivos pequenos: O HDFS não é compatível com arquivos pequenos porque ele é otimizado para tamanhos grandes de bloco (64MB por padrão). No Ceph, a largura de distribuição geralmente está na ordem de quilobytes, o que o torna mais genérico do que o HDFS.
  • Gravações simultâneas: O HDFS é um modelo de gravação única que permite que apenas um arquivo seja gravado em outro arquivo por vez. O Ceph é compatível com vários gravadores simultâneos, portanto, ele é o mais flexível dos dois sistemas de arquivos.
  • Modelo de consistência: O HDFS garante consistência ao restringir as gravações em um cliente e impedir todas as atualizações de arquivo, enquanto o Ceph pode garantir uma consistência sequencial, exceto em raras situações que envolvem uma partição de rede de alguns dos OSDs.
  • O cache do HDFS é compatível com um cache de leitura antecipada no lado do cliente por meio de um modelo de streaming. Os clientes podem ter caches de leitura e buffers de gravação no Ceph caso o cliente tenha recebido uma concessão do MDS (quando o cliente tem acesso exclusivo a um arquivo). Quando vários clientes estiverem acessando o mesmo arquivo no Ceph, essas concessões serão revogadas, forçando a E/S a ser síncrona, a fim de gerenciar a consistência.
  • Tolerância a falhas: O HDFS foi criado para ter uma tolerância a falhas com suporte interno para replicação no nível de bloco e é compatível com rack. No entanto, o Namenode é um ponto único de falha no HDFS. O Ceph, por outro lado, é bastante robusto, pois usa protocolos de ponto a ponto complexos para garantir que ele seja bem tolerante a falhas. A recuperação de falha no Ceph também é bem rápida devido à presença de logs de gravação que podem ser reproduzidos para atualizar um nó.

Referências

  1. Maltzahn, C., Molina-Estolano, E., Khurana, A., Nelson, A. J., Brandt, S. A., & Weil, S. (2010). Ceph como uma alternativa escalonável ao Hadoop Distributed File System A revista USENIX vol. 35