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

Il servizio gestito da Amazon per Apache Flink era precedentemente noto come Analisi dei dati Amazon Kinesis 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 interrompere 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 uno stato durevole in un ambiente senza accesso VPC a Internet

La deploy-as-application funzione Managed Service for Apache Flink Studio non supporta VPC applicazioni 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: source/note.py

    2. file jar: lib/ .jar PythonApplicationDependencies

  4. managed.deploy_as_app.options

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

  5. Potrebbe essere necessario concedere le autorizzazioni ai IAM ruoli Managed Service for Apache Flink Studio e Managed Service for Apache Flink per i servizi utilizzati dall'applicazione. Puoi usare lo stesso IAM ruolo per entrambe le app.

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

Le applicazioni Studio deploy-as-app for Python racchiudono tutto ciò che è disponibile nell'ambiente Python perché non possiamo determinare di quali librerie hai bisogno. Ciò può comportare una dimensione maggiore del necessario. deploy-as-app La procedura seguente mostra come ridurre le dimensioni dell'applicazione deploy-as-app Python disinstallando le dipendenze.

Se stai creando un'applicazione Python con deploy-as-app funzionalità di Studio, potresti prendere in considerazione la possibilità di rimuovere i pacchetti Python preinstallati dal sistema se le tue applicazioni non dipendono da. Ciò non solo contribuirà a ridurre le dimensioni finali degli artefatti per evitare di violare il limite di servizio relativo alle dimensioni delle applicazioni, ma migliorerà anche i tempi di creazione delle applicazioni dotate di questa funzionalità. deploy-as-app

È 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: rimuovi il scipy pacchetto prima di distribuire l'applicazione deploy-as-app Python con funzionalità.
  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

Annulla lavori

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.