Gestione dei lavori Apache Flink® in HDInsight nei cluster AKS
Importante
Azure HDInsight su AKS è stato ritirato il 31 gennaio 2025. Scopri di più con questo annuncio.
È necessario eseguire la migrazione dei carichi di lavoro a Microsoft Fabric o a un prodotto Azure equivalente per evitare la chiusura brusca dei carichi di lavoro.
Importante
Questa funzionalità è attualmente in anteprima. Le condizioni supplementari per l'utilizzo per le anteprime di Microsoft Azure includono termini legali più validi applicabili alle funzionalità di Azure in versione beta, in anteprima o altrimenti non ancora rilasciate nella disponibilità generale. Per informazioni su questa anteprima specifica, vedere informazioni sull'anteprima di Azure HDInsight su AKS. Per domande o suggerimenti sulle funzionalità, inviare una richiesta in AskHDInsight con i dettagli e segui Microsoft per altri aggiornamenti su Community di Azure HDInsight.
HDInsight su AKS offre una funzionalità per gestire e inviare processi Apache Flink® direttamente tramite il portale di Azure (interfaccia facile da usare) e le API REST ARM.
Questa funzionalità consente agli utenti di controllare e monitorare in modo efficiente i processi Apache Flink senza richiedere conoscenze approfondite a livello di cluster.
Benefici
gestione semplificata dei processi: con l'integrazione nativa di Apache Flink nel portale di Azure, gli utenti non richiedono più una conoscenza approfondita dei cluster Flink per inviare, gestire e monitorare i processi.
User-Friendly API REST: HDInsight nel servizio Azure Kubernetes offre API REST ARM facili da usare per inviare e gestire processi Flink. Gli utenti possono inviare processi Flink da qualsiasi servizio di Azure usando queste API REST.
Semplici aggiornamenti dei processi e gestione dello stato: l'integrazione del portale di Azure nativo offre un'esperienza senza problemi per l'aggiornamento dei processi e il ripristino dell'ultimo stato salvato (punto di salvataggio). Questa funzionalità garantisce la continuità e l'integrità dei dati nel ciclo di vita del processo.
Automatizzare il lavoro Flink usando la pipeline di Azure: Usando HDInsight su AKS, gli utenti Flink hanno accesso all'intuitiva API REST ARM e possono integrare facilmente le operazioni del lavoro Flink nella loro pipeline di Azure. Sia che si avviino nuovi processi, si aggiornino processi in esecuzione o si eseguano varie operazioni di processo, questo approccio semplificato elimina i passaggi manuali. Consente di gestire il cluster Flink in modo efficiente.
Prerequisiti
Prima di inviare e gestire i processi dal portale o dalle API REST, sono necessari alcuni prerequisiti.
Creare una directory nell'account di archiviazione primario del cluster per caricare il file JAR relativo al processo.
Se l'utente vuole prendere punti di salvataggio, creare una directory nell'account di archiviazione per i punti di salvataggio dei processi.
Funzionalità e operazioni principali
Invio di un nuovo job Flink: gli utenti possono inviare facilmente un nuovo job Flink, eliminando la necessità di configurazioni complesse o strumenti esterni.
Arrestare e avviare processi con punti di salvataggio: gli utenti possono arrestare e avviare normalmente i processi Flink dallo stato precedente (Savepoint). I punti di salvataggio assicurano che l'avanzamento del lavoro venga preservato, consentendo riprese senza intoppi.
aggiornamenti del processo: l'utente può aggiornare il processo in esecuzione dopo l'aggiornamento del file JAR nell'account di archiviazione. Questo aggiornamento prende automaticamente il punto di salvataggio e avvia il lavoro con un nuovo file JAR.
aggiornamenti senza stato: l'esecuzione di un nuovo riavvio per un processo viene semplificata tramite aggiornamenti senza stato. Questa funzionalità consente agli utenti di avviare un riavvio pulito usando il file JAR del processo aggiornato.
Gestione dei Savepoint: In qualsiasi momento, gli utenti possono creare punti di salvataggio per i lavori in esecuzione. Questi punti di salvataggio possono essere elencati e usati per riavviare il processo da un checkpoint specifico in base alle esigenze.
Annulla: Annulla il compito in modo permanente.
Elimina: Eliminare il record della cronologia delle operazioni.
Opzioni per gestire i processi in HDInsight su AKS (Azure Kubernetes Service)
HDInsight su AKS offre modi per gestire i lavori Flink.
- del portale di Azure
- API REST ARM
Gestione processi dal portale di Azure
Per eseguire il processo Flink dal portale, passare a:
Portale -> HDInsight nel pool di cluster AKS -> cluster Flink -> Impostazioni -> processi Flink
Nuova attività: Per inviare una nuova attività, caricare i file JAR relativi all'attività nell'account di archiviazione e creare una directory per il punto di salvataggio. Completare il modello con le configurazioni necessarie e quindi inviare l'incarico.
Dettagli della proprietà :
Proprietà Descrizione Valore predefinito Obbligatorio Nome lavoro Nome univoco per il compito. Questo viene visualizzato nel portale. Il nome del processo deve essere in minuscolo. Sì Percorso Jar Percorso di archiviazione per il file JAR del processo. Gli utenti devono creare la directory nell'archiviazione del cluster e caricare il file del job jar. Sì Classe di Ingresso Classe d'ingresso per il lavoro da cui inizia l'esecuzione del lavoro. Sì Argomenti Argomento per il programma principale del compito. Separare tutti gli argomenti con spazi. No parallelismo Parallelismo del Job in Flink 2 Sì savepoint.directory Directory del punto di salvataggio per l'attività. È consigliabile che gli utenti creino una nuova directory per il punto di salvataggio dei processi nell'account di archiviazione. abfs://<container>@<account>/<deployment-ID>/savepoints
No Dopo l'avvio del processo, lo stato del processo sul portale viene IN CORSO.
Arresta: Non è stato richiesto alcun parametro, l'utente può arrestare il processo selezionando l'azione.
Dopo l'arresto del processo, lo stato del processo nel portale viene STOPPED.
Start: Questa azione avvia il processo dal punto di salvataggio predefinito. Per avviare il lavoro, selezionare il lavoro arrestato e avviarlo.
Compilare il modello di flusso con le opzioni necessarie e avviarlo. Gli utenti devono selezionare il punto di salvataggio da cui l'utente vuole avviare il processo. Per impostazione predefinita, accetta l'ultimo punto di salvataggio riuscito.
Dettagli della proprietà:
Proprietà Descrizione Valore predefinito Obbligatorio Argomenti Argomento per il programma principale del lavoro. Tutti gli argomenti devono essere separati da spazio. No Ultimo punto di salvataggio Ultimo punto di salvataggio preso con successo prima di arrestare il processo. Questa opzione verrà utilizzata per impostazione predefinita se non è selezionato il punto di salvataggio. Non modificabile Nome punto di salvataggio Gli utenti possono elencare il punto di salvataggio disponibile per il processo e selezionare uno per avviare il processo. No Una volta avviato il lavoro, lo stato del lavoro sul portale sarà RUNNING.
Update: Update consente di riavviare le attività con codice lavoro aggiornato. Gli utenti devono aggiornare l'ultimo file JAR del processo nella posizione di archiviazione e successivamente aggiornare il processo dal portale. Questo aggiornamento arresta il processo con savepoint e viene avviato di nuovo con il file JAR più recente.
Modello per l'aggiornamento dell'attività.
Dopo aver aggiornato l'attività, lo stato dell'attività nel portale è "IN ESECUZIONE".
aggiornamento senza stato: Questo processo è simile a un aggiornamento, ma comporta un nuovo riavvio del processo con il codice più recente.
Modello per l'aggiornamento dell'incarico.
Dettagli della proprietà:
Proprietà Descrizione Valore predefinito Obbligatorio Argomenti Argomento per il programma principale del job. Separare tutti gli argomenti con lo spazio. No Una volta aggiornato il processo, lo stato del processo nel portale è IN ESECUZIONE.
Punto di salvataggio: Prendere il punto di salvataggio per il processo Flink.
Il processo di salvataggio richiede molto tempo. È possibile visualizzare lo stato dell'attività lavorativa come in corso.
Annulla: Questo compito aiuta l'utente a terminare l'attività.
Elimina: Elimina i dati del lavoro dal portale.
Visualizza dettagli processo: Per visualizzare i dettagli del processo, l'utente può fare clic sul nome del processo, vengono mostrati i dettagli del processo e il risultato dell'ultima azione.
Per qualsiasi azione non riuscita, questo file JSON del processo offre eccezioni dettagliate e motivi per l'errore.
Gestione dei lavori utilizzando l'API REST
HDInsight su AKS supporta API REST ARM intuitive per inviare e gestire processi. Usando questa API REST Flink, è possibile integrare facilmente le operazioni del processo Flink in Azure Pipeline. Sia che si avviino nuovi processi, si aggiornino processi in esecuzione o si eseguano varie operazioni di processo, questo approccio semplificato elimina i passaggi manuali e consente di gestire il cluster Flink in modo efficiente.
Formato URL di base per l'API REST
Vedere l'URL seguente per l'API rest, gli utenti devono sostituire la sottoscrizione, il gruppo di risorse, il pool di cluster, il nome del cluster e HDInsight nella versione dell'API del servizio Azure Kubernetes in questo caso prima di usarla.
https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runjob?api-version={{API_VERSION}}
Usando questa API REST, gli utenti possono avviare nuovi processi, arrestare processi, avviare processi, creare punti di salvataggio, annullare processi ed eliminare processi. Il API_VERSION corrente è 2023-06-01-preview.
Autenticazione dell'API REST
Per autenticare gli utenti dell'API REST Flink ARM, è necessario ottenere il token bearer o il token di accesso per la risorsa ARM. Per autenticare l'API REST di Azure ARM (Azure Resource Manager) usando un'entità servizio, è possibile seguire questa procedura generale:
Creare un principale servizio.
az ad sp create-for-rbac --name <your-SP-name>
Concedere all'amministratore il permesso a SP per il cluster
flink
.Accedi con il principale del servizio.
az login --service-principal -u <client_id> -p <client_secret> --tenant <tenant_id>
Ottenere il token di accesso.
$token = az account get-access-token --resource=https://management.azure.com/ | ConvertFrom-Json
$tok = $token.accesstoken
Gli utenti possono usare il token nell'URL visualizzato.
$data = Invoke-RestMethod -Uri $restUri -Method GET -Headers @{ Authorization = "Bearer $tok" }
Autenticazione tramite Identità Gestita: Gli utenti possono utilizzare risorse che supportano l'Identità Gestita per effettuare chiamate all'API REST del job. Per ulteriori dettagli, consultare la documentazione Identità Gestita.
ELENCO di API e parametri
Nuovo lavoro: API REST per inviare un nuovo lavoro a Flink.
Opzione Valore Metodo INSERISCI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" Corpo della richiesta:
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "NEW", "jobJarDirectory": "<JOB_JAR_STORAGE_PATH>", "jarName": "<JOB_JAR_NAME>", "entryClass": "<JOB_ENTRY_CLASS>", “args”: ”<JOB_JVM_ARGUMENT>” "flinkConfiguration": { "parallelism": "<JOB_PARALLELISM>", "savepoint.directory": "<JOB_SAVEPOINT_DIRECTORY_STORAGE_PATH>" } } }
I dettagli della proprietà per il corpo JSON:
Proprietà Descrizione Valore predefinito Obbligatorio tipo di lavoro Tipo di lavoro. Deve essere "FlinkJob" Sì jobName Nome univoco per l'attività. Questo viene visualizzato nel portale. Il nome del lavoro dovrebbe essere in lettere minuscole. Sì azione Indica il tipo di operazione nel lavoro. Dovrebbe essere "NUOVO" sempre per il lancio di un nuovo lavoro. Sì jobJarDirectory Percorso di archiviazione per la directory jar del processo. Gli utenti devono creare una directory nell'archiviazione del cluster e caricare il file JAR del processo. Sì jarName Nome del file JAR del processo. Sì classe di ingresso Classe di ingresso per il lavoro da cui inizia l'esecuzione del lavoro. Sì argomenti Argomento per il programma principale del lavoro. Separare gli argomenti con lo spazio. No parallelismo Parallelismo del Job Flink. 2 Sì savepoint.directory La directory del punto di salvataggio per il lavoro. È consigliabile che gli utenti creino una nuova directory per il punto di salvataggio dei processi nell'account di archiviazione. abfs://<container>@<account>/<deployment-ID>/savepoints
No Esempio:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Arresta processo: API REST per arrestare il processo attualmente in esecuzione.
Opzione Valore Metodo INSERISCI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" corpo della richiesta
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "STOP" } }
Dettagli delle proprietà per il corpo JSON:
Proprietà Descrizione Valore predefinito Obbligatorio tipo di lavoro Tipo di lavoro. Deve essere "FlinkJob" Sì jobName Nome del lavoro, utilizzato per lanciare il lavoro Sì azione Deve essere "STOP" Sì Esempio:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Avvia attività: API REST per avviare l'attività ARRESTATA.
Opzione Valore Metodo INSERISCI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" corpo della richiesta
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "START", "savePointName": "<SAVEPOINT_NAME>" } }
dettagli proprietà per il corpo JSON:
Proprietà Descrizione Valore predefinito Obbligatorio tipoDiLavoro Tipo di lavoro. Deve essere "FlinkJob" Sì nomeLavoro Nome del lavoro usato per avviare il job. Sì azione Deve essere "START" Sì savePointName Salva il nome del punto di salvataggio per avviare il lavoro. È una proprietà facoltativa, per impostazione predefinita l'operazione di avvio accetta l'ultimo punto di salvataggio riuscito. No Esempio di :
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Aggiorna lavoro: API REST per aggiornare il lavoro attualmente in esecuzione.
Opzione Valore Metodo INSERISCI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" corpo della richiesta
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "UPDATE", “args” : “<JOB_JVM_ARGUMENT>”, "savePointName": "<SAVEPOINT_NAME>" } }
Dettagli della proprietà per il corpo JSON:
Proprietà Descrizione Valore predefinito Obbligatorio tipo di lavoro Tipo di lavoro. Deve essere "FlinkJob" Sì nomeLavoro Nome del lavoro utilizzato per lanciare il lavoro. Sì azione Deve essere sempre "UPDATE" per il nuovo avvio dell'attività. Sì argomenti Argomenti JVM del lavoro No nomePuntoDiSalvataggio Salvare il nome del punto di controllo per avviare l'attività. È una proprietà facoltativa. Per impostazione predefinita, l'operazione di avvio richiederà l'ultimo punto di salvataggio riuscito. No Esempio:
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
processo di aggiornamento senza stato: API REST per l'aggiornamento senza stato.
Opzione Valore Metodo INSERISCI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" corpo della richiesta
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "STATELESS_UPDATE", “args” : “<JOB_JVM_ARGUMENT>” } }
Dettagli della proprietà per il corpo JSON:
Proprietà Descrizione Valore predefinito Obbligatorio tipo di lavoro Tipo di lavoro. Deve essere "FlinkJob" Sì nome lavoro Il nome del lavoro usato per avviare il lavoro. Sì azione Deve essere sempre impostato come "STATELESS_UPDATE" per avviare un nuovo processo. Sì argomenti Argomenti JVM dell'attività No Esempio di :
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Savepoint: API REST per attivare un savepoint per il job.
Opzione Valore Metodo INSERISCI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" corpo della richiesta
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "SAVEPOINT" } }
Dettagli della proprietà per il corpo JSON:
Proprietà Descrizione Valore predefinito Obbligatorio tipoDiLavoro Tipo di lavoro. Deve essere "FlinkJob" Sì jobName Nome del processo usato per avviare il lavoro. Sì azione Deve essere sempre "SAVEPOINT" per l'avvio di un nuovo lavoro. Sì Esempio di :
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Elenco dei punti di salvataggio: API REST per elencare tutti i punti di salvataggio dalla directory dei savepoint.
Opzione Valore Metodo INSERISCI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" corpo della richiesta
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "LIST_SAVEPOINT" } }
dettagli della proprietà per il corpo JSON:
Proprietà Descrizione Valore predefinito Obbligatorio tipo di lavoro Tipo di lavoro. Deve essere "FlinkJob" Sì jobName Nome dell'attività utilizzato per avviare l'attività Sì azione Deve essere "LIST_SAVEPOINT" Sì Esempio di :
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Annulla: API REST per annullare il processo.
Opzione Valore Metodo INSERISCI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" corpo della richiesta
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "CANCEL" } }
I dettagli delle proprietà per il corpo JSON:
Proprietà Descrizione Valore predefinito Obbligatorio tipo di lavoro Tipo di lavoro. Dovrebbe essere FlinkJob
Sì jobName Nome del lavoro usato per lanciarlo. Sì azione Dovrebbe essere "CANCEL". Sì Esempio di :
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Elimina: API REST per eliminare l'attività.
Opzione Valore Metodo INSERISCI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/runJob?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" corpo della richiesta
{ "properties": { "jobType": "FlinkJob", "jobName": "<JOB_NAME>", "action": "DELETE" } }
dettagli della proprietà per il corpo JSON:
Proprietà Descrizione Valore predefinito Obbligatorio tipo di lavoro Tipo di lavoro. Deve essere "FlinkJob" Sì nomeLavoro Nome lavoro utilizzato per avviare l'attività. Sì azione Deve essere "DELETE". Sì Esempio di :
Invoke-RestMethod -Uri $restUri -Method POST -Headers @{ Authorization = "Bearer $tok" } -Body $jsonString -ContentType "application/json"
Elenca processi: API REST per elencare tutti i processi e lo stato dell'azione corrente.
Opzione Valore Metodo OTTIENI URL https://management.azure.com/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/jobs?api-version={{API_VERSION}}
Intestazione Authorization = "Bearer $token" output :
{ "value": [ { "id": "/subscriptions/{{USER_SUBSCRIPTION}}/resourceGroups/{{USER_RESOURCE_GROUP}}/providers/Microsoft.HDInsight/clusterpools/{{CLUSER_POOL}}/clusters/{{FLINK_CLUSTER}}/jobs/job1", "properties": { "jobType": "FlinkJob", "jobName": "job1", "jobJarDirectory": "<JOB_JAR_STORAGE_PATH>", "jarName": "<JOB_JAR_NAME>", "action": "STOP", "entryClass": "<JOB_ENTRY_CLASS>", "flinkConfiguration": { "parallelism": "2", "savepoint.directory": "<JOB_SAVEPOINT_DIRECTORY_STORAGE_PATH>s" }, "jobId": "20e9e907eb360b1c69510507f88cdb7b", "status": "STOPPED", "jobOutput": "Savepoint completed. Path: <JOB_SAVEPOINT_DIRECTORY_STORAGE_PATH>s/savepoint-20e9e9-8a48c6b905e5", "actionResult": "SUCCESS", "lastSavePoint": "<JOB_SAVEPOINT_DIRECTORY_STORAGE_PATH>s/savepoint-20e9e9-8a48c6b905e5" } } ] }
Nota
Quando un'azione è in corso, actionResult lo indicherà con il valore "IN_PROGRESS" Al completamento, verrà visualizzato "SUCCESS" e, in caso di errore, sarà "FAILED".
Riferimento
- Pianificazione dei processi Apache Flink
- Apache, Apache Flink, Flink e i nomi dei progetti open source associati sono marchi della Apache Software Foundation (ASF).