16

C'è un modo per ottenere l'output dai lavori di Dataproc Spark inviati al log di Google Cloud? As explained in the Dataproc docs l'output dal driver di lavoro (il master per un lavoro Spark) è disponibile in Dataproc-> Jobs nella console. Ci sono due motivi per cui vorrei avere i log anche nel Cloud Logging:Output da lavoro Dataproc Spark in Google Cloud Logging

  1. Mi piacerebbe vedere i registri dagli esecutori. Spesso il master log dice "executor lost" senza ulteriori dettagli, e sarebbe molto utile avere qualche informazione in più su cosa sta facendo l'executor.
  2. cloud registrazione è bella filtraggio e la ricerca

Attualmente l'unica uscita da Dataproc che appare nella registrazione Cloud è vuoto Log da filo-filo-nodemanager- * e il contenitore _ *. Stderr. L'output dal mio codice applicazione è mostrato in Dataproc-> Jobs ma non in Cloud Logging, ed è solo l'output del master Spark, non degli executors.

+0

Devo dire anche condividere che abbiamo (Cloud squadra Dataproc) ha intenzione di rilasciare la funzione di tubo di uscita del driver di registrazione cloud in futuro 1-2 mesi. – James

+0

Eventuali aggiornamenti su come ottenere le informazioni di registro dagli executors? Ho le istruzioni 'print (..)' nei miei esecutori di pyspark e non riesco a vedere il loro output da nessuna parte. Riesco a vedere l'output 'print' dal master, ma qualsiasi output dalla mia funzione' map' sembra essere perso. – sthomps

risposta

7

tl; dr

Questo non è nativamente supportato ora, ma sarà supportato nativamente in una futura versione di Cloud Dataproc. Detto questo, c'è una soluzione manuale nel frattempo.

cluster Soluzione

cloud Dataproc utilizzano fluentd per raccogliere e tronchi di andata al disboscamento Cloud. La configurazione di fluentd è il motivo per cui alcuni registri vengono inoltrati e non altri. Pertanto, la soluzione semplice (finché Cloud Dataproc non supporta i dettagli del lavoro in Cloud Logging) consiste nel modificare la configurazione di flientd. Il file di configurazione per fluentd su un cluster e ':

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

ci sono due cose per raccogliere ulteriori dettagli che saranno più facili:

  1. Aggiungi un nuovo fluentd plugin in base alle esigenze
  2. Aggiungi un nuovo file all'elenco dei file esistenti raccolti (riga 56 ha i file nel mio cluster)

Una volta modificata la configurazione, è necessario riavviare il servizio google-fluentd:

/etc/init.d/google-fluentd restart

Infine, a seconda delle esigenze, si può o potrebbe non essere necessario fare questo su tutti i nodi nel cluster. In base al tuo caso d'uso, sembra che potresti semplicemente cambiare il tuo nodo principale ed essere impostato.

0

È possibile utilizzare il dataproc initialization actions for stackdriver per questo:

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