This documentation is for an unreleased version of Apache Flink. We recommend you use the latest stable version.
プログラムのパッケージングと分散実行 #
以前説明したように、Flinkのプログラムは リモート環境
を使ってクラスタ上で実行することができます。別のやり方として、プログラムは実行のためにJARファイル(Java書庫)にパッケージすることができます。プログラムのパッケージ化はコマンドラインインタフェースを使ってそれらを実行する必須条件です。
プログラムのパッケージ化 #
コマンドラインあるいはwebインタフェースを使ってパッケージ化されたJARファイルからの実行をサポートするには、プログラムは StreamExecutionEnvironment.getExecutionEnvironment()
によって取得された環境を使う必要があります。この環境はJARがコマンドラインあるいはwebインタフェースにサブミットされた時に、クラスタの環境として振舞うでしょう。もしFlinkのプログラムがこれらのインタフェースと異なる起動をされた場合、その環境はローカル環境のように振舞うでしょう。
プログラムをパッケージ化するためには、単純に全ての起動されるクラスをJARファイルとしてexportします。JARファイルのmanifestはプログラムの entry point(public main
メソッドを持つクラス)を含むクラスを示す必要があります。これを行う最も簡単な方法はmain-classエントリを(main-class: org.apache.flinkexample.MyProgram
のように)manifestに入れることです。main-class属性は、コマンド java -jar pathToTheJarFile
を使ってJARファイルを実行する時にmainメソッドを見つけるためにJava仮想マシーンで使われるものと同じです。ほとんどのIDEはJARファイルをexportする時に自動的にその属性を含むことを提供します。
概要 #
パッケージ化されたプログラムを起動する全般的な手順は以下の2つのステップからなります:
-
JARのmanifestはmain-classあるいはprogram-class属性のために検索されます。両方の属性が見つかった場合、program-class属性はmain-class属性よりも優先されます。JARのmanifestがどちらの属性も含まない場合のために、コマンドラインおよびwebインタフェースの両方とも手動でエントリ ポイントクラス名を渡すためのパラメータをサポートします。
-
システムがクラスのmainメソッドを起動します。