このページでは、静的な(しかし異成分から成る)クラスタ上の完全な分散形式 でFlinkを実行する方法を説明します。
Flinkは全てのUNIX-likeな環境、例えばLinux, Mac OS XおよびCygwin (for Windows) 上で動作し、 1つのマスターノード と1つ以上のワーカーノードから成るクラスタを必要とします。システムのセットアップを開始する前に、各ノード上で以下のソフトウェアがインストールされているようにしてください:
クラスタがこれらのソフトウェアの要求を完全に満たしていない場合は、それをインストール/アップグレードする必要があるでしょう。
全てのクラスタノード上でpasswordless SSH と同じディレクトリ構造を持つことで、全てを制御するためにスクリプトを使うことができるでしょう。
JAVA_HOME
設定Flinkはマスターと全てのワーカーノード上でJAVA_HOME
環境変数が設定され、Javaインストレーションのディレクトリを指していることを必要とします。
conf/flink-conf.yaml
内でenv.java.home
キーを使ってこの変数を設定することができます。
ダウンロード ページへ行き、すぐに実行可能なパッケージを取得します。Hadoopバージョンに合致するFlinkパッケージを選ぶようにしてください。Hadoopを使う予定がない場合は、任意のバージョンを選んでください。
最新のリリースをダウンロードした後で、書庫をマスターノードにコピーし、それを解凍します:
tar xzf flink-*.tgz
cd flink-*
システムファイルを解凍した後で、conf/flink-conf.yamlを編集することでクラスタのためのFlinkを設定する必要があります。
jobmanager.rpc.address
キーがマスターノードを示すように設定します。jobmanager.heap.mb
と taskmanager.heap.mb
キーを設定することでJVMが各ノード上で割り当てることができるメインメモリの最大量も定義するべきです。
これらの値はMBで与えられます。ワーカーノードがFlinkシステムに割り当てたいと思うよりも多くのメインメモリを持つ場合は、それらの特定のノード上で環境変数 FLINK_TM_HEAP
を設定することでデフォルトを上書くことができます。
最後にワーカーノードとして使用されるべきクラスタの全てのノードのリストを提供する必要があります。したがってHDFS設定と同じようにファイルconf/slavesを編集し、各ワーカーノードのIP/ホスト名を入力します。各ワーカーノードは後でタスクマネージャーを実行するでしょう。
以下の例は3つのノード(10.0.0.1 から 10.0.0.3 のIPアドレスで、ホスト名master, worker1, worker2を持つ)のセットアップを図示し、設定ファイルの内容を示します。これは全てのマシーン上の同じパスでアクセス可能である必要があります。
/path/to/flink/conf/
flink-conf.yaml
jobmanager.rpc.address: 10.0.0.1
/path/to/flink/
conf/slaves
10.0.0.2 10.0.0.3
Flinkディレクトリは各ワーカーの同じパスで利用可能でなければなりません。共通NFSディレクトリを使うか、各ワーカーノードへFlinkディレクトリ全体をコピーすることができます。
詳細および追加の設定オプションについては設定ページ を見てください。
特に、
jobmanager.heap.mb
)、taskmanager.heap.mb
)、taskmanager.numberOfTaskSlots
)、parallelism.default
) およびtaskmanager.tmp.dirs
)は、とても重要な設定値です。
以下のスクリプトはローカルノードでジョブマネージャーを開始し、slaves ファイルに記載された全てのワーカーノード上でタスクマネージャーを開始するためにSSHを使って接続します。これで、Flinkシステムは準備ができ実行されます。これでローカルノードで実行中のジョブマネージャーは設定されたRPCポートでジョブを受け付けるでしょう。
マスターノードのFlinkディレクトリに居るとすると:
bin/start-cluster.sh
Flinkを停止するために、stop-cluster.sh
スクリプトもあります。
bin/taskmanager.sh
と bin/jobmanager.sh
スクリプトを使って実行中のクラスタへジョブマネージャーおよびタスクマネージャーを追加することができます。
bin/jobmanager.sh (start cluster)|stop|stop-all
bin/taskmanager.sh start|stop|stop-all
それぞれのインスタンスを開始/停止したいホスト上でこれらのスクリプトを呼ぶようにしてください。