Pregunta Hadoop HDFS Backup & DR Strategy


Nos estamos preparando para implementar nuestro primer clúster de Hadoop. Como tal, estamos empezando con una configuración de cuatro nodos. (1 nodo maestro y 3 nodos de trabajo) Cada nodo tendrá 6 TB de almacenamiento. (6 discos de 1TB) Fuimos con un chasis SuperMicro de 4 nodos para que los cuatro nodos compartan una única caja de 4U.

Ahora estamos viendo cómo hacer una copia de seguridad de esta solución para recuperación ante desastres. (Piense en la pérdida de rack o sitio, no en la pérdida de la unidad) La mejor solución parece ser una copia de clúster a clúster. Aunque también he leído sobre personas que copian datos que comparten un NAS o SMB. Además, vamos a realizar una copia de seguridad del nodo maestro a través de medios de copia de seguridad tradicionales. Sólo estoy preocupado por los datos HDFS. Aquí están mis preguntas:

1) Para la copia de clúster a clúster, ¿puedo configurar un clúster de UN SOLO nodo con gran cantidad de almacenamiento para que actúe como mi réplica fuera del sitio? No me importa su rendimiento, solo su existencia y la capacidad de mantener todo el conjunto de datos. (Los tiempos de restauración no son una preocupación ya que este grupo no es crítico para las misiones) ¿Se puede programar la copia para que solo se ejecute una vez al día, etc.?

2) Para la opción SMB o NAS, ¿cómo funciona esto? ¿Es necesario formatear el disco de destino HDFS? ¿Tendré que hacer una copia de seguridad de cada uno de los tres nodos de trabajo en su totalidad? ¿O hay algún script inteligente que pueda hacer una copia de seguridad del conjunto de datos sin la paridad? No estoy muy familiarizado con esta solución y solo he visto referencias a ella en línea. No he tenido mucha suerte en localizar recursos o información.

También estoy abierto a cualquier otra opción de DR para Hadoop HDFS. Nuestro objetivo es obtener una copia completa del conjunto de datos HDFS para que podamos usarlo para recuperarnos de un rack o pérdida del sitio.

¡Gracias!


7
2017-08-13 23:32


origen




Respuestas:


Para la opción 1, podrías usar distcp para copiar de un clúster a otro. El clúster de copia de seguridad podría ser un servidor de un solo nodo siempre que tenga un namenode y un datanode ejecutándose en él. Básicamente, estás mirando a correr en modo pseudo distribuido. Para ejecutar el distcp periódicamente,

Para hacer esto periódicamente, crearía un script de shell que hiciera algo como lo siguiente:

  1. comprobar si hay un archivo de bloqueo
  2. si existe el archivo de bloqueo, rescata (y, opcionalmente, envía una alerta si el archivo de bloqueo ha existido demasiado tiempo, esto significaría que un distcp anterior salió mal y no se desbloqueó o que el distcp anterior está tomando más tiempo de lo que esperas) ).
  3. Si no existe, toque el archivo de bloqueo.
  4. corre el distcp
  5. verifique el estado del trabajo distcp para verificar que se completó correctamente.
  6. desbloquear.

Estoy sugiriendo el uso de un archivo de bloqueo porque no desea que se ejecuten múltiples distcp en esta configuración particular. Acabarás dominando tu clúster pseudo distribuido. También establecería el factor de replicación predeterminado en 1 en la configuración de clúster pseudo-distribuida. No es necesario duplicar los bloques si no es necesario (sin embargo, no recuerdo si un pseudo cluster hace esto por defecto; YMMV).

Se puede hacer que distcp funcione como un rsync tonto, solo copiando las cosas que cambian.

Para la opción 2, puede usar hadoop fs -copyToLocal. La desventaja de esto es que es una copia completa cada vez, por lo que si copia /, copia todo cada vez que se ejecuta.

Para los metadatos de hadoop, querrá copiar el archivo fsimage y edits. Este blog tiene una visión bastante razonable de qué hacer. Está orientado hacia el uso de Cloudera, pero debería ser básicamente el mismo para cualquier clúster Hadoop 1.0 o 2.0.


1
2017-08-20 04:52





Hdfs se replica por diseño, generalmente en 3 nodos como mínimo, por lo que si tiene 3 nodos, los datos ya están replicados en los tres.

Por supuesto, estos nodos deben estar en diferentes servidores físicos. Entonces no es probable que falle o los 3 deben fallar a la vez.

Para replicar sus hdfs actuales, simplemente puede agregar nodos al servicio de hdfs en otros servidores y los datos se replicarán. Para asegurarse de que los datos se replican más que los 3 nodos originales, aumente la configuración de tolerancia a fallas a 4 o más nodos. Thrn Apague los otros nodos en la unidad única y sus datos estarán en todos los nodos que queden activos.


1
2017-11-28 17:48



Aunque es un error común, la la replicación NO es una copia de seguridad. Solo está diseñado para aumentar la eficiencia y garantizar la continuidad en caso de fallas en el hardware. - Un ejemplo simple de por qué esto no es una copia de seguridad adecuada: si elimina archivos accidentalmente, se eliminarán en todos los nodos y no podrá recuperarlos normalmente. - Dennis Jaheruddin