Cómo transferir conjuntos de macrodatos

Actualización: 11 de octubre de 2017

En este artículo encontrarás una descripción general de alto nivel sobre cómo transferir datos a Cloud Storage; encontrarás ayuda para elegir el método que mejor se ajuste a tus necesidades, y recomendaciones sobre transferencias digitales en la red con la herramienta gsutil.

Por lo general, cuando migras una operación de una empresa a Google Cloud Platform (GCP), necesitas transferir grandes cantidades de datos a Cloud Storage. Cloud Storage es un servicio de depósito de objetos durable y de alta disponibilidad; no posee un límite para la cantidad de archivos que se pueden almacenar en el depósito, pero el límite de tamaño máximo de cada archivo es de 5 TB. Cloud Storage está optimizado para funcionar con otros servicios de GCP como BigQuery y Cloud Dataflow, por lo que te resultará fácil realizar tareas de ingeniería y análisis de datos basados en la nube con una arquitectura de GCP más amplia.

Para sacarle el máximo provecho a este artículo, deberías poder responder las siguientes preguntas:

  • ¿Cuántos datos necesitas transferir?
  • ¿En qué lugar se encuentran ubicados tus datos? ¿Se encuentran en un centro de datos o residen en los servidores de otro proveedor de servicios en la nube?
  • ¿Cuánto ancho de banda de red hay disponible en la ubicación de tus datos?
  • ¿Debes transferir tus datos una sola vez o de forma periódica?

Cómo realizar una estimación de costos

Hoy en día, no se realizan cargos por la entrada de tráfico cuando mueves tus datos a Cloud Storage. La herramienta gsutil y el Servicio de transferencia de almacenamiento se ofrecen sin cargo. Para ver los precios actualizados, ve a la página de precios de la red de GCP.

Luego de que tus datos se transfieren, se te cobrará por el uso de Cloud Storage según el almacenamiento, la red y las operaciones. También debes considerar los costos que implican las diferentes clases de almacenamiento y decidir cuál es la mejor para tu caso práctico. La interfaz de la API de Cloud Storage es independiente de la clase, por lo que permite que todas las clases de almacenamiento tengan el mismo acceso a la API. Dirígete a Precios de Cloud Storage para obtener más información.

Los precios de Transfer Appliance incluyen la tarifa por uso, los costos de envío y los posibles cargos por retraso. La transferencia desde Transfer Appliance hacia Cloud Storage se ofrece sin cargo. Luego de transferir los datos a través de Transfer Appliance, se te cobrarán las tarifas normales de uso de Cloud Storage. Para obtener más información, consulta la política de precios de Transfer Appliance.

Tu solución de transferencia de datos también puede implicar costos ajenos a Google. Algunos de esos costos son:

  • Cargos de salida y de operación de un proveedor de origen
  • Cargos de servicios de terceros por transferencias en línea o sin conexión
  • Cargos de red de terceros

Cómo seleccionar el método de transferencia de datos correcto

En el siguiente diagrama se muestra cada método de transferencia de datos a Cloud Storage.

Cómo pasar los datos a Cloud Storage

  • El eje x representa lo accesible que es, o lo "cerca" que se encuentra la fuente de datos a GCP. En este contexto, un origen con una conexión a Internet excelente se encuentra a poca distancia, mientras que un origen sin conexión a Internet se encuentra lejos.
  • El eje Y representa la cantidad de datos que van a transferirse.

Puedes utilizar el siguiente diagrama para ayudarte a navegar por el resto de este artículo, y guiarte en tu proceso de selección de herramienta.

cómo seleccionar tu herramienta

Cómo definir la "cercanía"

No hay una definición concreta para qué tan "cerca" se encuentran tus datos a GCP. Básicamente, esto se define por el tamaño de los datos, el ancho de banda de la red y la naturaleza del caso práctico.

Utiliza el siguiente diagrama para realizar una estimación del tiempo de transferencia de datos según el tamaño de los datos y del ancho de banda de tu red. Analiza siempre la transferencia en el contexto de un caso práctico particular. Puede que en un flujo de trabajo sea inaceptable transferir un TB de datos en un período de tres horas, pero sí resulte aceptable transferir la misma cantidad de datos en 30 horas en otro flujo de trabajo.

Cómo estimar el tiempo de la transferencia

Cómo acercar tus datos a GCP

En esta sección se analizan las formas de mejorar la "cercanía" a través de dos factores principales: el tamaño de los datos y el ancho de banda de la red.

Cómo reducir el tamaño de los datos

