Cuotas de solicitudes

El servicio de Dataflow administra por completo los recursos en Google Cloud por trabajo. Esto incluye activar y desactivar instancias de Compute Engine (también llamadas workers o VMs) y acceder a los buckets de Cloud Storage de tu proyecto para la E/S y la etapa de pruebas de archivos temporales. Sin embargo, si la canalización interactúa con tecnologías de almacenamiento de datos de Google Cloud, como BigQuery y Pub/Sub, debes administrar los recursos y la cuota de esos servicios tú mismo.

Dataflow usa una ubicación que proporciona el usuario en Cloud Storage de forma específica para archivos de etapa de pruebas. Esta ubicación está bajo tu control y debes asegurarte de que su vida útil se mantenga siempre que algún trabajo realice operaciones de lectura en ella. Puedes volver a usar la misma ubicación de etapa de pruebas para múltiples ejecuciones de trabajos, ya que el almacenamiento en caché integrado del SDK puede acelerar el tiempo de inicio de tus trabajos.

Empleos

Puedes ejecutar hasta 25 trabajos de Dataflow simultáneos por proyecto de Google Cloud; sin embargo, este límite se puede aumentar si te comunicas con la Asistencia de Google Cloud. Para obtener más información, consulta Cuotas.

En la actualidad, el servicio de Dataflow se limita a procesar solicitudes de trabajos JSON que tengan un tamaño de 20 MB o menor. El tamaño de la solicitud de trabajo está vinculado en especial a la representación JSON de tu canalización; una canalización más grande implica una solicitud más grande.

Para estimar el tamaño de la solicitud JSON de tu canalización, ejecuta tu canalización con la siguiente opción:

Java

--dataflowJobFile=<path to output file>

Python

--dataflow_job_file=<path to output file>

Comienza a usarlo

Por el momento, no se admite la estimación del tamaño de la carga útil de JSON de un trabajo con una marca en Go.

Este comando escribe una representación JSON de tu trabajo en un archivo. El tamaño del archivo serializado es una estimación apropiada del tamaño de la solicitud; el tamaño real será un poco mayor debido a que se incluye información adicional en la solicitud.

Para obtener más información, consulta la página de solución de problemas para “413 Entidad de solicitud demasiado grande” / “El tamaño de la representación JSON serializada de la canalización excede el límite permitido”.

Además, el tamaño del grafo de tu trabajo no debe superar los 10 MB. Para obtener más información, consulta la página sobre “El grafo del trabajo es demasiado grande. Vuelve a intentarlo con un grafo de trabajo más pequeño, o divide tu trabajo en dos o más trabajos más pequeños”.

Trabajadores

En la actualidad, el servicio de Dataflow permite un máximo de 1,000 instancias de Compute Engine por trabajo. Para los trabajos por lotes, el tipo de máquina predeterminado es n1-standard-1. En el caso de los trabajos de transmisión, el tipo de máquina predeterminado para los trabajos que usan Streaming Engine es n1-standard-2 y para los trabajos que no usan Streaming Engine es n1-standard-4. Por lo tanto, cuando se usan los tipos de máquina predeterminados, el servicio de Dataflow puede asignar hasta 4,000 núcleos por trabajo. Si necesitas más núcleos para el trabajo, puedes seleccionar un tipo de máquina más grande.

No debes intentar administrar ni interactuar directamente con el grupo de instancias administrado de Compute Engine; el servicio de Dataflow se encargará de eso. No se permite alterar de forma manual ningún recurso de Compute Engine asociado con el trabajo de Dataflow.

Puedes usar cualquiera de las familias de tipos de máquinas de Compute Engine disponibles, así como los tipos de máquinas personalizados. Para obtener mejores resultados, usa tipos de máquina n1. Los tipos de máquinas de núcleo compartido, como los trabajadores de la serie f1 y g1, no son compatibles con el Acuerdo de Nivel de Servicio de Dataflow.

Para asignar memoria adicional por subproceso de trabajador, usa un tipo personalizado de máquina con memoria extendida. Por ejemplo, custom-2-15360-ext es un tipo de máquina n1 con 2 CPU y 15 GB de memoria. Dataflow considera la cantidad de CPU en una máquina a fin de determinar la cantidad de subprocesos de trabajador por VM de trabajador. Si tu canalización procesa trabajos que requieren mucha memoria, un tipo personalizado de máquina con memoria extendida puede brindar más memoria por subproceso de trabajador. Para obtener más información, consulta Crea una instancia de VM interrumpible.

