El servicio Dataflow gestiona los recursos de forma integral Google Cloud
por trabajo. Esto incluye la creación y el cierre de instancias de Compute Engine (que a veces se denominan workers
o VMs
) y el acceso a los segmentos de Cloud Storage de tu proyecto para las operaciones de E/S y la organización de archivos temporales. Sin embargo, si tu canalización interactúa con tecnologías de almacenamiento de datos, como BigQuery y Pub/Sub, debes gestionar los recursos y la cuota de esos servicios. Google Cloud
Dataflow usa una ubicación proporcionada por el usuario en Cloud Storage específicamente para los archivos de almacenamiento provisional. Esta ubicación está bajo tu control y debes asegurarte de que su tiempo de vida se mantenga mientras haya alguna tarea que lea datos de ella. Puedes volver a usar la misma ubicación de almacenamiento provisional para varias ejecuciones de trabajos, ya que el almacenamiento en caché integrado del SDK puede acelerar el tiempo de inicio de tus trabajos.
Empleo
Puedes ejecutar hasta 25 tareas de Dataflow simultáneas por proyecto. Sin embargo, este límite se puede aumentar si te pones en contacto con el equipo de Asistencia de Google Cloud Platform. Google Cloud Para obtener más información, consulta Cuotas.
Actualmente, el servicio Dataflow solo puede procesar solicitudes de trabajos JSON de 20 MB o menos. El tamaño de la solicitud de trabajo está vinculado específicamente 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, ejecútala con la siguiente opción:
Java
--dataflowJobFile=<path to output file>
Python
--dataflow_job_file=<path to output file>
Go
Actualmente, no se puede estimar el tamaño de la carga útil 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 buena estimación del tamaño de la solicitud. El tamaño real será ligeramente superior debido a la información adicional incluida en la solicitud.
Para obtener más información, consulta la página de solución de problemas sobre el error "413 Request Entity Too Large" / "The size of serialized JSON representation of the pipeline exceeds the allowable limit".
Además, el tamaño del gráfico de tu trabajo no debe superar los 10 MB. Para obtener más información, consulta la página de solución de problemas "El gráfico de trabajo es demasiado grande. Inténtalo de nuevo con un gráfico de trabajo más pequeño o divide el trabajo en dos o más trabajos más pequeños".
Trabajadores
Actualmente, el servicio Dataflow permite un máximo de 1000 instancias de Compute Engine por tarea. En el caso de los trabajos por lotes, el tipo de máquina predeterminado es n1-standard-1
. En el caso de las tareas de streaming, el tipo de máquina predeterminado para las tareas con Streaming Engine habilitado es n1-standard-2
, mientras que el tipo de máquina predeterminado para las tareas sin Streaming Engine es n1-standard-4
. Por lo tanto, cuando se usan los tipos de máquina predeterminados, el servicio Dataflow puede asignar hasta 4000 núcleos por tarea. Si necesitas más núcleos para tu trabajo, puedes seleccionar un tipo de máquina más grande.
No intentes gestionar ni interactuar directamente con tu grupo de instancias gestionado de Compute Engine. El servicio Dataflow se encargará de ello. No puedes alterar manualmente los recursos de Compute Engine asociados a tu tarea de Dataflow.
También puedes usar cualquiera de las familias de tipos de máquinas de Compute Engine disponibles, así como tipos de máquinas personalizadas. Para obtener los mejores resultados, usa tipos de máquina n1
. Los tipos de máquinas de núcleo compartido, como los trabajadores de las series f1
y g1
, no se admiten en el acuerdo de nivel de servicio de Dataflow.
Para asignar memoria adicional por subproceso de trabajador, usa un tipo de máquina personalizado con memoria ampliada. Por ejemplo, custom-2-15360-ext
es un tipo de máquina n1
con 2 CPUs y 15 GB de memoria. Dataflow tiene en cuenta el número de CPUs de una máquina para determinar el número de hilos de trabajador por VM de trabajador. Si tu canalización procesa trabajo que requiere mucha memoria, un tipo de máquina personalizado con memoria ampliada puede proporcionar más memoria por subproceso de trabajador. Para obtener más información, consulta Crear una instancia de VM personalizada.
Dataflow factura según el número de vCPUs y los GB de memoria de los trabajadores. La facturación es independiente de la familia de tipos de máquinas. Para especificar un tipo de máquina para tu flujo de procesamiento, define el parámetro de ejecución adecuado al crear el flujo de procesamiento.
Java
Para cambiar el tipo de máquina, define la opción --workerMachineType
.
Python
Para cambiar el tipo de máquina, define la opción --worker_machine_type
.
Go
Para cambiar el tipo de máquina, define la opción ‑‑worker_machine_type
.
Cuota de recursos
El servicio Dataflow comprueba que tu Google Cloud proyecto tenga la cuota de recursos de Compute Engine necesaria para ejecutar tu trabajo, tanto para iniciar el trabajo como para escalar hasta el número máximo de instancias de trabajador. El trabajo no se iniciará si no hay suficiente cuota de recursos disponible.
Si tu trabajo de Dataflow despliega máquinas virtuales de Compute Engine como un grupo de instancias gestionado, tendrás que asegurarte de que tu proyecto cumpla algunos requisitos de cuota adicionales. En concreto, tu proyecto debe tener uno de los siguientes tipos de cuota por cada trabajo de Dataflow simultáneo que quieras ejecutar:
- Un grupo de instancias por tarea
- Un grupo de instancias gestionado por cada tarea
- Una plantilla de instancia por tarea
Aviso: No se recomienda ni se admite cambiar manualmente la plantilla de instancia o el grupo de instancias gestionado de tu tarea de Dataflow. En su lugar, usa las opciones de configuración de la canalización de Dataflow.
La función Escalado automático horizontal de Dataflow está limitada por la cuota de Compute Engine disponible en tu proyecto. Si tu trabajo tiene suficiente cuota cuando empieza, pero otro trabajo usa el resto de la cuota disponible de tu proyecto, el primer trabajo se ejecutará, pero no podrá escalarse por completo.
Sin embargo, el servicio Dataflow no gestiona los aumentos de cuota de las tareas que superan las cuotas de recursos de tu proyecto. Eres responsable de enviar las solicitudes necesarias para obtener cuota de recursos adicional, para lo cual puedes usar la consolaGoogle Cloud .
Direcciones IP
De forma predeterminada, Dataflow asigna direcciones IP públicas y privadas a las VMs de los trabajadores. Una dirección IP pública cumple uno de los criterios de acceso a Internet, pero también se tiene en cuenta en tu cuota de direcciones IP externas.
Si tus VMs de trabajador no necesitan acceder a Internet público, considera la posibilidad de usar solo direcciones IP internas, que no se tienen en cuenta en tu cuota externa. Para obtener más información sobre cómo configurar direcciones IP, consulta los siguientes recursos:
Trabajadores inactivos
Si los trabajadores de un trabajo determinado no muestran suficiente actividad durante un periodo de una hora, el trabajo falla. La inactividad de los trabajadores puede deberse a problemas de gestión de dependencias. Por ejemplo, si un trabajador tiene un problema al instalar las dependencias de una imagen de contenedor personalizada, es posible que no pueda iniciar o avanzar. La falta de progreso podría provocar que la tarea falle. Para obtener más información, consulta:
- Solucionar problemas con los contenedores personalizados en Dataflow
- Error al sincronizar el pod ... no se ha podido "StartContainer"
Recursos de Persistent Disk
El servicio Dataflow está limitado a 15 discos persistentes por instancia de trabajador al ejecutar una tarea de streaming. Cada disco persistente es local de una máquina virtual de Compute Engine. Tu trabajo no puede tener más trabajadores que discos persistentes. La asignación mínima de recursos es una proporción de 1:1 entre trabajadores y discos.
Los trabajos que usan Streaming Engine utilizan discos de arranque de 30 GB. Los trabajos que usan Dataflow Shuffle utilizan discos de arranque de 25 GB. En el caso de las tareas que no usan estas ofertas, el tamaño predeterminado de cada disco persistente es de 250 GB en el modo por lotes y de 400 GB en el modo de streaming.
Ubicaciones
De forma predeterminada, el servicio Dataflow implementa recursos de Compute Engine en la zona us-central1-f
de la región us-central1
. Puedes anular este ajuste especificando el parámetro --region
. Si necesitas usar una zona específica para tus recursos, usa el parámetro --zone
al crear tu flujo de procesamiento. Sin embargo, le recomendamos que solo especifique la región y deje la zona sin especificar. De esta forma, el servicio Dataflow puede seleccionar automáticamente la mejor zona de la región en función de la capacidad disponible en el momento de la solicitud de creación del trabajo. Para obtener más información, consulta la documentación sobre las regiones de Dataflow.