

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Managed Service for Apache Flink の Studio ノートブックをトラブルシューティングする
<a name="how-zeppelin-troubleshooting"></a>

このセクションには、Studio ノートブックのトラブルシューティング情報が記載されています。

## 動かなくなったアプリケーションを停止する
<a name="how-zeppelin-troubleshooting-stopping"></a>

一時的に動かなくなったアプリケーションを停止するには、「[StopApplication](https://docs.aws.amazon.com/managed-flink/latest/apiv2/API_StopApplication.html)」 アクションを呼び出して `Force` パラメータを `true` に設定します。詳細については、「[Apache Flink 用 Managed Service デベロッパーガイド](https://docs.aws.amazon.com/managed-flink/latest/java/)」内の「[Running Applications](https://docs.aws.amazon.com/managed-flink/latest/java/how-running-apps.html)」を参照してください。

## インターネットにアクセスできない VPC で永続的な状態のアプリケーションとしてデプロイする
<a name="how-zeppelin-troubleshooting-deploying-no-internet"></a>

Apache Flink Studio 用 Managed Serviceの deploy-as-application 機能は、インターネットにアクセスできないVPCアプリケーションをサポートしません。Studio でアプリケーションを構築し、Apache Flink 用 Managed Service を使用して Flink アプリケーションを手動で作成し、Notebookで構築した zip ファイルを選択することをお勧めします。

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

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

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

1. kinesis.analytics.flink.run.options

   1. python: source/note.py

   1. jar ファイル:lib/PythonApplicationDependencies.jar

1. managed.deploy\$1as\$1app.options

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

1. アプリケーションが使用するサービスについて、Apache Flink Studio 用 Managed Service と Apache Flink IAM ロール用 Managed Service にアクセス許可を与える必要がある場合があります。両方のアプリに同じ IAM ロールを使用できます。

## deploy-as-app 機能によるアプリケーションサイズの圧縮とビルド時間の短縮
<a name="how-zeppelin-troubleshooting-deploying-as-app-reduce-build-time"></a>

Python アプリケーション用の Studio deploy-as-app は、必要なライブラリを特定できないため、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](https://pypi.org/project/pipdeptree/) を使うと、パッケージの依存パッケージを特定できます。

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

   ```
   %flink.pyflink
   !pip uninstall -y <package-to-remove>
   ```

1. 誤って削除したパッケージを取り戻す必要がある場合は、以下のコマンドを実行します。

   ```
   %flink.pyflink
   !pip install <package-to-install>
   ```

**Example 例: deploy-as-app 機能を使用して Python アプリケーションをデプロイする前に、`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]
     ```

1. アプリケーションでの `seaborn`、`statsmodels` および `plotnine` の使用法を注意深く確認してください。アプリケーションが `scipy`、`seaborn`、`statemodels`、`plotnine` のいずれにも依存していない場合は、これらのパッケージをすべて削除することも、アプリケーションが必要としないパッケージだけを削除することもできます。

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

   ```
   !pip uninstall -y scipy plotnine seaborn statemodels
   ```

## ジョブのキャンセル
<a name="how-notbook-canceling-jobs"></a>

このセクションでは、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 インタープリタを再起動する
<a name="how-notbook-restarting-interpreter"></a>

Studio ノートブック内の Apache Flink インタープリタを再起動するには

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

1. [**Interpreter**] を選択します。

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