Solucionar problemas de notebooks Studio para serviço gerenciado para Apache Flink - Managed Service for Apache Flink

Anteriormente, o Amazon Managed Service for Apache Flink era conhecido como Amazon Kinesis Data Analytics for Apache Flink.

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Solucionar problemas de notebooks Studio para serviço gerenciado para Apache Flink

Esta seção contém informações sobre solução de problemas para notebooks Studio.

Interromper um aplicativo bloqueado

Para interromper um aplicativo que está preso em um estado transitório, chame a StopApplicationação com o Force parâmetro definido como. true Para obter mais informações, consulte Running Applications, no Guia do desenvolvedor do Managed Service for Apache Flink.

Implemente como um aplicativo com estado durável sem acesso à Internet VPC

A deploy-as-application função Managed Service for Apache Flink Studio não oferece suporte a VPC aplicativos sem acesso à Internet. Recomendamos que você crie seu aplicativo no Studio e, em seguida, use o Managed Service for Apache Flink para criar manualmente um aplicativo Flink e selecionar o arquivo zip que você criou em seu Notebook.

As etapas a seguir descrevem essa abordagem:

  1. Crie e exporte seu aplicativo Studio para o Amazon S3. Isso deve ser um arquivo zip.

  2. Crie um aplicativo Managed Service for Apache Flink manualmente com um caminho de código referenciando a localização do arquivo zip no Amazon S3. Além disso, você precisará configurar o aplicativo com as seguintes variáveis env (2 groupID, 3 var no total):

  3. kinesis.analytics.flink.run.options

    1. python: source/note.py

    2. arquivo jar: PythonApplicationDependencies lib/.jar

  4. managed.deploy_as_app.options

    1. Banco de dadosARN: <glue database ARN (Amazon Resource Name)>

  5. Talvez seja necessário conceder permissões às IAM funções Managed Service for Apache Flink Studio e Managed Service for Apache Flink para os serviços que seu aplicativo usa. Você pode usar a mesma IAM função para os dois aplicativos.

Deploy-as-app redução do tamanho e do tempo de construção

Os aplicativos Studio deploy-as-app for Python empacotam tudo o que está disponível no ambiente Python porque não podemos determinar quais bibliotecas você precisa. Isso pode resultar em um tamanho maior do que o necessário. deploy-as-app O procedimento a seguir demonstra como reduzir o tamanho do aplicativo deploy-as-app Python desinstalando dependências.

Se você estiver criando um aplicativo Python com deploy-as-app recursos do Studio, considere remover pacotes Python pré-instalados do sistema, caso seus aplicativos não dependam deles. Isso não só ajudará a reduzir o tamanho final do artefato para evitar a violação do limite de serviço para o tamanho do aplicativo, mas também melhorará o tempo de criação dos aplicativos com o deploy-as-app recurso.

Execute o comando a seguir para listar todos os pacotes Python instalados com seus respectivos tamanhos instalados e remover seletivamente os pacotes com tamanho 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

Para funcionar, o Flink Python exige o apache-beam. Você nunca deve remover esse pacote e suas dependências.

A seguir está a lista de pacotes Python pré-instalados no Studio V2 que podem ser considerados para remoção:

scipy statsmodels plotnine seaborn llvmlite bokeh pandas matplotlib botocore boto3 numba
Para remover um pacote Python do caderno do Zeppelin:
  1. Verifique se o aplicativo depende do pacote, ou de qualquer um dos pacotes que o consome, antes de removê-lo. Identifique os dependentes de um pacote usando pipdeptree.

  2. Executar o seguinte comando para remover um pacote:

    %flink.pyflink !pip uninstall -y <package-to-remove>
  3. Se você precisar recuperar um pacote removido por engano, execute o seguinte comando:

    %flink.pyflink !pip install <package-to-install>
exemplo Exemplo: remova o scipy pacote antes de implantar seu aplicativo deploy-as-app Python com o recurso.
  1. Use pipdeptree para descobrir todos os consumidores do scipy e verificar se você pode remover scipy com segurança.

    • Instale a ferramenta por meio do caderno:

      %flink.pyflink !pip install pipdeptree
    • Obtenha a árvore de dependências revertida do scipy executando:

      %flink.pyflink !pip -r -p scipy

      Você verá um resultado semelhante ao seguinte (reduzido para concisão):

      ... ------------------------------------------------------------------------ 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. Inspecione cuidadosamente o uso de seaborn, statsmodels e plotnine em seus aplicativos. Se os aplicativos não dependerem do scipy, seaborn, statemodels ou plotnine, você poderá remover todos esses pacotes ou somente aqueles que os aplicativos não precisarem.

  3. Remova o pacote executando:

    !pip uninstall -y scipy plotnine seaborn statemodels

Cancelar trabalhos

Esta seção mostra como cancelar trabalhos do Apache Flink que você não pode acessar no Apache Zeppelin. Se você quiser cancelar esse trabalho, acesse o painel do Apache Flink, copie o ID do trabalho e use-o em um dos exemplos a seguir.

Para cancelar um único trabalho:

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

Para cancelar todos os trabalhos em execução:

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

Para cancelar todos os trabalhos:

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

Reinicie o interpretador Apache Flink

Para reiniciar o interpretador Apache Flink em seu notebook Studio

  1. Selecione Configuração no canto superior direito da tela.

  2. Selecione Intérprete.

  3. Selecione reiniciar e, em seguida, OK.