es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

GCP Dataflow: utilizando Zonal SSD con zona desconocida

Actualmente establecemos la región para nuestros trabajos de Dataflow por lotes y en tiempo real, por ejemplo, “europe-west1”. Cuando usamos HDD, esto está bien.

Pero ahora me gustaría probar los pipelines con SSD y, según las “opciones a nivel de trabajador” (worker-level-options) de Dataflow, puedo hacerlo, pero debo proporcionar la zona de antemano.

¿Es posible usar SSD PD zonal sin especificar la zona, es decir, utilizar automáticamente la zona de los trabajadores?

Nota: Soy consciente de que en realidad se puede establecer la zona de los trabajadores, pero me gustaría evitar eso y permitir que elijan lo que sea mejor dentro de la región automáticamente.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, es posible utilizar PD SSD zonal sin especificar explícitamente la zona. Sin embargo, se requiere alguna configuración adicional. Un enfoque es utilizar el servidor de metadatos de Compute Engine para determinar la zona de las instancias de trabajador en tiempo de ejecución y luego pasar esta información a las opciones del pipeline.

    Aquí tienes un ejemplo de cómo lograr esto:

    1. En primer lugar, configura un servidor de metadatos para tus instancias de trabajador. Esto se puede lograr mediante la creación de una entrada personalizada de metadatos con la información de la zona:
      gcloud compute instances add-metadata <instancia-trabajador> \
      --metadata zone=<zona>
      
    2. En las opciones del pipeline, especifica las siguientes opciones:
      --worker_region=<región> \
      --worker_zone=<zona-desde-metadatos> \
      --worker_hdd_size_gb=0 \
      --worker_ssd_count=1 \
      --worker_machine_type=<tipo-de-máquina>
      

      Ten en cuenta que estamos estableciendo --worker_zone en un valor de marcador de posición (<zona-desde-metadatos>) que reemplazaremos más adelante con la información de la zona del servidor de metadatos.

    3. En el código de tu pipeline, utiliza la API getMetadata para recuperar la información de la zona del servidor de metadatos:

      import requests
      
      metadata_url = 'http://metadata.google.internal/computeMetadata/v1/instance'
      zone_url = metadata_url + '/attributes/zone'
      
      r = requests.get(zone_url, headers={'Metadata-Flavor': 'Google'})
      zone = r.text.split('/')[-1]  # extrae la zona de la ruta URL
      
      pipeline_options.view_as(SetupOptions).worker_zone = zone
      

    Este código recupera la información de la zona del servidor de metadatos y la establece como el valor de --worker_zone en las opciones del pipeline. Ten en cuenta que estamos utilizando la biblioteca requests para realizar una solicitud HTTP al servidor de metadatos y que estamos estableciendo el encabezado Metadata-Flavor en Google para indicar que estamos solicitando metadatos de un servicio de Google Cloud Platform.

    Con esta configuración, tu pipeline debería poder seleccionar automáticamente la mejor zona de trabajador para PD SSD zonal, sin requerir que lo especifiques explícitamente en las opciones del pipeline o en las propias instancias de trabajador.</tipo-de-máquina></región>

Comments are closed.