¿Cómo puedo optimizar el rendimiento al cargar grandes cantidades de datos a Amazon S3?

3 minutos de lectura
0

Voy a cargar una gran cantidad de datos a Amazon Simple Storage Service (Amazon S3) o a copiar una gran cantidad de datos entre buckets de S3. ¿Cómo puedo optimizar el rendimiento de esta transferencia de datos?

Resolución

Tenga en cuenta los siguientes métodos para transferir grandes cantidades de datos hacia los buckets de Amazon S3 o desde ellos:

Cargas paralelas mediante Interfaz de la línea de comandos de AWS (AWS CLI)

**Nota:**Si recibe errores al ejecutar los comandos de AWS CLI, asegúrese de utilizar la versión más reciente de AWS CLI.

Para reducir potencialmente el tiempo total que se tarda en completar la transferencia, divida la transferencia en varias operaciones que se excluyan mutuamente. Puede ejecutar varias instancias de aws s3 cp (copiar), aws s3 mv (mover) o aws s3 sync (sincronizar) al mismo tiempo.

Una forma de dividir la transferencia es usar los parámetros --exclude e --include para separar las operaciones por nombre de archivo. Por ejemplo, digamos que desea copiar una gran cantidad de datos entre buckets. En este ejemplo, todos los nombres de archivo comienzan por un número. Puede ejecutar los siguientes comandos en dos instancias de AWS CLI.

Nota: Los parámetros --exclude e --include se procesan en el lado del cliente. Por ello, los recursos de la máquina local pueden afectar al rendimiento de la operación.

Ejecute este comando para copiar los archivos con nombres que comiencen por números del 0 al 4:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "0*" --include "1*" --include "2*" --include "3*" --include "4*"

Ejecute este comando para copiar los archivos con nombres que comiencen por números del 5 al 9:

aws s3 cp s3://srcbucket/ s3://destbucket/ --recursive --exclude "*" --include "5*" --include "6*" --include "7*" --include "8*" --include "9*"

Importante: Si debe transferir una gran cantidad de objetos (cientos de millones), considere la posibilidad de crear una aplicación personalizada con AWS SDK para efectuar la copia. Si bien AWS CLI puede hacer la copia, una aplicación personalizada podría ser más eficiente a esa escala.

AWS Snowball

Considere la posibilidad de utilizar AWS Snowball para las transferencias entre los centros de datos locales y Amazon S3, sobre todo cuando los datos superen los 10 TB.

Tenga en cuenta las siguientes limitaciones:

  • AWS Snowball no admite transferencias de datos entre buckets.
  • AWS Snowball no admite el cifrado del lado del servidor con claves administradas por AWS Key Management System (AWS KMS). Para obtener más información, consulte Encryption in AWS Snowball.

S3DistCp con Amazon EMR

Considere la posibilidad de utilizar S3DistCp con Amazon EMR para copiar datos en buckets de Amazon S3. S3DistCp permite la copia paralela de grandes volúmenes de objetos.

Importante: Dado que esta opción requiere que lance un clúster de Amazon EMR, asegúrese de revisar los precios de Amazon EMR.


Información relacionada

Prácticas recomendadas para patrones de diseño: optimizar el rendimiento de Amazon S3

OFICIAL DE AWS
OFICIAL DE AWSActualizada hace un año