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.

Dataproc: cómo ejecutar un script de acciones de inicialización solo en el nodo principal y omitir su ejecución en los nodos de trabajo.

Tengo un caso de uso en el que quiero utilizar acciones de inicialización en Dataproc para ejecutar un script que instalará los elementos necesarios. He utilizado algunos scripts de acciones de inicialización en Dataproc que funcionan bien e instalan tanto en el nodo maestro como en los nodos de trabajo. Pero aquí, me gustaría ejecutarlo solo en el nodo maestro.

Específicamente, estoy instalando sobre yarn en el nodo maestro, para que se instale automáticamente en los otros nodos (nodos de trabajo).

¿Hay alguna bandera en Acciones de Inicialización de Dataproc que evite la instalación en los nodos de trabajo?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Desafortunadamente, no hay una bandera en las Acciones de Inicialización de Dataproc que te permita omitir la instalación en los nodos de trabajo. Cuando usas una acción de inicialización, se ejecutará en todos los nodos del clúster de Dataproc, incluyendo tanto los nodos maestros como los nodos de trabajo.

    Sin embargo, puedes modificar tu script para incluir una condición que verifique si se está ejecutando en el nodo maestro antes de realizar cualquier acción de instalación. Puedes usar la variable de entorno DATAPROC_MASTER para verificar si el código se está ejecutando en el nodo maestro.

    Aquí tienes un ejemplo de script que instala algunos paquetes de software solo en el nodo maestro:

    #!/bin/bash
    
    if [[ "${DATAPROC_MASTER}" == "true" ]]; then
      echo "Ejecutando en el nodo maestro, instalando paquetes..."
      sudo apt-get update && sudo apt-get install -y \
        paquete1 \
        paquete2 \
        paquete3
    else
      echo "No se está ejecutando en el nodo maestro, se omite la instalación de paquetes."
    fi
    
    echo "Script de inicialización completado."
    

    Ten en cuenta que este script seguirá ejecutándose en todos los nodos del clúster, pero solo realizará la instalación en el nodo maestro. Los nodos de trabajo omitirán el paso de instalación y pasarán al siguiente comando.

Comments are closed.