このトピックでは、Realtime Compute for Apache Flink に関するよくある質問への回答をいくつか紹介します。コンソール操作、ネットワーク接続、JAR パッケージに関する質問への回答が含まれています。
コンソール操作
Realtime Compute for Apache Flink コンソールにログオンするときに、アカウントに必要な権限がない場合はどうすればよいですか?
アカウントの AccessKey ID と AccessKey シークレットに関する情報を表示するにはどうすればよいですか?
デプロイで使用されている Realtime Compute for Apache Flink のエンジンバージョンをクエリするにはどうすればよいですか?
Realtime Compute for Apache Flink で自動的にアクティブ化される Prometheus サービスを非アクティブ化するにはどうすればよいですか?
ネットワーク接続
JAR パッケージ
OSS コンソールでリソースファイルをアップロードするにはどうすればよいですか?
Realtime Compute for Apache Flink の開発コンソールの [成果物] ページでリソースファイルをアップロードすることもできます。詳細については、「リソースの管理」をご参照ください。
Realtime Compute for Apache Flink の管理コンソールで、ワークスペースに関連付けられているオブジェクトストレージサービス(OSS)バケットに関する情報を表示します。
次の図は、OSS バケットに関する情報を示しています。
OSSコンソール にログオンし、リソースファイルを OSSバケットの /artifacts/namespaces ディレクトリにアップロードします。
Realtime Compute for Apache Flink の開発コンソールの左側のナビゲーションペインで、[成果物] をクリックして、OSS コンソールにアップロードしたリソースファイルを表示します。
デプロイ実行用のパラメーターを構成するにはどうすればよいですか?
管理するワークスペースを見つけ、[アクション] 列の [コンソール] をクリックします。
左側のナビゲーションペインで、
をクリックします。[デプロイ] ページで、管理するデプロイの名前をクリックします。[構成] タブの [パラメーター] セクションの右上隅にある [編集] をクリックします。
[パラメーター] セクションで、[その他の構成] フィールドに次の関連構成を追加します。
各キーと値のペアの間のコロン(:)の後にスペースがあることを確認してください。サンプルコード:
task.cancellation.timeout: 180s
[パラメーター] セクションの右上隅にある [保存] をクリックします。
GC ログを有効にするにはどうすればよいですか?
ページで、目的のデプロイを見つけ、デプロイの名前をクリックします。[構成] タブの [パラメーター] セクションの右上隅にある [編集] をクリックします。[その他の構成] フィールドに次の関連構成を追加します。次に、[保存] をクリックします。次の図は、サンプルコードを示しています。
env.java.opts:>--XX: +PrintGCDetails-XX:+PrintGCDateStamps-Xloggc:/flink/log/gc.log-XX:+UseGCLogFileRotation-XX:NumberOfGCLogFiles=2-XX:GCLogFileSize=50M
アラートをトリガーしたデプロイを見つけるにはどうすればよいですか?
アラートイベントには、JobID と Deployment ID が含まれています。ただし、フェールオーバーの実行後、JobID は変更されます。この場合、Deployment ID を使用して、エラーが返されたデプロイを見つける必要があります。Deployment ID は、Realtime Compute for Apache Flink の開発コンソールには表示されません。この情報は、デプロイの URL から取得する必要があります。
ワークスペース ID など、ワークスペースに関する情報を表示するにはどうすればよいですか?
Realtime Compute for Apache Flink コンソールにログオンし、管理するワークスペースを見つけて、[アクション] 列の
アカウントの AccessKey ID と AccessKey シークレットに関する情報を表示するにはどうすればよいですか?
2023 年 7 月 5 日現在、AccessKey ペアの漏洩によるリスクを軽減するため、AccessKey ペアの AccessKey シークレットは、Alibaba Cloud アカウントまたは RAM ユーザーを作成するときにのみ表示できます。今後、AccessKey ペアの AccessKey シークレットを表示することはできません。
Alibaba Cloud 管理コンソールで AccessKey ID と AccessKey シークレットを取得するには、次の操作を実行できます。
Alibaba Cloud 管理コンソールにログオンします。
ホームページの右上隅にあるプロフィール写真にポインターを移動し、[accesskey 管理] をクリックします。
[AccessKey ペア] ページで、[accesskey の作成] をクリックします。[AccessKey の作成] ダイアログボックスで、[CSV ファイルのダウンロード] をクリックして AccessKey ID と AccessKey シークレットをダウンロードするか、[コピー] をクリックして AccessKey ID と AccessKey シークレットをコピーします。
[AccessKey の作成] ダイアログボックスで、[accesskey シークレットを保存しました] を選択し、[OK] をクリックします。
RAM ユーザーの AccessKey ペアを作成する方法の詳細については、「AccessKey の作成」をご参照ください。
デプロイで使用されている Realtime Compute for Apache Flink のエンジンバージョンをクエリするにはどうすればよいですか?
デプロイで使用されている Realtime Compute for Apache Flink のエンジンバージョンを表示するには、次のいずれかの方法を使用できます。
SQL エディターページの右側で、[構成] タブをクリックします。[構成] パネルの [エンジンバージョン] フィールドで、デプロイで使用されている Realtime Compute for Apache Flink のエンジンバージョンを表示します。
ページで、目的のデプロイの名前をクリックします。[構成] タブの [基本] セクションの [エンジンバージョン] フィールドで、デプロイで使用されている Realtime Compute for Apache Flink のエンジンバージョンを表示します。
Realtime Compute for Apache Flink で自動的にアクティブ化される Prometheus サービスを非アクティブ化するにはどうすればよいですか?
Prometheus サービスを非アクティブ化すると、Prometheus サービスを再度アクティブ化することはできなくなり、Ververica Platform(VVP)は Realtime Compute for Apache Flink の開発コンソールにデプロイの共通メトリックを表示しなくなります。デプロイの実行時に例外が発生した場合、例外が最初に発生した時刻を特定できず、アラートを報告できません。注意して進めてください。
Realtime Compute for Apache Flink の監視が不要になった場合は、次の手順を実行して Prometheus サービスを非アクティブ化します。
Prometheus サービスコンソールにログオンします。
左側のナビゲーションペインで、[インスタンス] をクリックして、[Prometheus サービス] ページに移動します。
[タグでフィルタリング] ドロップダウンリストから、管理するワークスペースの ID または名前を選択します。
[インスタンスタイプ] が [prometheus For Flink Serverless] であるインスタンスを見つけ、[アクション] 列の [アンインストール] をクリックします。
表示されるメッセージで、[OK] をクリックします。
ホワイトリストを設定するにはどうすればよいですか?
ほとんどの場合、Realtime Compute for Apache Flink でサポートされているアップストリームおよびダウンストリームストレージシステムは、外部システムからのアクセスを許可していません。したがって、Realtime Compute for Apache Flink の vSwitch のクラスレスドメイン間ルーティング(CIDR)ブロックを、Realtime Compute for Apache Flink がアクセスする必要があるストレージシステムのホワイトリストに追加する必要があります。Realtime Compute for Apache Flink の vSwitch の CIDR ブロックを、Realtime Compute for Apache Flink がアクセスする必要があるストレージシステムのホワイトリストに追加するには、次の手順を実行します。
管理する [ワークスペース] を見つけ、
[アクション] 列の を選択します。[ワークスペースの詳細] ダイアログボックスで、[realtime Compute For Apache Flink] の vSwitch の [CIDR ブロック] を表示します。
[realtime Compute For Apache Flink] の vSwitch の [CIDR ブロック] を、Realtime Compute for Apache Flink がアクセスする必要があるストレージシステムのホワイトリストに追加します。
たとえば、ApsaraDB RDS for MySQL データベースのホワイトリストを設定する必要があります。詳細については、「ApsaraDB RDS for MySQL インスタンスの IP アドレスホワイトリストの設定」をご参照ください。
説明後で vSwitch を追加する場合は、新しい vSwitch の CIDR ブロックも、Realtime Compute for Apache Flink がアクセスする必要があるストレージシステムのホワイトリストに追加する必要があります。
vSwitch がアップストリームおよびダウンストリームストレージと同じゾーンにない場合、vSwitch の CIDR ブロックをホワイトリストに追加すると、ネットワークを接続できます。
Realtime Compute for Apache Flink コンソールにログオンするときに、アカウントに必要な権限がない場合はどうすればよいですか?Realtime Compute for Apache Flinkコンソールにログオンしたときに、アカウントに必要な権限がない場合はどうすればよいですか?
問題の説明
Realtime Compute for Apache Flink コンソールにログオンすると、次の図に示すエラーメッセージが表示されます。
原因
Realtime Compute for Apache Flink ワークスペースを表示する権限がないか、特定のリソースグループの権限のみがあります。
解決策
特定のリソースグループの権限のみがある場合は、コンソールの上部で関連するリソースグループを選択し、リージョンを選択して目的のワークスペースを表示します。
Realtime Compute for Apache Flink ワークスペースを表示する権限がない場合は、RAM ロールが割り当てられている RAM ユーザーまたは Alibaba Cloud アカウントに関連する権限を付与します。詳細については、「RAM ユーザーへの権限の付与」をご参照ください。
Realtime Compute for Apache Flink ワークスペースを表示する権限を含む次のポリシーのいずれかを選択できます。
Realtime Compute for Apache Flink はどのようにインターネットにアクセスしますか?
背景情報
デフォルトでは、Realtime Compute for Apache Flink はインターネットにアクセスできません。そのため、Alibaba Cloud は、仮想プライベートクラウド(VPC)とインターネット間の通信を可能にする NAT ゲートウェイを提供しています。これにより、Realtime Compute for Apache Flink のユーザーは、ユーザー定義関数(UDF)または DataStream コードを使用してインターネットにアクセスできます。
解決策
VPC に NAT ゲートウェイを作成します。次に、ソースネットワークアドレス変換(SNAT)エントリを作成して、Realtime Compute for Apache Flink に関連付けられている vSwitch をエラスティック IP アドレス(EIP)にバインドします。これにより、サービスは EIP を使用してインターネットにアクセスできます。EIP を使用してインターネットにアクセスするには、次の手順を実行します。
NAT ゲートウェイを作成します。詳細については、「NAT ゲートウェイの作成」をご参照ください。
SNAT エントリを作成し、Realtime Compute for Apache Flink に関連付けられている vSwitch を EIP にバインドします。詳細については、「SNAT エントリの作成と管理」をご参照ください。
Realtime Compute for Apache Flink はどのように VPC を介してサービスにアクセスしますか?
Realtime Compute for Apache Flink が VPC を介してサービスにアクセスできるようにするには、次のいずれかの方法を使用できます。
チケットを提出する。チケットを作成するときは、製品名として [VPC] を選択します。VPC 間の接続を確立するには、[express Connect] などの製品が必要です。この方法を使用すると課金されます。
ネットワークインスタンスをクラウドエンタープライズネットワーク(CEN)に接続して、ネットワーク接続を確立します。詳細については、「概要」をご参照ください。
VPN ゲートウェイを使用して、VPC 間の VPN 接続を確立します。詳細については、「2 つの VPC 間の IPsec-VPN 接続の確立」をご参照ください。
Realtime Compute for Apache Flink とは異なる VPC に存在するサービスの登録を解除します。次に、Realtime Compute for Apache Flink と同じ VPC に存在する同じサービスを購入します。
Realtime Compute for Apache Flink ワークスペースをリリースします。次に、Realtime Compute for Apache Flink がアクセスするサービスと同じ VPC にある別の Realtime Compute for Apache Flink ワークスペースを購入します。
Realtime Compute for Apache Flink のインターネットアクセスを有効にします。これにより、Realtime Compute for Apache Flink はインターネット経由で他のサービスにアクセスできます。デフォルトでは、Realtime Compute for Apache Flink はインターネットにアクセスできません。Realtime Compute for Apache Flink がインターネットにアクセスできるようにする方法の詳細については、「Realtime Compute for Apache Flink はどのようにインターネットにアクセスしますか?」をご参照ください。
説明インターネットは内部ネットワークよりも遅延が長くなります。高いパフォーマンス要件がある場合は、Realtime Compute for Apache Flink のインターネットアクセスを有効にしないことをお勧めします。
Realtime Compute for Apache Flink の開発コンソールでネットワーク検出機能を使用するにはどうすればよいですか?Realtime Compute for Apache Flink の開発コンソールでネットワーク検出機能を使用するにはどうすればよいですか?
Realtime Compute for Apache Flink は、ネットワーク検出機能をサポートしています。ネットワーク検出機能を使用するには、Realtime Compute for Apache Flink の開発コンソールで次の手順を実行します。
管理するワークスペースを見つけ、アクション 列の [コンソール] をクリックします。
上部のナビゲーションバーで、[ネットワーク検出] アイコンをクリックします。
[ネットワーク検出] ダイアログボックスで、[ホスト] パラメーターを設定して IP アドレスまたはエンドポイントを指定し、Realtime Compute for Apache Flink デプロイの実行環境がアップストリームシステムとダウンストリームシステムに接続されているかどうかを確認します。
重要エンドポイントを指定する場合は、エンドポイントの末尾から
:<port>
を削除し、[ネットワーク検出] ダイアログボックスの [ポート] フィールドに <port> を入力します。
Realtime Compute for Apache Flink の依存関係の競合をトラブルシューティングするにはどうすればよいですか?
問題の説明
Realtime Compute for Apache Flink または Hadoop に関連する例外が原因でエラーが報告されます。
java.lang.AbstractMethodError java.lang.ClassNotFoundException java.lang.IllegalAccessError java.lang.IllegalAccessException java.lang.InstantiationError java.lang.InstantiationException java.lang.InvocationTargetException java.lang.NoClassDefFoundError java.lang.NoSuchFieldError java.lang.NoSuchFieldException java.lang.NoSuchMethodError java.lang.NoSuchMethodException
エラーは報告されませんが、次のいずれかの問題が発生します。
ログが生成されないか、Log4j 構成が有効になりません。
ほとんどの場合、この問題は、依存関係に Log4j 構成が含まれているために発生します。この問題を解決するには、デプロイの JAR ファイル内の依存関係に Log4j 構成が含まれているかどうかを確認する必要があります。依存関係に Log4j 構成が含まれている場合は、依存関係で除外を設定して Log4j 構成を削除できます。
説明異なるバージョンの Log4j を使用する場合は、maven-shade-plugin を使用して Log4j 関連のクラスを再配置する必要があります。
リモートプロシージャコール(RPC)が失敗します。
デフォルトでは、Realtime Compute for Apache Flink の Akka RPC 中の依存関係の競合によって発生したエラーはログに記録されません。これらのエラーを確認するには、デバッグログを有効にする必要があります。
たとえば、デバッグログには
Cannot allocate the requested resources. Trying to allocate ResourceProfile{xxx}
が記録されます。ただし、JobManager ログはメッセージRegistering TaskManager with ResourceID xxx
で停止し、リソース要求がタイムアウトしてメッセージNoResourceAvailableException
が表示されるまで、情報は表示されません。さらに、TaskManager はエラーメッセージCannot allocate the requested resources. Trying to allocate ResourceProfile{xxx}
を継続的に報告します。原因: デバッグログを有効にすると、RPC エラーメッセージ
InvocationTargetException
が表示されます。この場合、TaskManager にスロットを割り当てることができず、TaskManager のステータスに不整合が生じます。その結果、スロットを割り当てることができず、エラーを修正できません。
原因
デプロイの JAR パッケージには、基本構成、Realtime Compute for Apache Flink、Hadoop、Log4j などの不要な依存関係が含まれています。その結果、依存関係の競合が発生し、いくつかの問題が発生します。
デプロイに必要なコネクターに対応する依存関係が JAR パッケージに含まれていません。
トラブルシューティング
デプロイの pom.xml ファイルに不要な依存関係が含まれていないかどうかを確認します。
jar tf foo.jar
コマンドを実行して JAR パッケージの内容を表示し、パッケージに依存関係の競合を引き起こすコンテンツが含まれているかどうかを判断します。mvn dependency:tree
コマンドを実行して、デプロイの依存関係を確認し、依存関係の競合が存在するかどうかを判断します。
解決策
基本構成の依存関係のスコープを provided に設定することをお勧めします。これにより、基本構成の依存関係はデプロイの JAR パッケージに含まれません。
DataStream Java
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-java_2.11</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency>
DataStream Scala
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-streaming-scala_2.11</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency>
DataSet Java
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-java</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency>
DataSet Scala
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-scala_2.11</artifactId> <version>${flink.version}</version> <scope>provided</scope> </dependency>
デプロイに必要なコネクターに対応する依存関係を追加し、スコープを compile に設定します。これにより、必要なコネクターに対応する依存関係が JAR パッケージに含まれます。スコープのデフォルト値は compile です。次のコードでは、Kafka コネクターを例として使用しています。
<dependency> <groupId>org.apache.flink</groupId> <artifactId>flink-connector-kafka_2.11</artifactId> <version>${flink.version}</version> </dependency>
Realtime Compute for Apache Flink、Hadoop、または Log4j の依存関係を追加しないことをお勧めします。次の例外に注意してください。
デプロイに基本構成またはコネクターの直接の依存関係がある場合は、スコープを provided に設定することをお勧めします。サンプルコード:
<dependency> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> <scope>provided</scope> </dependency>
デプロイに基本構成またはコネクターの間接的な依存関係がある場合は、除外を設定して依存関係を削除することをお勧めします。サンプルコード:
<dependency> <groupId>foo</groupId> <artifactId>bar</artifactId> <exclusions> <exclusion> <groupId>org.apache.hadoop</groupId> <artifactId>hadoop-common</artifactId> </exclusion> </exclusions> </dependency>
Realtime Compute for Apache Flink デプロイメントが依存するサービスのドメイン名を解決するにはどうすればよいですか?
Realtime Compute for Apache Flink デプロイメントがサービスのドメイン名に依存している場合、サービスデータを Realtime Compute for Apache Flink に移行すると、ドメイン名解決エラーが報告されます。この問題を解決するには、シナリオに基づいて次のいずれかの方法を使用できます。
自己管理 DNS があります。Flink は VPC 経由で自己管理 DNS サービスに接続でき、自己管理 DNS は通常どおりドメイン名を解決できます。
この場合、Realtime Compute for Apache Flink のデプロイテンプレートを使用して DNS 解決を実行できます。たとえば、自己管理 DNS の IP アドレスは 192.168.0.1 です。次の手順を実行します。
管理するワークスペースを見つけ、[アクション] 列の [コンソール] をクリックします。
左側のナビゲーションペインで、[構成] をクリックします。[デプロイのデフォルト] タブで、[その他の構成] フィールドに次のコードを追加します。
env.java.opts: >- -Dsun.net.spi.nameservice.provider.1=default -Dsun.net.spi.nameservice.provider.2=dns,sun -Dsun.net.spi.nameservice.nameservers=192.168.0.1
説明自己管理 DNS に複数の IP アドレスがある場合は、IP アドレスをコンマ(,)で区切ることをお勧めします。
[変更の保存] をクリックします。
Realtime Compute for Apache Flink の開発コンソールで、ドラフトを作成し、ドラフトのデプロイを実行します。
UnknownHostException エラーが解決しない場合は、ドメイン名を解決できません。この場合は、Alibaba Cloud にテクニカルサポートを依頼してください。
自己管理 DNS を構成した後、デプロイが頻繁に失敗し、「JobManager heartbeat timeout」というエラーメッセージが表示されます。トラブルシューティング方法の詳細については、「「JobManager heartbeat timeout」というエラーメッセージが表示された場合はどうすればよいですか?」をご参照ください。
自己管理 DNS をデプロイしていないか、Realtime Compute for Apache Flink が VPC 経由で自己管理 DNS に接続できません。
この場合、Alibaba Cloud DNS PrivateZone を使用してドメイン名を解決する必要があります。たとえば、Realtime Compute for Apache Flink が存在する VPC の名前は vpc-flinkxxxxxxx で、Realtime Compute for Apache Flink デプロイメントがアクセスする必要があるドメイン名は aaa.test.com 127.0.0.1、bbb.test.com 127.0.0.2、ccc.test.com 127.0.0.3 です。ドメイン名を解決するには、次の手順を実行します。
Alibaba Cloud DNS PrivateZone をアクティブ化します。詳細については、「Alibaba Cloud DNS PrivateZone のアクティブ化」をご参照ください。
ゾーンを追加し、Realtime Compute for Apache Flink デプロイメントがアクセスする必要があるサービスの共通サフィックスをゾーン名として使用します。詳細については、「ゾーンの追加」をご参照ください。
Realtime Compute for Apache Flink が存在する VPC にゾーンを関連付けます。詳細については、「VPC とゾーンの関連付けまたは関連付けの解除」をご参照ください。
ゾーンに DNS レコードを追加します。詳細については、「DNS レコードの追加」をご参照ください。
Realtime Compute for Apache Flink の開発コンソールで、デプロイを作成して実行するか、既存のデプロイを停止して再実行します。
UnknownHost エラーが解決しない場合は、ドメイン名を解決できません。この場合は、Alibaba Cloud にテクニカルサポートを依頼してください。
Realtime Compute for Apache Flink は Kafka に接続されていますが、タイムアウトエラーが報告されます。詳細については、「Realtime Compute for Apache Flink と Kafka の間にネットワーク接続が確立されているにもかかわらず、「timeout expired while fetching topic metadata」というエラーメッセージが表示されるのはなぜですか?」をご参照ください。
「JobManager heartbeat timeout」というエラーメッセージが表示された場合はどうすればよいですか?エラーメッセージ「JobManagerのハートビートタイムアウト」が表示された場合はどうすればよいですか?
問題の説明
自己管理 DNS を構成した後、デプロイが頻繁に失敗し、「JobManager heartbeat timeout」というエラーメッセージが表示されます。
原因
自己管理 DNS へのネットワーク遅延が大きいです。
解決策
デプロイコードで
jobmanager.retrieve-taskmanager-hostname
の値を false に変更して、デプロイの TaskManager の DNS を無効にします。構成を変更した後も、デプロイはドメイン名を使用して外部サービスに接続できます。このパラメーターの設定方法の詳細については、「デプロイ実行のパラメーターを設定するにはどうすればよいですか?」をご参照ください。