Perché il checkpoint nell'applicazione Amazon Kinesis Data Analytics restituisce errore?

Ultimo aggiornamento: 25/02/2022

Il checkpoint o il savepoint nell'applicazione Amazon Kinesis Data Analytics restituisce errore.

Breve descrizione

Il checkpointing è il metodo utilizzato per implementare la tolleranza ai guasti in Amazon Kinesis Data Analytics per Apache Flink. La mancata ottimizzazione dell'applicazione o il provisioning corretto potrebbero causare errori di checkpoint.

Alcune delle cause principali degli errori dei checkpoint sono le seguenti:

  • Per Rocks DB, Apache Flink legge i file dall'archiviazione locale e scrive sull'archiviazione persistente remota, ovvero Amazon Simple Storage Service (Amazon S3). Le prestazioni del disco locale e la velocità di caricamento potrebbero influire sul checkpoint e causare errori di checkpoint.
  • Gli stati di savepoint e checkpoint sono archiviati in un bucket Amazon S3 di proprietà del servizio completamente gestito da AWS. È possibile accedere a questi stati ogni volta che un'applicazione fallisce. Errori transitori del server o latenza in questo bucket S3 potrebbero causare errori di checkpoint.
  • Una funzione di processo creata in cui la funzione comunica con una risorsa esterna, ad esempio Amazon DynamoDB, durante il checkpoint potrebbe causare errori di checkpoint.
  • Un errore dovuto alla serializzazione dello stato, come la mancata corrispondenza del serializzatore con i dati in arrivo, può causare errori di checkpoint.
  • Il numero di KPU (Kinesis Processing Units) fornite per l'applicazione potrebbe non essere sufficiente. Per trovare le KPU allocate, utilizza il seguente calcolo:
    KPU allocate per l'applicazione = Parallelismo/ParallelismPerKPU
  • Dimensioni dello stato dell'applicazione maggiori potrebbero portare a un aumento della latenza dei checkpoint. Questo perché il task manager impiega più tempo per salvare il checkpoint, il che può comportare un'eccezione di memoria insufficiente.
  • Una distribuzione distorta dello stato potrebbe comportare che un task manager gestisca più dati rispetto ad altri task manager. Anche se viene eseguito il provisioning di KPU (risorse) sufficienti, uno o più task manager sovraccarichi possono causare un'eccezione di memoria insufficiente.
  • Una cardinalità elevata indica che nei dati in arrivo è presente un numero elevato di chiavi univoche. Se il processo utilizza l'operatore KeyBy per il partizionamento dei dati in arrivo e la chiave su cui sono partizionati i dati ha una cardinalità elevata, potrebbe verificarsi un checkpoint lento. Questo potrebbe portare a errori dei checkpoint.

Risoluzione

  • La dimensione dello stato dell'applicazione potrebbe aumentare rapidamente, causando un aumento delle dimensioni e della durata del checkpoint. Puoi monitorare questi valori utilizzando i parametri di Amazon CloudWatch lastCheckPointDuration e lastCheckpointSize. Per ulteriori informazioni, consulta Parametri dell'applicazione.
  • Aumenta il parallelismo dell'operatore che elabora più dati. Potete definire il parallelismo per un singolo operatore, origine dati o data sink chiamando il metodo setParallelism().
  • Ottimizza i valori di Parallelism e ParallelismPerKPU per un utilizzo ottimale delle KPU. Assicurati che la scalabilità automatica non sia disattivata per la tua applicazione Amazon Kinesis Data Analytics. Il valore del parametro maxParallelism consente di scalare fino al numero desiderato di KPU. Per ulteriori informazioni, consulta Dimensionamento delle applicazioni in Kinesis Data Analytics per Apache Flink.
  • Definisci il TTL sullo stato per assicurarsi che lo stato venga pulito periodicamente.
  • Ottimizza il codice per consentire una migliore strategia di partizionamento. Puoi utilizzare il partizionamento di ribilanciamento per consentire di distribuire i dati in modo uniforme. Questo metodo utilizza un metodo round robin per la distribuzione.
  • Ottimizza il codice per ridurre le dimensioni della finestra in modo da ridurre la cardinalità del numero di chiavi in quella finestra.

Questo articolo è stato utile?


Hai bisogno di supporto tecnico o per la fatturazione?