apache-spark google-cloud-dataproc google-cloud-logging

apache spark - Salida de un trabajo de Dataproc Spark en Google Cloud Logging



apache-spark google-cloud-dataproc (2)

¿Hay alguna forma de que la salida de los trabajos de Dataproc Spark se envíe al registro de Google Cloud? Como se explica en los documentos de Dataproc, la salida del controlador de trabajo (el maestro para un trabajo de Spark) está disponible en Dataproc-> Jobs en la consola. Hay dos razones por las que me gustaría tener los registros en Cloud Logging también:

  1. Me gustaría ver los logs de los ejecutores. A menudo, el registro maestro dice "ejecutor perdido" sin más detalles, y sería muy útil tener más información sobre lo que está haciendo el ejecutor.
  2. Cloud Logging tiene un buen filtrado y búsqueda

Actualmente, la única salida de Dataproc que aparece en Cloud Logging son los elementos de registro de yarn-yarn-nodemanager- * y el contenedor _ *. Stderr. La salida de mi código de aplicación se muestra en Dataproc-> Trabajos pero no en Cloud Logging, y es solo la salida del maestro Spark, no los ejecutores.


Puede usar las acciones de inicialización de dataproc para stackdriver para esto:

gcloud dataproc clusters create <CLUSTER_NAME> / --initialization-actions gs://<GCS_BUCKET>/stackdriver.sh / --scopes https://www.googleapis.com/auth/monitoring.write


tl; dr

Esto no se admite de forma nativa ahora, pero se admitirá de forma nativa en una versión futura de Cloud Dataproc . Dicho esto, hay una solución manual en el ínterin.

Solución

Los clusters de Cloud fluentd usan fluentd para recopilar y reenviar registros al Cloud Logging. La configuración de fluentd es la razón por la que se ven algunos registros reenviados y otros no. Por lo tanto, la solución alternativa simple (hasta que Cloud Dataproc sea compatible con los detalles del trabajo en Cloud Logging) es modificar la configuración de flientd. El archivo de configuración para fluentd en un clúster está en:

/etc/google-fluentd/google-fluentd.conf

Hay dos cosas para recopilar detalles adicionales que serán más fáciles:

  1. Agrega un nuevo plugin de fluentd basado en tus necesidades
  2. Agregar un nuevo archivo a la lista de archivos existentes recolectados (la línea 56 tiene los archivos en mi grupo)

Una vez que edite la configuración, deberá reiniciar el servicio google-fluentd :

/etc/init.d/google-fluentd restart

Finalmente, dependiendo de sus necesidades, puede o no necesitar hacer esto en todos los nodos de su grupo. Según su caso de uso, parece que probablemente podría simplemente cambiar su nodo maestro y configurarlo.