Amazon Managed Service for Apache Flink は、以前は Amazon Kinesis Data Analytics for Apache Flink と呼ばれていました。
翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
Managed Service for Apache Flink の Studio ノートブックのトラブルシューティング
このセクションには、Studio ノートブックのトラブルシューティング情報が記載されています。
スタックしたアプリケーションの停止
一時的な状態でスタックしているアプリケーションを停止するには、 Force
パラメータを に設定して StopApplicationアクションを呼び出しますtrue
。詳細については、「Apache Flink 用 Managed Service デベロッパーガイド」内の「Running Applications」を参照してください。
インターネットにアクセスできない に耐久性のある状態のアプリケーションとしてデプロイVPCする
Managed Service for Apache Flink Studio deploy-as-application 関数は、インターネットアクセスのないVPCアプリケーションをサポートしていません。Studio でアプリケーションを構築し、Apache Flink 用 Managed Service を使用して Flink アプリケーションを手動で作成し、Notebookで構築した zip ファイルを選択することをお勧めします。
以下のステップは、この方法の概要を説明します。
Studio アプリケーションをビルドして Amazon S3 にエクスポートします。これは zip ファイルである必要があります。
Amazon S3 にある zip ファイルのロケーションを参照するコードパスを使用して、Apache Flink アプリケーション用 Managed Service を手動で作成します。さらに、以下の
env
変数(合計 2 つ のgroupID
、3 つのvar
)を使用してアプリケーションを設定する必要があります。kinesis.analytics.flink.run.options
python: source/note.py
jarfile: lib/PythonApplicationDependencies.jar
managed.deploy_as_app.options
データベースARN:
<glue database ARN (Amazon Resource Name)>
アプリケーションが使用するサービスの Managed Service for Apache Flink Studio および Managed Service for Apache Flink IAMロールにアクセス許可を付与する必要がある場合があります。両方のアプリケーションに同じIAMロールを使用できます。
Deploy-as-app サイズと構築時間の短縮
Studio deploy-as-app for Python アプリケーションは、必要なライブラリを特定できないため、Python 環境で利用可能なすべてのものをパッケージ化します。これにより、必要な deploy-as-appサイズよりも大きくなる可能性があります。次の手順では、依存関係を deploy-as-appアンインストールして Python アプリケーションサイズのサイズを縮小する方法を示します。
Studio の機能を使用して deploy-as-app Python アプリケーションを構築する場合は、アプリケーションが依存していない場合、プリインストールされた Python パッケージをシステムから削除することを検討してください。これにより、最終的なアーティファクトのサイズを小さくして、アプリケーションサイズのサービス制限に違反するのを防ぐだけでなく、 deploy-as-app機能を持つアプリケーションのビルド時間も短縮できます。
次のコマンドを実行すると、インストールされているすべての Python パッケージとそれぞれのインストールサイズを一覧表示し、サイズの大きいパッケージを選択的に削除できます。
%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
注記
Flink Python が動作するためには apache-beam
が必要です。このパッケージとその依存関係は絶対に削除しないでください。
以下は、Studio V2 にプリインストールされている Python パッケージの一覧です。これらの削除を検討できます。
scipy statsmodels plotnine seaborn llvmlite bokeh pandas matplotlib botocore boto3 numba
Zeppelin ノートブックから Python パッケージを削除するには:
削除する前に、アプリケーションがそのパッケージやそれを利用するパッケージに依存しているかどうかを確認してください。pipdeptree
を使うと、パッケージの依存パッケージを特定できます。 以下のコマンドを実行してパッケージを削除します。
%flink.pyflink !pip uninstall -y <package-to-remove>
誤って削除したパッケージを取り戻す必要がある場合は、以下のコマンドを実行します。
%flink.pyflink !pip install <package-to-install>
例: Python アプリケーションを 機能で deploy-as-appデプロイする前に、scipy
パッケージを削除します。
pipdeptree
を使用して、scipy
に依存している他のパッケージやプロジェクトを検出し、scipy
を安全に削除できるかどうかを確認します。ノートブックからツールをインストールします。
%flink.pyflink !pip install pipdeptree
以下を実行して、
scipy
の逆依存関係ツリーを取得します。%flink.pyflink !pip -r -p scipy
次のような出力が表示されます (これは要約版です):
... ------------------------------------------------------------------------ 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]
アプリケーションでの
seaborn
、statsmodels
およびplotnine
の使用法を注意深く確認してください。アプリケーションがscipy
、seaborn
、statemodels
、plotnine
のいずれにも依存していない場合は、これらのパッケージをすべて削除することも、アプリケーションが必要としないパッケージだけを削除することもできます。次のコマンドを実行してパッケージを削除します。
!pip uninstall -y scipy plotnine seaborn statemodels
ジョブをキャンセルする
このセクションでは、Apache Zeppelin から実行できない Apache Flink ジョブをキャンセルする方法を説明します。このようなジョブをキャンセルしたい場合は、Apache Flink ダッシュボードに移動し、ジョブ ID をコピーして、以下の例のいずれかでそれを使用してください。
個々のジョブをキャンセルするには:
%flink.pyflink import requests requests.patch("https://zeppelin-flink:8082/jobs/[job_id]", verify=False)
実行中のジョブをすべてキャンセルするには:
%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))
すべてのジョブをキャンセルするには:
%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)
Apache Flink インタープリタを再起動する
Studio ノートブック内の Apache Flink インタープリタを再起動するには
画面の右上にある [Configuration] を選択します。
[Interpreter] を選択します。
-
[再起動] を選択してから [OK] を選択します。