Gestionando tu almacenamiento de datos en la nube con Rclone

Mejorando tu gestión de almacenamiento en la nube con Rclone

Cómo optimizar la transferencia de datos entre múltiples sistemas de almacenamiento de objetos

Foto de Tom Podmore en Unsplash

A medida que las empresas dependen cada vez más de soluciones de almacenamiento basadas en la nube, es imperativo que tengan las herramientas y técnicas adecuadas para la gestión efectiva de sus big data. En publicaciones anteriores (por ejemplo, aquí y aquí) hemos explorado varios métodos diferentes para recuperar datos de almacenamiento en la nube y hemos demostrado su efectividad en diferentes tipos de tareas. Descubrimos que la herramienta más óptima puede variar según la tarea específica en cuestión (por ejemplo, formato de archivo, tamaño de los archivos de datos, patrón de acceso a los datos) y las métricas que deseamos optimizar (por ejemplo, latencia, velocidad o costo). En esta publicación, exploramos otra herramienta popular para la gestión de almacenamiento basado en la nube, a veces referida como “la navaja suiza del almacenamiento en la nube”: la utilidad de línea de comandos rclone. Compatible con más de 70 proveedores de servicios de almacenamiento, rclone admite funcionalidades similares a las aplicaciones de gestión de almacenamiento específicas del proveedor, como AWS CLI (para Amazon S3) y gsutil (para Google Storage). ¿Pero funciona lo suficientemente bien como para ser una alternativa viable? ¿Existen situaciones en las que rclone sería la herramienta elegida? En las siguientes secciones demostraremos el uso de rclone, evaluaremos su rendimiento y destacaremos su valor en un caso de uso particular: la transferencia de datos entre diferentes sistemas de almacenamiento de objetos.

Advertencias

Esta publicación no pretende, en ningún caso, reemplazar la documentación oficial de rclone. Tampoco pretende ser un respaldo para el uso de rclone u otras herramientas que mencionemos. La mejor elección para la gestión de datos basada en la nube dependerá en gran medida de los detalles de su proyecto y debe realizarse después de una exhaustiva prueba específica del caso de uso. Asegúrese de volver a evaluar las afirmaciones que hacemos con las herramientas más actualizadas disponibles en el momento en que esté leyendo esto.

Recuperación de datos de almacenamiento en la nube con Rclone

El siguiente comando de línea de comandos utiliza rclone sync para sincronizar el contenido de una ruta de almacenamiento de objetos basada en la nube con un directorio local. Este ejemplo demuestra el uso del servicio de almacenamiento Amazon S3, pero también podría haber utilizado otro servicio de almacenamiento en la nube.

rclone sync -P \            --transfers 4 \            --multi-thread-streams 4 \            S3store:my-bucket/my_files ./my_files 

El comando rclone tiene docenas de flags para programar su comportamiento. El flag -P muestra el progreso de la transferencia de datos, incluida la tasa de transferencia y el tiempo total. En el comando anterior, hemos incluido dos (de los muchos) controles que pueden afectar el rendimiento de ejecución de rclone: El flag transfers determina el número máximo de archivos para descargar simultáneamente y multi-thread-streams determina el número máximo de hilos que se utilizarán para transferir un solo archivo. Aquí hemos dejado ambos con sus valores predeterminados (4).

La funcionalidad de rclone depende de la definición adecuada del archivo de configuración de rclone. A continuación, mostramos la definición de la ubicación remota S3store utilizada en el comando de línea anterior.

[S3store]    type = s3    provider = AWS    access_key_id = <id>    secret_access_key = <key>    region = us-east-1

Ahora que hemos visto rclone en acción, surge la pregunta de si ofrece algún valor sobre otras herramientas de gestión de almacenamiento en la nube que existen, como el popular AWS CLI. En las próximas dos secciones evaluaremos el rendimiento de rclone en comparación con algunas de sus alternativas en dos escenarios que hemos explorado en detalle en publicaciones anteriores: 1) descarga de un archivo de 2 GB y 2) descarga de cientos de archivos de 1 MB.

Caso de uso 1: Descarga de un archivo grande

El siguiente comando utiliza el AWS CLI para descargar un archivo de 2 GB de Amazon S3. Esto es solo uno de los muchos métodos que evaluamos en una publicación anterior. Utilizamos el comando de tiempo de Linux para medir el rendimiento.