Puedes reducir el tamaño de tus datos a través de una anulación de duplicados y de una compresión de los datos en el origen. Si anulas los duplicados de tus datos y los comprimes, se minimiza la cantidad que necesitas transferir por la red y, como resultado, se reduce el tiempo que tarda la transferencia y el costo de almacenamiento. Si tus datos están compuestos por muchos archivos pequeños, comprimirlos y agruparlos con una herramienta como tar -cvzf hará que las transferencias sean significativamente más rápidas cuando utilices gsutil o el Servicio de transferencia de almacenamiento.

La compresión tiene una desventaja: puede requerir mucho tiempo y consumo de CPU. Si almacenas archivos con el propósito de archivarlos, considera comprimirlos antes de transferirlos a Cloud Storage. Si tu intención es utilizar los archivos transferidos en tu aplicación, quizás lo que hagas es descomprimir tus datos en Cloud Storage. En ese caso, deberías transferir los archivos sin comprimirlos.

Como guía general, comprimir los datos puede dar como resultado un índice de compresión de 4:1. Por lo general, la mejor opción para reducir el tamaño de los datos binarios y multimedia, como JPEG o MP3, son los algoritmos de compresión con pérdidas.

Cuando sea posible, es preferible que utilices formatos de archivo compactos, como los archivos Avro, que son intrínsecamente compactos.

Cómo aumentar el ancho de banda de red

Los métodos para aumentar tu ancho de banda de red dependen de cómo eliges conectarte a GCP. Hay tres maneras principales para conectarse a GCP:

  • Conexión a Internet pública
  • Intercambio de tráfico directo
  • Cloud Interconnect

Cómo conectarse a través de una conexión a Internet pública

Cuando utilizas una conexión a Internet pública, la capacidad de procesamiento de la red es impredecible porque está limitada por la capacidad y el enrutamiento del proveedor de servicios de Internet (ISP). El ISP puede ofrecer un Acuerdo de Nivel de Servicio (ANS) limitado, o ninguno en absoluto. Por otro lado, estas conexiones tienen costos relativamente bajos.

Cómo conectarse a través del intercambio de tráfico directo

Puedes utilizar el intercambio de tráfico directo para acceder a la red de Google y minimizar los saltos de la red. Si utilizas esta opción, puedes intercambiar tráfico de Internet entre tu red y los puntos de presencia periféricos (PoP). Esto disminuye la cantidad de saltos entre tu red y la de Google.

Cómo conectarse a través de Cloud Interconnect

Cloud Interconnect ofrece una conexión directa a GCP a través de uno de los proveedores de servicios de Cloud Interconnect. Este servicio otorga una capacidad de procesamiento más consistente en las transferencias grandes de datos y, por lo general, incluye un ANS para la disponibilidad y el rendimiento de la red. Para obtener más información, directamente contacta a un proveedor de servicios.

Cómo transferir datos a GCP

Puede ser que transfieras tus datos desde otro servicio basado en la nube o desde un centro de datos local. El método de transferencia que debes utilizar depende de qué tan "cerca" se encuentren tus datos a GCP. En esta sección se abarcan las siguientes opciones:

  • Transferencia desde la nube: muy cerca
  • Transferencia desde un almacenamiento de colocación o local: cerca
  • Transferencia desde lejos

Cómo transferir desde la nube

Si tu fuente de datos es un depósito de Amazon S3, una ubicación HTTP/HTTPS o un depósito de Cloud Storage, puedes utilizar el Servicio de transferencia de almacenamiento para transferir tus datos.

Cómo transferir desde un almacenamiento de colocación o local

Si operas desde una instalación de colocación o desde un centro de datos local que se encuentra relativamente "cerca" a GCP, transfiere tus datos con gsutil o con una herramienta de terceros.

gsutil

La herramienta gsutil es una utilidad de línea de comandos de código abierto disponible para Windows, Linux y Mac.

  • Procesamiento en varios subprocesos: útil para transferir grandes cantidades de archivos.
  • Cargas compuestas en paralelo: divide los archivos grandes, transfiere los fragmentos en paralelo y los concatena en el destino.
  • Reintentar: se aplica a las fallas temporales de la red, y a los códigos de error HTTP/429 y 5xx.
  • Reanudar: la transferencia se reanuda luego de un error.
Limitaciones

La herramienta gsutil no posee compatibilidad integrada para la regulación de la red. Debes utilizarla junto con una herramienta como Trickle para controlar el tráfico en la capa de red. Si cuentas con privilegios a nivel del sistema operativo y te sientes seguro para realizar ajustes de bajo nivel, puedes mejorar el tiempo de transferencia a través de un ajuste de los parámetros TCP o del aumento de la tasa de capacidad de procesamiento de la transferencia.

La herramienta gsutil es buena para transferencias de una sola vez o iniciadas de forma manual. Si necesitas establecer una canalización en una transferencia de datos en proceso, debes ejecutar gsutil como un trabajo cron, o utilizar otras herramientas de administración de flujos de trabajo como Airflow para organizar el trabajo.

