Resolución de problemas - Managed Service para Apache Flink

Amazon Managed Service para Apache Flink Amazon se denominaba anteriormente Amazon Kinesis Data Analytics para Apache Flink.

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Resolución de problemas

Esta sección contiene información sobre la solución de problemas de los cuadernos de Studio.

Detención de una aplicación atascada

Para detener una aplicación que está atascada en un estado transitorio, llame a la StopApplicationacción con el Force parámetro establecido en. true Para obtener más información, consulte Running Applicationsn en la Guía para desarrolladores de Managed Service para Apache Flink.

Implementación como una aplicación con un estado duradero en una VPC sin acceso a Internet

La deploy-as-application función Managed Service for Apache Flink Studio no admite aplicaciones de VPC sin acceso a Internet. Le recomendamos que cree la aplicación en Studio y, a continuación, utilice Managed Service para Apache Flink para crear manualmente una aplicación de Flink y seleccionar el archivo zip que creó en su cuaderno.

Los pasos siguientes describen este abordaje:

  1. Compile y exporte su aplicación de Studio a Amazon S3. Debe ser un archivo zip.

  2. Cree una aplicación de Managed Service para Apache Flink manualmente con una ruta de código que haga referencia a la ubicación del archivo zip en Amazon S3. Además, necesitará configurar la aplicación con las siguientes variables env (2 groupID, 3 var en total):

  3. kinesis.analytics.flink.run.options

    1. python: source/note.py

    2. Archivo jar: lib/ .jar PythonApplicationDependencies

  4. managed.deploy_as_app.options

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

  5. Es posible que necesite conceder permisos a las funciones de IAM de Managed Service para Apache Flink Studio y de Managed Service para Apache Flink para los servicios que su aplicación utilice. Puede usar el mismo rol de IAM para ambas aplicaciones.

Reducción del eploy-as-app tamaño D y del tiempo de construcción

Las aplicaciones de Studio deploy-as-app for Python empaquetan todo lo que está disponible en el entorno Python porque no podemos determinar qué bibliotecas necesita. Esto puede resultar en un tamaño mayor del necesario. deploy-as-app El siguiente procedimiento muestra cómo reducir el tamaño de la aplicación deploy-as-app Python mediante la desinstalación de las dependencias.

Si está creando una aplicación de Python con una deploy-as-app función de Studio, podría considerar la posibilidad de eliminar los paquetes de Python preinstalados del sistema si sus aplicaciones no dependen de ella. Esto no solo ayudará a reducir el tamaño final del artefacto para evitar sobrepasar el límite de tamaño de las aplicaciones por servicio, sino que también mejorará el tiempo de compilación de las aplicaciones que cuenten con esta función. deploy-as-app

Puede ejecutar el siguiente comando para enumerar todos los paquetes de Python instalados con sus respectivos tamaños de instalación y eliminar selectivamente los que tienen un tamaño significativo.

%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 es necesario para que Flink Python funcione. Nunca debe eliminar este paquete ni sus dependencias.

A continuación se encuentra la lista de paquetes de Python preinstalados en Studio V2 que se pueden eliminar:

scipy statsmodels plotnine seaborn llvmlite bokeh pandas matplotlib botocore boto3 numba
Para eliminar un paquete de Python del bloc de notas de Zeppelin:
  1. Compruebe si su aplicación depende del paquete, o de alguno de los paquetes que lo utilice, antes de eliminarla. Puede identificar los dependientes de un paquete mediante pipdeptree.

  2. Ejecución del siguiente comando para eliminar un paquete:

    %flink.pyflink !pip uninstall -y <package-to-remove>
  3. Si necesita recuperar un paquete que se eliminó por error, ejecute el siguiente comando:

    %flink.pyflink !pip install <package-to-install>
ejemplo Ejemplo: Elimine el scipy paquete antes de implementar su aplicación Python con la deploy-as-app función.
  1. Use pipdeptree para descubrir todos los consumidores de scipy y comprobar si puede eliminar scipy de forma segura.

    • Instale la herramienta a través del bloc de notas:

      %flink.pyflink !pip install pipdeptree
    • Obtenga un árbol de dependencias invertido de scipy al ejecutar:

      %flink.pyflink !pip -r -p scipy

      Debería ver una salida similar a la siguiente (está condensada para mayor rapidez):

      ... ------------------------------------------------------------------------ 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. Inspeccione cuidadosamente el uso de seaborn, statsmodels y plotnine en sus aplicaciones. Si sus aplicaciones no dependen de ninguno de los paquetes scipy, seaborn, statemodels o plotnine, puede eliminarlos todos o solo los que sus aplicaciones no necesiten.

  3. Elimine el paquete al ejecutar:

    !pip uninstall -y scipy plotnine seaborn statemodels

Cancelación de trabajos

En esta sección, se muestra cómo cancelar los trabajos de Apache Flink a los que no puede acceder desde Apache Zeppelin. Si desea cancelar un trabajo de este tipo, vaya al panel de control de Apache Flink, copie el identificador del trabajo y utilícelo en uno de los siguientes ejemplos.

Cómo cancelar un solo trabajo:

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

Cómo cancelar todos los trabajos en ejecución:

%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))

Cómo cancelar todos los trabajos:

%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)

Reinicio del intérprete Apache Flink

Cómo reiniciar el intérprete Apache Flink en su cuaderno de Studio

  1. Elija Configuración cerca de la esquina superior derecha de la pantalla.

  2. Elija Intérprete.

  3. Seleccione reiniciar y, a continuación, Aceptar.