Tengo que copiar 400G de archivos de un volumen de almacenamiento de bloque elástico a un cubo s3 ... Esos son unos 300k archivos de ~ 1Mb
He intentado s3cmd y s3fuse , ambos son muy, muy lento .. RAN s3cmd para un día completo, indican que se terminó la copia, y cuando comprobé el cubo, no hubiera pasado nada (supongo que algo salió mal, pero al menos s3cmd nunca se quejó de nada)
S3Fuse está trabajando para otro día completo y copió menos del 10% de los archivos ...
¿Hay una mejor solución para esto?
Estoy ejecutando Linux (ubuntu 12.04) por supuesto
Respuestas:
Hay varios factores clave que determinan el rendimiento de EC2 a S3:
En los casos de transferencia de grandes cantidades de datos, puede ser económicamente práctico usar una instancia de cómputo de clúster, ya que la ganancia efectiva en el rendimiento (> 10x) es mayor que la diferencia en el costo (2-3x).
Si bien las ideas anteriores son bastante lógicas (aunque el límite por subproceso puede no serlo), es bastante fácil encontrar puntos de referencia que las respalden. Uno particularmente detallado se puede encontrar aquí .
Usar entre 64 y 128 cargas paralelas (simultáneas) de objetos de 1 MB debería saturar el enlace ascendente de 1 Gbps que tiene un m1.xlarge e incluso debería saturar el enlace ascendente de 10 Gbps de una instancia de cómputo de clúster (cc1.4xlarge).
Si bien es bastante fácil cambiar el tamaño de la instancia, los otros dos factores pueden ser más difíciles de administrar.
fuente
Entonces, después de muchas pruebas, s3-parallel-put hizo el truco increíblemente. Claramente, la solución si necesita cargar muchos archivos a S3. Gracias a cyberx86 por los comentarios.
fuente
Ajuste los valores de configuración de AWS CLI S3 según http://docs.aws.amazon.com/cli/latest/topic/s3-config.html .
¡Lo siguiente aumentó una velocidad de sincronización S3 de al menos 8x!
Ejemplo:
fuente
Escribí una aplicación de consola optimizada en C # ( CopyFasterToS3 ) para hacer esto. Utilicé en EBS vol, en mi caso tenía 5 carpetas con más de 2 millones de archivos en una cantidad de 20 Gb. El script se ejecutó en menos de 30 minutos.
En este artículo, mostré cómo usar una función recursiva con paralelo. Puedes transcribirlo a otro idioma.
¡Buena suerte!
fuente
También hay: s3funnel , que parece muy antiguo (2008) y algunos errores abiertos, pero que aún se incluye en la lista de Amazon: amzn-lnk
fuente
Pruebe s4cmd en su lugar, es realmente más rápido que s3cmd. Su dirección: https://github.com/bloomreach/s4cmd
fuente
Intente usar s3-cli en lugar de s3cmd. ¡Lo usé en lugar de s3cmd para cargar archivos en mi bucket de s3 e hizo que mi implementación fuera más rápida en casi 17 minutos (de 21 a 4 minutos)!
Aquí está el enlace: https://github.com/andrewrk/node-s3-cli
fuente