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.

¿Cómo mostrar el enlace del panel de control de Dask al enviar un trabajo de Dask-Yarn de forma remota?

Problema

¿Alguien sabría cómo recuperar el enlace del panel de control de dask cuando envío mi trabajo dask-yarn? Tengo una declaración de impresión para mostrar el enlace del panel de control de dask, pero no aparece en la consola. También he intentado registrar en stdout y tratar de ver si aparece en los registros de yarn, pero aún no he tenido suerte. ¡Cualquier ayuda sería muy apreciada!

Ejemplo de código:

submit.sh

bash
dask-yarn submit \
--name uq_component_batch_inference \
--deploy-mode remote \
--environment uq_component_dask.tar.gz \
--worker-count 500 \
--worker-vcores 1 \
--worker-memory 8GiB \
--worker-env TOKENIZERS_PARALLELISM=True \
--worker-restarts 9 \
main.py

main.py

python
logging.basicConfig(stream=sys.stdout, level=logging.DEBUG)
cluster = YarnCluster.from_current()
client = Client(cluster)
logging.debug(f"enlace del panel de control: {client.dashboard_link}")
run()

Lo que he intentado:


yarn logs -applicationId application_1637895115092_0039 > temp-file.log

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Posible solución:

    Parece que la sentencia logging.debug no se está imprimiendo o registrando correctamente al usar dask-yarn. Una solución potencial es modificar el archivo main.py para escribir directamente el enlace del tablero en un archivo, el cual se puede leer después de que se completa la tarea. Aquí está un ejemplo:

    import sys
    from dask_yarn import YarnCluster
    from dask.distributed import Client
    
    cluster = YarnCluster.from_current()
    client = Client(cluster)
    dashboard_link = client.dashboard_link
    
    # Escribir enlace del tablero en un archivo
    with open('/mnt/dashboard-link.txt', 'w') as f:
        f.write(dashboard_link)
    
    # Ejecutar la tarea real
    run()
    
    

    Este código modificado escribirá el enlace del tablero en un archivo llamado dashboard-link.txt en el directorio raíz del sistema de archivos S3 de EMRFS. Luego, puede descargar este archivo desde S3 después de que se completa la tarea para recuperar el enlace del tablero.

    Alternativamente, puede intentar modificar el archivo submit.sh para capturar la salida del trabajo dask-yarn y guardarla en un archivo para su análisis posterior. Por ejemplo:

    dask-yarn submit \
      --name uq_component_batch_inference \
      --deploy-mode remote \
      --environment uq_component_dask.tar.gz \
      --worker-count 500 \
      --worker-vcores 1 \
      --worker-memory 8GiB \
      --worker-env TOKENIZERS_PARALLELISM=True \
      --worker-restarts 9 \
      main.py > dask-yarn.log 2>&1
    

    Este script modificado capturará toda la salida del trabajo dask-yarn y la guardará en un archivo llamado dask-yarn.log, el cual puede buscar el enlace del tablero. Tenga en cuenta que esto puede contener una gran cantidad de salida, por lo que puede llevar algún esfuerzo encontrar la información relevante.

Comments are closed.