time aws s3 cp s3://my-bucket/2GB.bin .

El tiempo de descarga reportado fue aproximadamente de 26 segundos (es decir, ~79 MB/s). Ten en cuenta que este valor se calculó en nuestra propia PC local y puede variar mucho de un entorno de ejecución a otro. El comando equivalente de rclone copy aparece a continuación:

rclone sync -P S3store:my-bucket/2GB.bin .

En nuestro entorno, encontramos que el tiempo de descarga de rclone fue más de dos veces más lento que el del estándar AWS CLI. Es muy probable que esto se pueda mejorar significativamente mediante la adecuada configuración de las opciones de control de rclone.

Caso de uso 2: Descarga de una gran cantidad de archivos pequeños

En este caso de uso evaluamos el rendimiento en tiempo de ejecución de la descarga de 800 archivos relativamente pequeños de 1 MB cada uno. En una publicación anterior del blog discutimos este escenario en el contexto de la transmisión de muestras de datos a una carga de trabajo de entrenamiento de aprendizaje profundo y demostramos el rendimiento superior de s5cmd en modo beast. En el modo beast, creamos un archivo con una lista de operaciones de archivos-objeto que s5cmd realiza utilizando múltiples trabajadores paralelos (256 de forma predeterminada). A continuación, se muestra la opción de modo beast de s5cmd:

time s5cmd --run cmds.txt

El archivo cmds.txt contiene una lista de 800 líneas en el siguiente formato:

cp s3://my-bucket/small_files/<i>.jpg <local_path>/<i>.jpg

El comando s5cmd tardó un tiempo promedio de 9.3 segundos (promediado en diez pruebas).

Rclone admite una funcionalidad similar al modo beast de s5cmd con la opción de línea de comandos files-from. A continuación, ejecutamos rclone copy en nuestros 800 archivos con el valor de transfers establecido en 256 para igualar la configuración de concurrencia predeterminada de s5cmd.

rclone -P --transfers 256 --files-from files.txt S3store:my-bucket /my-local

El archivo files.txt contiene 800 líneas en el siguiente formato:

small_files/<i>.jpg

La copia de nuestros 800 archivos con rclone tardó un promedio de 8.5 segundos, ligeramente menos que s5cmd (promediado en diez pruebas).

Reconocemos que los resultados demostrados hasta ahora pueden no ser suficientes para convencerte de preferir rclone sobre tus herramientas existentes. En la próxima sección describiremos un caso de uso que resalta una de las ventajas potenciales de rclone.

Transferencia de datos entre sistemas de almacenamiento de objetos

Hoy en día no es raro que los equipos de desarrollo mantengan sus datos en más de un almacén de objetos. La motivación detrás de esto podría ser la necesidad de protegerse contra la posibilidad de una falla en el almacenamiento o la decisión de utilizar ofertas de procesamiento de datos de múltiples proveedores de servicios en la nube. Por ejemplo, su solución para el desarrollo de IA podría depender de entrenar sus modelos en AWS utilizando datos en Amazon S3 y ejecutar análisis de datos en Microsoft Azure utilizando los mismos datos almacenados en Azure Storage. Además, es posible que desee mantener una copia de sus datos en una infraestructura de almacenamiento local como FlashBlade, Cloudian o VAST. Estas circunstancias requieren la capacidad de transferir y sincronizar sus datos entre múltiples almacenes de objetos de manera segura, confiable y oportuna.

Algunos proveedores de servicios en la nube ofrecen servicios dedicados para estos fines. Sin embargo, no siempre satisfacen las necesidades precisas de su proyecto o pueden no brindarle el nivel de control que desea. Por ejemplo, Google Storage Transfer se destaca por la migración rápida de todos los datos dentro de una carpeta de almacenamiento especificada, pero no admite (en el momento de escribir esto) la transferencia de un subconjunto específico de archivos desde ella.

