View a markdown version of this page

Risolvi i problemi relativi ai notebook Studio per Managed Service for Apache Flink - Servizio gestito per Apache Flink

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Risolvi i problemi relativi ai notebook Studio per Managed Service for Apache Flink

Questa sezione contiene informazioni sulla risoluzione dei problemi per i notebook Studio.

Arresta un'applicazione bloccata

Per arrestare un'applicazione bloccata in uno stato transitorio, richiamate l'StopApplicationazione con il Force parametro impostato su. true Per ulteriori informazioni, consulta Applicazioni in esecuzione nella Guida per gli sviluppatori del servizio gestito per Apache Flink.

Implementa come applicazione con stato durevole in un VPC senza accesso a Internet

La funzione di implementazione come applicazione del servizio gestito per Apache Flink Studio non supporta le applicazioni VPC senza accesso a Internet. Si consiglia di creare l'applicazione in Studio e quindi di utilizzare il servizio gestito per Apache Flink per creare manualmente un'applicazione Flink e selezionare il file zip che hai creato nel tuo notebook.

I passaggi seguenti descrivono come farlo:

  1. Compila ed esporta l'applicazione Studio in Amazon S3. Dovrebbe trattarsi di un file zip.

  2. Crea manualmente un'applicazione del servizio gestito per Apache Flink con il percorso del codice che fa riferimento alla posizione del file zip in Amazon S3. Inoltre, dovrai configurare l'applicazione con le seguenti variabili env (2 groupID, 3 var in totale):

  3. kinesis.analytics.flink.run.options

    1. python: .py source/note

    2. file jar: .jar lib/PythonApplicationDependencies

  4. managed.deploy_as_app.options

    1. DatabasEarn: <glue database ARN (Amazon Resource Name)>

  5. Potrebbe essere necessario concedere ai ruoli IAM del servizio gestito per Apache Flink Studio e del servizio gestito per Apache Flink le autorizzazioni per i servizi utilizzati dall'applicazione. È possibile utilizzare lo stesso ruolo IAM per entrambe le applicazioni.

Deploy-as-app riduzione delle dimensioni e dei tempi di costruzione

Le applicazioni deploy-as-app Studio per Python includono tutto ciò che è disponibile nell'ambiente Python perché non possiamo determinare quali librerie ti serviranno. Ciò può comportare dimensioni di implementazione come applicazione più grandi del necessario. La procedura seguente illustra come ridurre le dimensioni dell'applicazione Python con la funzionalità di implementazione come applicazione disinstallando le dipendenze.

Se stai creando un'applicazione Python con la funzionalità di implementazione come applicazione da Studio, potresti prendere in considerazione la rimozione dal sistema dei pacchetti Python preinstallati se le tue applicazioni non dipendono da essi. Ciò non solo contribuirà a ridurre le dimensioni finali degli artefatti per evitare di superare il limite di servizio per le dimensioni delle applicazioni, ma migliorerà anche i tempi di creazione delle applicazioni con la funzionalità di implementazione come applicazione.

È possibile eseguire il seguente comando per elencare tutti i pacchetti Python installati con le rispettive dimensioni installate e rimuovere selettivamente i pacchetti con dimensioni significative.

%flink.pyflink !pip list --format freeze | awk -F = {'print $1'} | xargs pip show | grep -E 'Location:|Name:' | cut -d ' ' -f 2 | paste -d ' ' - - | awk '{gsub("-","_",$1); print $2 "/" tolower($1)}' | xargs du -sh 2> /dev/null | sort -hr
Nota

apache-beam è richiesto per il funzionamento di Flink Python. Questo pacchetto e le sue dipendenze non devono mai essere rimossi.

Di seguito è riportato l'elenco dei pacchetti Python preinstallati in Studio V2 che possono essere presi in considerazione per la rimozione:

scipy statsmodels plotnine seaborn llvmlite bokeh pandas matplotlib botocore boto3 numba
Per rimuovere un pacchetto Python dal notebook Zeppelin:
  1. Controlla se la tua applicazione dipende dal pacchetto, o da uno dei pacchetti che la utilizzano, prima di rimuoverla. È possibile identificare i dipendenti di un pacchetto utilizzando pipdeptree.

  2. Esegui il seguente comando per rimuovere un pacchetto:

    %flink.pyflink !pip uninstall -y <package-to-remove>
  3. Se hai bisogno di recuperare un pacchetto rimosso per errore, esegui il seguente comando:

    %flink.pyflink !pip install <package-to-install>
Esempio Esempio: rimuovi il pacchetto scipy prima di implementare l'applicazione Python con la funzionalità di implementazione come applicazione.
  1. Utilizza pipdeptree per scoprire tutti i consumatori scipy e verificare se puoi rimuovere scipy in sicurezza.

    • Installa lo strumento tramite notebook:

      %flink.pyflink !pip install pipdeptree
    • Ottieni l'albero delle dipendenze invertito di scipy eseguendo:

      %flink.pyflink !pip -r -p scipy

      Verrà visualizzato un output simile al seguente (condensato per brevità):

      ... ------------------------------------------------------------------------ scipy==1.8.0 ├── plotnine==0.5.1 [requires: scipy>=1.0.0] ├── seaborn==0.9.0 [requires: scipy>=0.14.0] └── statsmodels==0.12.2 [requires: scipy>=1.1] └── plotnine==0.5.1 [requires: statsmodels>=0.8.0]
  2. Ispeziona attentamente l'utilizzo di seaborn, statsmodels e plotnine nelle tue applicazioni. Se le tue applicazioni non dipendono da scipy, seaborn, statemodels o da plotnine, puoi rimuovere tutti questi pacchetti o solo quelli che non sono necessari alle tue applicazioni.

  3. Rimuovi il pacchetto eseguendo:

    !pip uninstall -y scipy plotnine seaborn statemodels

Annullare job

Questa sezione mostra come annullare i processi di Apache Flink a cui non puoi accedere da Apache Zeppelin. Se desideri annullare un processo di questo tipo, vai al pannello di controllo di Apache Flink, copia l'ID del processo, quindi utilizzalo in uno dei seguenti esempi.

Per annullare un singolo processo:

%flink.pyflink import requests requests.patch("https://zeppelin-flink:8082/jobs/[job_id]", verify=False)

Per annullare tutti i processi in esecuzione:

%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: if (job["status"] == "RUNNING"): print(requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False))

Per annullare tutti i processi:

%flink.pyflink import requests r = requests.get("https://zeppelin-flink:8082/jobs", verify=False) jobs = r.json()['jobs'] for job in jobs: requests.patch("https://zeppelin-flink:8082/jobs/{}".format(job["id"]), verify=False)

Riavvia l'interprete Apache Flink

Per riavviare l'interprete Apache Flink sul notebook Studio

  1. Scegli Configurazione accanto all'angolo in alto a destra della schermata.

  2. Scegli Interprete.

  3. Scegli riavvia e poi OK.