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:
- 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.
- 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:
- Agrega un nuevo plugin de fluentd basado en tus necesidades
- 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.