Otra opción que podríamos considerar sería aplicar nuestra gestión de datos existente para este propósito. El problema con esto es que herramientas como AWS CLI y s5cmd no admiten (en el momento de escribir esto) la especificación de diferentes configuraciones de acceso y credenciales de seguridad para los sistemas de almacenamiento de origen y destino. Por lo tanto, migrar datos entre ubicaciones de almacenamiento requiere transferirlos a una ubicación intermedia (temporal). En el siguiente comando combinamos el uso de s5cmd y AWS CLI para copiar un archivo de Amazon S3 a Google Storage a través de la memoria del sistema y usando la canalización de Linux:

s5cmd cat s3://mi-bucket/archivo \      | aws s3 cp --endpoint-url https://storage.googleapis.com      --profile gcp - s3://gs-bucket/archivo

Si bien esta es una manera legítima, aunque torpe, de transferir un solo archivo, en la práctica, es posible que necesitemos la capacidad de transferir muchos millones de archivos. Para admitir esto, necesitaríamos agregar una capa adicional para generar y administrar múltiples trabajadores/procesadores paralelos. Las cosas podrían ponerse feas bastante rápido.

Transferencia de datos con Rclone

A diferencia de herramientas como AWS CLI y s5cmd, rclone nos permite especificar diferentes configuraciones de acceso para el origen y el destino. En el siguiente archivo de configuración de rclone, agregamos configuraciones para el acceso a Google Cloud Storage:

[S3store]    type = s3    provider = AWS    access_key_id = <id>    secret_access_key = <key>[GSstore]    type = google cloud storage    provider = GCS    access_key_id = <id>    secret_access_key = <key>    endpoint = https://storage.googleapis.com

La transferencia de un solo archivo entre sistemas de almacenamiento tiene el mismo formato que copiarlo a un directorio local:

rclone copy -P S3store:mi-bucket/archivo GSstore:gs-bucket/archivo

Sin embargo, el verdadero poder de rclone radica en combinar esta función con la opción files-from descrita anteriormente. En lugar de tener que orquestar una solución personalizada para paralelizar la migración de datos, podemos transferir una larga lista de archivos con un solo comando:

rclone copy -P --transfers 256 --files-from files.txt \            S3store:mi-bucket/archivo GSstore:gs-bucket/archivo

En la práctica, podemos acelerar aún más la migración de datos dividiendo la lista de archivos de objetos en listas más pequeñas (por ejemplo, con 10,000 archivos cada una) y ejecutando cada lista en un recurso informático separado. Si bien el impacto preciso de este tipo de solución variará de un proyecto a otro, puede proporcionar un impulso significativo a la velocidad y eficiencia de su desarrollo.

Resumen

En esta publicación, hemos explorado la gestión de almacenamiento en la nube utilizando rclone y demostrado su aplicación al desafío de mantener y sincronizar datos en múltiples sistemas de almacenamiento. Sin duda, existen muchas soluciones alternativas para la transferencia de datos, pero no hay duda de la conveniencia y elegancia del método basado en rclone.

Este es solo uno de los muchos artículos que hemos escrito sobre el tema de maximizar la eficiencia de las soluciones de almacenamiento en la nube. Asegúrate de revisar algunos de nuestros otros artículos sobre este importante tema.

We will continue to update Zepes; if you have any questions or suggestions, please contact us!

Share:

Was this article helpful?

93 out of 132 found this helpful

Discover more

Inteligencia Artificial

Aprende IA Generativa con Google

Aprende IA Generativa con los 10 cursos gratuitos de Google. Domina los modelos de difusión, la arquitectura codifica...

Inteligencia Artificial

Asistentes de correo electrónico AI más valorados (noviembre de 2023)

Translate this html (keep the html code in the result) to Spanish: Los asistentes de correo electrónico de inteligenc...

Inteligencia Artificial

Ajustando la Tela de la IA Generativa FABRIC es un enfoque de IA que personaliza los modelos de difusión con retroalimentación iterativa

La inteligencia artificial generativa es un término con el que todos estamos familiarizados en la actualidad. Han ava...

Inteligencia Artificial

Automatizando la Cadena del Pensamiento Cómo la IA puede impulsarse a sí misma a razonar

El método de generación automática de Auto-CoT permite que los modelos de lenguaje generen automáticamente sus propia...

Aprendizaje Automático

De Sonido a Vista Conoce AudioToken para la Síntesis de Audio a Imagen.

Los modelos generativos neuronales han transformado la forma en que consumimos contenido digital, revolucionando vari...