Managed Service for Apache Flink の Studio ノートブックのトラブルシューティング - Managed Service for Apache Flink

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 ファイルを選択することをお勧めします。

以下のステップは、この方法の概要を説明します。

  1. Studio アプリケーションをビルドして Amazon S3 にエクスポートします。これは zip ファイルである必要があります。

  2. Amazon S3 にある zip ファイルのロケーションを参照するコードパスを使用して、Apache Flink アプリケーション用 Managed Service を手動で作成します。さらに、以下の env 変数(合計 2 つ のgroupID、3 つの var)を使用してアプリケーションを設定する必要があります。

  3. kinesis.analytics.flink.run.options

    1. python: source/note.py

    2. jarfile: lib/PythonApplicationDependencies.jar

  4. managed.deploy_as_app.options

    1. データベースARN:<glue database ARN (Amazon Resource Name)>

  5. アプリケーションが使用するサービスの Managed Service for Apache Flink Studio および Managed Service for Apache Flink IAMロールにアクセス許可を付与する必要がある場合があります。両方のアプリケーションに同じIAMロールを使用できます。

D eploy-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 パッケージを削除するには:
  1. 削除する前に、アプリケーションがそのパッケージやそれを利用するパッケージに依存しているかどうかを確認してください。pipdeptree を使うと、パッケージの依存パッケージを特定できます。

  2. 以下のコマンドを実行してパッケージを削除します。

    %flink.pyflink !pip uninstall -y <package-to-remove>
  3. 誤って削除したパッケージを取り戻す必要がある場合は、以下のコマンドを実行します。

    %flink.pyflink !pip install <package-to-install>
例: Python アプリケーションを deploy-as-app 機能でデプロイする前に、 scipyパッケージを削除します。
  1. 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]
  2. アプリケーションでの seabornstatsmodels および plotnine の使用法を注意深く確認してください。アプリケーションが scipyseabornstatemodelsplotnine のいずれにも依存していない場合は、これらのパッケージをすべて削除することも、アプリケーションが必要としないパッケージだけを削除することもできます。

  3. 次のコマンドを実行してパッケージを削除します。

    !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 インタープリタを再起動するには

  1. 画面の右上にある [Configuration] を選択します。

  2. [Interpreter] を選択します。

  3. [再起動] を選択してから [OK] を選択します。