Cómo encriptar tus datos

La herramienta gsutil encripta el tráfico en transición a través de una encriptación en la capa de transporte (HTTPS). Cloud Storage almacena los datos de forma encriptada y te permite utilizar tus propias claves de encriptación. Para ver más recomendaciones sobre la seguridad, ve a consideraciones sobre la seguridad y la privacidad.

Cómo transferir en varios subprocesos

Cuando utilizas un proceso de gsutil de un solo subproceso para transferir varios archivos por una red, puede que la transferencia no utilice todo el ancho de banda disponible. En el siguiente diagrama se muestra una transferencia de un solo subproceso, de cuatro archivos. Cada archivo debe esperar a que se complete la transferencia del archivo anterior, lo que causa un desperdicio del ancho de banda en desuso.

Transferencia de un solo subproceso

Puedes utilizar más ancho de banda disponible y acelerar la transferencia de datos si copias los archivos en paralelo. En el siguiente diagrama se ilustra una transferencia de varios procesos, de cuatro archivos.

Transferencia de varios subprocesos

Según la configuración predeterminada, la herramienta gsutil transfiere varios archivos a través de un solo subproceso. Para habilitar una copia de varios subprocesos, utiliza la marca -m cuando ejecutes el comando cp.

El siguiente comando copia todos los archivos de un directorio fuente a un depósito de Cloud Storage. Reemplaza [SOURCE_DIRECTORY] por tu directorio, y [BUCKET_NAME] por el nombre de tu depósito de Cloud Storage.

gsutil -m cp -r [SOURCE_DIRECTORY] gs://[BUCKET_NAME]
Cómo concatenar cargas en paralelo

Si tu idea es subir archivos grandes, gsutil te ofrece cargas compuestas en paralelo. Esta función divide cada archivo en varios componentes más pequeños y los sube en paralelo. En el siguiente diagrama se muestra la diferencia entre subir un solo archivo grande y subir el mismo archivo a través del método de cargas compuestas en paralelo.

Subir un solo archivo grande

Cargas compuestas en paralelo

Para obtener más información sobre los beneficios y desventajas de utilizar cargas compuestas en paralelo, visita la documentación del comando cp.

Cómo ajustar los parámetros de TCP

Puedes mejorar el rendimiento de las transferencias TCP a través de los siguientes parámetros de TCP. Antes de cambiar esta configuración, lee la documentación de tu sistema operativo y consulta a un experto.

  • Escalamiento de ventana de TCP (RFC 1323)

    Esta configuración permite que el tamaño de la ventana de TCP sea mayor a 16 bits a través de un factor de escalamiento. La configuración permite, potencialmente, que las transferencias de datos utilicen el mayor ancho de banda disponible. El remitente y el receptor deben admitir el escalamiento TCP de ventana para este trabajo.

  • Marcas de tiempo de TCP (RFC 1323)

    Esta configuración permite que la medición precisa del tiempo de ida y vuelta asista en lograr un rendimiento de TCP más fluido.

  • Notificación de recepción selectiva en TCP (RFC 2018)

    Esta configuración indica que el remitente solo puede volver a transmitir datos que le faltan al receptor.

  • Envío y recepción de tamaños del búfer

    Esta configuración determina cuántos datos puedes enviar o recibir antes de enviar una confirmación a la otra parte. Puedes intentar aumentar esta configuración si crees que limita el uso de tu ancho de banda.

Cómo aumentar la tasa de capacidad de procesamiento

Si aumentas el ancho de banda eficaz de tu red, puedes aumentar potencialmente la tasa de capacidad de procesamiento de transferencia de tus datos. Puedes probar la latencia de tu red si ejecutas el siguiente comando de la herramienta de diagnóstico de rendimiento de gsutil. Reemplaza [BUCKET_NAME] por el nombre de tu depósito de Cloud Storage.

gsutil perfdiag gs://[BUCKET_NAME]

Puedes utilizar gsutil para probar con distintas combinaciones de procesos del sistema operativo, subprocesos, y más. La herramienta gsutil te permite comprender mejor las opciones óptimas de configuración para tu red, y determinar, por ejemplo, si debes transferir muchos archivos pequeños o unos pocos de gran tamaño.

Puedes utilizar las siguientes opciones para definir la capacidad de procesamiento de tu red.

  • Con la opción -c se establece la cantidad de procesos.
  • Con la opción -k se establece la cantidad de subprocesos por proceso.
  • Con la opción -n se establece la cantidad de objetos.
  • Con la opción -s se establece el tamaño de cada objeto.
  • Con la opción -t wthru_file se leen los archivos del disco local para indicar el rendimiento de lectura del disco local.

