Questo documento fornisce istruzioni per la risoluzione dei problemi che potrebbero verificarsi durante l'utilizzo di contenuti personalizzati con Dataflow. Si concentra sui problemi di container o worker non si avviano. Se i tuoi lavoratori riescono ad avviare il lavoro e il lavoro procede, segui le indicazioni generali per la risoluzione dei problemi della pipeline.
Prima di contattare l'assistenza, assicurati di aver escluso problemi relativi all'immagine container:
- Segui i passaggi per testare l'immagine container localmente.
- Cerca gli errori nei log dei job o nei log dei worker e confrontali con le indicazioni relative agli errori comuni.
- Assicurati che la versione dell'SDK Apache Beam e la versione del linguaggio che stai utilizzando per lanciare la pipeline corrispondano alla versione dell'SDK nell'immagine del contenitore personalizzato.
- Se utilizzi Java, assicurati che la versione principale di Java utilizzata per avviare la pipeline corrisponda a quella installata nell'immagine del contenitore.
- Se utilizzi Python, assicurati che la versione major-minor di Python utilizzata per avviare la pipeline corrisponda alla versione installata nell'immagine del contenitore e che l'immagine non abbia dipendenze in conflitto. Puoi eseguire
Da
pip check
a conferma.
Trovare i log del worker relativi ai container personalizzati
Puoi trovare i log dei worker Dataflow per i messaggi di errore relativi ai container utilizzando Esplora log:
Seleziona i nomi dei log. Gli errori di avvio dei contenitori personalizzati si verificano con maggiore probabilità in uno dei seguenti elementi:
dataflow.googleapis.com/kubelet
dataflow.googleapis.com/docker
dataflow.googleapis.com/worker-startup
dataflow.googleapis.com/harness-startup
Seleziona la risorsa
Dataflow Step
e specificajob_id
.
Se ricevi Error Syncing pod...
messaggi di log,
segui le comuni indicazioni per gli errori.
Puoi eseguire query su questi messaggi di log nei log dei worker Dataflow utilizzando
Esplora log con la seguente query:
resource.type="dataflow_step" AND jsonPayload.message:("IMAGE_URI") AND severity="ERROR"
Problemi comuni
Di seguito sono riportati alcuni problemi comuni riscontrati durante l'utilizzo dei container personalizzati.
Il job presenta errori o non è riuscito perché non è possibile eseguire il pull dell'immagine container
I worker Dataflow devono essere in grado di accedere alle immagini container personalizzate. Se il worker non riesce a estrarre l'immagine a causa di URL non validi, credenziali configurate in modo errato o accesso alla rete mancante, non riesce a avviarsi.
Per i job batch in cui non è stato avviato alcun lavoro e diversi worker non riescono ad avviarsi in sequenza, Dataflow non riesce a completare il job. In caso contrario, Dataflow registra gli errori, ma non esegue ulteriori azioni per evitare di distruggere lo stato dei job a lungo termine.
Per informazioni su come risolvere il problema, consulta Richiesta di pull di immagini non riuscita con errore nella pagina Risolvere gli errori di Dataflow.
I worker non si avviano o il lavoro non procede
A volte, se il contenitore dell'SDK non si avvia a causa di un errore, Dataflow non è in grado di determinare se l'errore è permanente o fatale. Dataflow tenta continuamente di riavviare il worker.
Se non sono presenti errori evidenti, ma viene visualizzato [topologymanager] RemoveContainer
I log a livello di INFO
in dataflow.googleapis.com/kubelet
indicano che
l'immagine container personalizzata sta uscendo in anticipo e non ha avviato la versione a lunga esecuzione
un processo SDK worker.
Se i worker sono stati avviati correttamente ma non è in corso alcun lavoro, potrebbe verificarsi un errore impedire l'avvio del container SDK. In questo caso, gli elementi riportati di seguito l'errore viene visualizzato nei consigli sulla diagnostica:
Failed to start container
Inoltre, i log del worker non contengono righe come le seguenti:
Executing: python -m apache_beam.runners.worker.sdk_worker_main or Executing: java ... FnHarness
Individua errori specifici nei log dei worker e consulta le linee guida sugli errori comuni.
Le cause comuni di questi problemi sono:
- Problemi di installazione del pacchetto, ad esempio errori di installazione di
pip
dovuti a problemi di dipendenza. Consulta Error syncing pod ... failed to "StartContainer". - Se il contenitore utilizzato non è compatibile con l'architettura della CPU della VM di lavoro,
potresti visualizzare errori come
exec format error
. Per ulteriori informazioni, vedi Errore di sincronizzazione del pod ... non riuscito in "StartContainer". - Errori con gli argomenti del comando personalizzato o con
ENTRYPOINT
impostato nel Dockerfile. Ad esempio, un elementoENTRYPOINT
personalizzato non avvia l'avvio predefinito script/opt/apache/beam/boot
o non passa in modo appropriato gli argomenti questo script. Per ulteriori informazioni, vedi Modifica del punto di ingresso del container. - Errori quando la versione dell'SDK Apache Beam non corrisponde tra l'ambiente di lancio e l'ambiente di runtime. In una modalità di errore, i valori predefiniti impostati nelle opzioni della pipeline dell'SDK Apache Beam potrebbero non essere riconosciuti.
Ad esempio, potresti notare errori come
sdk_worker_main.py: error: argument --flink_version: invalid choice: '1.16' (choose from '1.12', '1.13', '1.14', '1.15')
nei log del worker. Per risolvere il problema, installa la stessa versione dell'SDK Apache Beam nell'immagine container man mano che la utilizzi per avviare la pipeline. Per ulteriori informazioni, consulta Rendere l'ambiente di lancio compatibile con l'ambiente di runtime.