Dataflow factura por la cantidad de CPU virtuales y GB de memoria en los trabajadores. La facturación es independiente de la familia de tipos de máquinas. Puedes especificar un tipo de máquina para tu canalización si configuras el parámetro de ejecución apropiado cuando se crea la canalización.

Java

Para cambiar el tipo de máquina, establece la opción --workerMachineType.

Python

Para cambiar el tipo de máquina, establece la opción --worker_machine_type.

Go

Para cambiar el tipo de máquina, establece la opción ‑‑worker_machine_type.

Cuota de recursos

El servicio de Dataflow verifica que el proyecto de Google Cloud tenga la cuota de recursos de Compute Engine necesaria para ejecutar el trabajo, a fin de iniciar el trabajo y escalar al número máximo de instancias de trabajador. Tu trabajo no se iniciará si no hay suficiente cuota de recursos disponible.

Si el trabajo de Dataflow implementa máquinas virtuales de Compute Engine como un grupo de instancias administrado, deberás asegurarte de que el proyecto cumpla algunos requisitos de cuota adicionales. En particular, el proyecto necesitará uno de los siguientes tipos de cuota para cada trabajo de Dataflow simultáneo que desees ejecutar:

  • Un grupo de instancias por trabajo
  • Un grupo de instancias administrado por trabajo
  • Una plantilla de instancias por trabajo

Precaución: No se recomienda ni se admite el cambio manual de la plantilla de instancias o del grupo de instancias administrado. En su lugar, usa los parámetros de configuración de canalización de Dataflow.

La característica Ajuste de escala automático horizontal de Dataflow está limitada por la cuota disponible de Compute Engine del proyecto. Si tu trabajo tiene una cuota suficiente cuando comienza, pero otro trabajo usa el resto de la cuota disponible de tu proyecto, el primer trabajo se ejecutará pero no podrá escalar por completo.

Sin embargo, el servicio de Dataflow no administra los aumentos de cuota de los trabajos que excedan las cuotas de recursos del proyecto. Tú tienes la responsabilidad de realizar las solicitudes necesarias para la cuota de recursos adicionales, en la que puedes usar la consola de Google Cloud.

Direcciones IP

De forma predeterminada, Dataflow asigna direcciones IP públicas y privadas a las VMs de trabajador. Una dirección IP pública cumple con uno de los criterios de acceso a Internet, pero una dirección IP pública también se considera en la cuota de direcciones IP externas.

Si las VMs de trabajador no necesitan acceso a la Internet pública, considera usar solo direcciones IP internas que no se descuentan de tu cuota externa. Para obtener más información para configurar direcciones IP, consulta los siguientes recursos:

Trabajadores inactivos

Si los trabajadores de un trabajo determinado no presentan suficiente actividad durante un período de una hora, el trabajo fallará. La inactividad de los trabajadores puede generar problemas de administración de dependencias. Por ejemplo, si un trabajador encuentra un problema mientras instala dependencias para una imagen de contenedor personalizada, es posible que el trabajador no pueda iniciar ni progresar. La falta de progreso podría hacer que el trabajo falle. Para obtener más información, consulta:

Recursos de discos persistentes

El servicio de Dataflow está limitado a 15 discos persistentes por instancia de trabajador cuando se ejecuta un trabajo de transmisión. Cada disco persistente pertenece a una máquina virtual de Compute Engine individual. Tu trabajo no puede tener más trabajadores que discos persistentes; la asignación de recursos mínima es una proporción de 1:1 entre trabajadores y discos.

Los trabajos que usan Streaming Engine usan discos de arranque de 30 GB. Los trabajos que usan Dataflow Shuffle usan discos de arranque de 25 GB. El tamaño predeterminado para cada disco persistente que no usa estas ofertas es de 250 GB en modo por lotes y 400 GB en modo de transmisión.

Ubicaciones

De forma predeterminada, el servicio de Dataflow implementa los recursos de Compute Engine en la zona us-central1-f de la región us-central1. Puedes anular esta configuración si especificas el parámetro --region. Si necesitas usar una zona específica para tus recursos, usa el parámetro --zone cuando creas tu canalización. Sin embargo, recomendamos que solo especifiques la región y dejes la zona sin especificar. Esto permite que el servicio de Dataflow seleccione de forma automática la mejor zona dentro de la región en función de la capacidad de zona disponible en el momento de la solicitud de creación de trabajo. Para obtener más información, consulta la documentación de las regiones de Dataflow.