Por ejemplo, el siguiente comando sube 100 archivos de 10 MB cada uno, con 2 procesos y 10 subprocesos. El comando incluye las opciones -m y -p para los subprocesos y las cargas compuestas en paralelo, respectivamente. Reemplaza [BUCKET_NAME] por el nombre de tu depósito de Cloud Storage.

gsutil perfdiag -c 2 -p both -t wthru_file -s 10M -n 100 -k 10 gs://[BUCKET_NAME]

A continuación, verás un diagnóstico de salida de muestra, que incluye un valor de escritura de capacidad de procesamiento en Mbit por segundo.

------------------------------------------------------------------------------
                        Write Throughput With File I/O
------------------------------------------------------------------------------
Copied 100 10 MiB file(s) for a total transfer size of 1000 MiB.
Write throughput: 135.15 Mbit/s.
Parallelism strategy: both

Para verificar cuántos saltos hay entre tu red y la de Google, puedes utilizar la herramienta de línea de comandos traceroute con el conjunto de marcas numéricas del sistema autónomo (AS). El siguiente comando funciona en un entorno de Linux:

traceroute -a test.storage-upload.googleapis.com

Busca AS15169, el número AS para la mayoría de los servicios de Google, incluido GCP. En el siguiente ejemplo de salida se muestra que se necesitan 6 saltos para ingresar a la red de Google.

traceroute to storage.l.googleusercontent.com (74.125.68.128), 64 hops max, 52 byte packets
     1  [AS0] XXXX.XXXXX.XXX (192.168.2.1)  1.374 ms  1.094 ms  0.982 ms
     2  [AS0] XXXX.XXXXX.XXX (192.168.1.1)  1.582 ms  1.932 ms  1.858 ms
       ...
     6  [AS15169] 108.XXX.XXX.XXX (108.XXX.XXX.XXX)  17.281 ms
       ...

Si deseas ver una lista completa de las opciones de herramientas para el diagnóstico del rendimiento, consulta la documentación de la herramienta gsutil.

Herramientas de terceros

La herramienta gsutil está disponible para muchos flujos de trabajo. Para optimizaciones más avanzadas a nivel de red o flujos de trabajo de transferencia de datos en proceso, es posible que debas utilizar herramientas más avanzadas. Para obtener información sobre herramientas más avanzadas, visita socios de Google.

Los siguientes vínculos son algunas de las opciones destacadas, en orden alfabético:

  • Aspera On Demand para Google es un protocolo patentado basado en Aspera que se adapta a flujos de trabajo de gran escala. Se encuentra disponible bajo demanda, como un modelo de licencia con suscripción.

  • Bitspeed ofrece un protocolo de transferencia de archivos optimizado, adecuado para transferir archivos grandes o grandes cantidades de archivos. Esta solución se encuentra disponible como dispositivo físico y virtual, que puedes conectar en redes existentes y sistemas de archivos.

  • Cloud FastPath de Tervela puede utilizarse para construir un flujo de administración de datos en y desde GCP. Si quieres obtener más información, ve a Cómo utilizar Cloud FastPath para crear flujos de datos.

  • Komprise puede utilizarse para analizar datos en almacenamiento local, y poder identificar los datos inactivos y moverlos a Cloud Storage. Si quieres obtener más información, visita Cómo utilizar Komprise para archivar datos inactivos en Cloud Storage.

  • Signiant ofrece Media Shuttle como una solución de software como servicio (SaaS) para transferir cualquier archivo hacia o desde cualquier parte. Signiant también ofrece Flight como una unidad de ajuste de escala automático basada en un protocolo altamente optimizado, y Manager+Agents como una herramienta de automatización para transferencias a gran escala a través de ubicaciones geográficamente dispersas.

Cómo transferir datos desde lejos

Cuando tus datos no se consideran "cercanos" a GCP, la manera de proceder es con una transferencia de datos sin conexión. Para las transferencias sin conexión, tus datos se deben cargar en un medio de almacenamiento físico, enviarse a un punto de transferencia con buena conexión de red a GCP y se deben subir desde allí.

Transfer Appliance y una gran cantidad de proveedores de servicios de terceros ofrecen varias opciones de transferencia de las que puedes elegir según tus requerimientos. Hay dos criterios de selección principales:

  • El tamaño de la transferencia
  • La naturaleza dinámica de los datos

Transfer Appliance es apropiado para transferencias grandes de datos. Sin embargo, si tienes una gran cantidad de datos dinámicos, una mejor opción puede ser Zadara Storage.

Comunícate con tu representante de Google para que te ayude a elegir la mejor opción.

Pasos siguientes

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...