Anteriormente, o Amazon Managed Service for Apache Flink (Amazon MSF) era conhecido como Amazon Kinesis Data Analytics for Apache Flink.
Solução de problemas do notebook do Studio no Managed Service for Apache Flink
Esta seção contém informações sobre solução de problemas para notebooks Studio.
Interrompa um aplicativo travado
Para interromper um aplicativo que está preso em um estado transitório, chame a ação StopApplication 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.
Implante como um aplicativo com estado durável em uma VPC sem acesso à Internet
O serviço gerenciado para a função de implantação como aplicativo do Apache Flink Studio não oferece suporte a aplicativos VPC 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:
Crie e exporte seu aplicativo Studio para o Amazon S3. Isso deve ser um arquivo zip.
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(2groupID, 3varno total):kinesis.analytics.flink.run.options
python: source/note.py
jarfile: lib/PythonApplicationDependencies.jar
managed.deploy_as_app.options
DatabaseARN:
<glue database ARN (Amazon Resource Name)>
Talvez seja necessário conceder permissões aos perfis do IAM do Managed Service for Apache Flink Studio e Managed Service for Apache Flink para os serviços que seu aplicativo usa. Você pode usar o mesmo perfil do IAM para os dois aplicativos.
Tamanho da implantação como aplicativo e redução do tempo de compilação
Como não podemos determinar quais bibliotecas você precisa, o deploy-as-app do Studio para aplicativos em Python empacota tudo o que estiver disponível no ambiente Python. Isso pode resultar em um tamanho de implantação como aplicativo maior do que o necessário. O procedimento a seguir demonstra como reduzir o tamanho do aplicativo em Python implantado como aplicativo, desinstalando as dependências.
Se você estiver criando um aplicativo em Python com o atributo de implantação como aplicativo do Studio, considere remover os pacotes Python pré-instalados do sistema se os aplicativos não dependerem 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 atributo de implantação como aplicativo.
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:
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
. Executar o seguinte comando para remover um pacote:
%flink.pyflink !pip uninstall -y <package-to-remove>Se você precisar recuperar um pacote removido por engano, execute o seguinte comando:
%flink.pyflink !pip install <package-to-install>
exemplo Exemplo: remova o pacote scipy antes de implantar o aplicativo em Python com o atributo de implantação como aplicativo.
Use
pipdeptreepara descobrir todos os consumidores doscipye verificar se você pode removerscipycom segurança.Instale a ferramenta por meio do caderno:
%flink.pyflink !pip install pipdeptreeObtenha a árvore de dependências revertida do
scipyexecutando:%flink.pyflink !pip -r -p scipyVocê 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]
Inspecione cuidadosamente o uso de
seaborn,statsmodelseplotnineem seus aplicativos. Se os aplicativos não dependerem doscipy,seaborn,statemodelsouplotnine, você poderá remover todos esses pacotes ou somente aqueles que os aplicativos não precisarem.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
Selecione Configuração no canto superior direito da tela.
Selecione Intérprete.
-
Selecione reiniciar e, em seguida, OK.