Hadoop HDFS Backup e Estratégia de DR

7

Estamos nos preparando para implementar nosso primeiro cluster do Hadoop. Como tal, estamos começando pequeno com uma configuração de quatro nós. (1 nó mestre e 3 nós de trabalho) Cada nó terá 6 TB de armazenamento. (Discos de 6 x 1 TB) Fomos com um chassi de 4 nós SuperMicro para que todos os quatro nós compartilhem uma única caixa de 4U.

Agora estamos analisando como fazer backup dessa solução para recuperação de desastres. (Pense na perda de rack ou site, não na perda de unidade) A melhor solução parece ser uma cópia de cluster para cluster. Embora eu também tenha lido sobre pessoas copiando dados de um compartilhamento NAS ou SMB. Além disso, vamos fazer o backup do nó mestre por meio de backup tradicional. Estou preocupado apenas com os dados do HDFS. Aqui estão minhas perguntas:

1) Para a cópia de cluster para cluster, posso configurar um cluster de nó SINGLE com grande quantidade de armazenamento para atuar como minha réplica externa? Eu não me importo com o desempenho, apenas a existência e a capacidade de manter todo o conjunto de dados. (Os horários de restauração não são uma preocupação, pois esse cluster não é essencial para missões) A cópia pode ser agendada para que seja executada apenas uma vez por dia, etc.?

2) Para a opção SMB ou NAS, como isso funciona? O disco de destino precisa ser formatado como HDFS? Precisarei fazer backup de cada um dos três nós de trabalho em sua totalidade? Ou existe algum script inteligente que possa fazer backup do conjunto de dados sem a paridade? Não estou muito familiarizado com esta solução e só vi referências a ela on-line. Eu não tive muita sorte em localizar recursos ou informações.

Também estou aberto a outras opções de DR para o Hadoop HDFS. Nosso objetivo é obter uma cópia completa do conjunto de dados do HDFS para que possamos usá-lo para recuperar-se de uma perda de rack ou site.

Obrigado!

    
por Matt Keller 14.08.2013 / 01:32

2 respostas

1

Para a opção 1, você pode usar distcp para copiar de um cluster para outro. O cluster de backup certamente poderia ser um servidor de nó único, desde que ele tenha um namenode e datanode em execução nele. Basicamente, você está procurando executar o modo pseudo-distribuído . Para executar o distcp periodicamente,

Para fazer isso periodicamente, eu criaria um script de shell que fizesse algo como o seguinte:

  1. verifique se há um arquivo de bloqueio
  2. se o arquivo de trava existir, resista (e, opcionalmente, envie um alerta se o arquivo de trava estiver por aí por muito tempo - isso significaria que um distcp anterior saiu mal e não desbloqueou ou que a distcp anterior está demorando mais do que você espera).
  3. se não existir, toque no arquivo de bloqueio.
  4. execute o distcp.
  5. verifique o status do trabalho distcp para verificar se ele foi concluído corretamente.
  6. desbloquear.

Estou sugerindo o uso de um arquivo de travamento porque você não deseja que vários distcp sejam executados nesta configuração específica . Você acabará dominando seu cluster distribuído pseudo. Eu também definiria o fator de replicação padrão como 1 na configuração de cluster pseudo-distribuída. Não há necessidade de duplicar os blocos se você não precisar (no entanto, não me lembro se um pseudo cluster faz isso por padrão; YMMV).

O

distcp pode ser feito para funcionar como um rsync estúpido, copiando apenas as coisas que mudam.

Para a opção 2, você pode usar o hadoop fs -copyToLocal. A desvantagem disso é que ele é totalmente copiado a cada vez, então, se você copiar /, ele copiará tudo sempre que for executado.

Para os metadados do hadoop, você deverá copiar o arquivo fsimage e edits. Este blog tem uma visão geral bastante razoável do que fazer. Ele é voltado para o uso do Cloudera, mas deve ser basicamente o mesmo para qualquer cluster Hadoop 1.0 ou 2.0.

    
por 20.08.2013 / 06:52
1

O Hdfs é por design replicado, geralmente com um mínimo de 3 nós, portanto, se você tiver 3 nós, os dados já serão replicados nos três.

É claro que esses nós devem estar em servidores físicos diferentes. Então não é provável que falhe ou todos os 3 devem falhar de uma vez.

Para replicar seus hdfs atuais, você pode simplesmente adicionar nós ao serviço hdfs em outros servidores e os dados serão replicados. Para garantir que os dados sejam replicados mais do que os 3 nós originais, aumente a configuração de tolerância a falhas para 4 ou mais nós. Thrn Encerra os outros nós na unidade única e os dados estarão em todos os nós restantes ativos.

    
por 28.11.2014 / 18:48