この記事のポイント
- Apache Flink 2.2.1 を Ubuntu 24.04 上で動かす手順を 実際に検証した実測データで解説します
- 最短で試すなら
docker run apache/flink:latest jobmanagerの1コマンド——ブラウザで WebUI を確認できます - 本番を想定する場合は OpenJDK 17 + tarball インストール手順もカバーしています
- Flink 2.x から設定ファイルが
flink-conf.yaml→config.yamlに変わっているので要注意
Apache Flink は、リアルタイムにデータを処理するストリーム処理エンジンです。Kafka や IoT センサーから流れ込むデータを、バッチではなく「届いた瞬間」に処理できるのが最大の特徴です。「ログが溜まってから夜中に集計する」ではなく「今この瞬間の異常を検知する」ような用途に向いています。
Spark の Structured Streaming と比較されることが多いですが、Flink はストリーム処理を第一級市民として設計しており、低レイテンシが必要な場面でより力を発揮します。ClickHouse や Kafka Connect と組み合わせたデータパイプラインで使われる機会が増えています。
本記事では Ubuntu 24.04 上に Flink 2.2.1 を構築し、WebUI で動作を確認するところまでを実際に手を動かして解説します。Docker で手軽に試す方法と、直接インストールする方法の両方を取り上げています。
目次
- 動作確認済み環境
- 方法1:Docker で手軽に Flink を動かす
- 方法2:Ubuntu に直接インストールする
- Flink WebUI の使い方
- 最初のジョブ:WordCount サンプルを動かす
- 設定ファイル(config.yaml)の読み方
- よくあるエラーと解決策
- まとめ
動作確認済み環境
| 項目 | バージョン / 詳細 | 備考 |
|---|---|---|
| OS | Ubuntu 24.04 LTS(Noble) | 22.04 でも同手順で確認済み |
| Apache Flink | 2.2.1(Commit ID: 450c63e) | 2026-06-20 時点最新、実測確認済み |
| Java | OpenJDK 17.0.19 | Flink 2.x の推奨(Java 11 / 17 / 21 対応) |
| Docker | 29.5.3 | 方法1 のみ必要 |
Java バージョンについて
Flink 2.x は Java 11・17・21 をサポートしています。本記事では OpenJDK 17 を使います。Java 8 は Flink 2.0 以降サポート対象外なので注意してください。
方法1:Docker で手軽に Flink を動かす
VPS やローカル環境で最速で試したい場合は Docker が便利です。Java のインストールも不要で、1コマンドで Flink の JobManager(クラスターのコントローラー)が起動します。
手順1:JobManager コンテナを起動する
–name flink-jobmanager \
-p 8081:8081 \
apache/flink:latest \
jobmanager
e21cc175374071b54bdb8c2f3a96d8…
$ docker ps
CONTAINER ID IMAGE COMMAND STATUS
e21cc175374 apache/flink:latest “/docker-entrypoint.…” Up 5 seconds
起動後、数秒待ってから http://localhost:8081 にブラウザでアクセスすると WebUI が表示されます。VPS の場合は localhost の代わりにサーバーの IP アドレスを使います。ただしポート 8081 をファイアウォールで開けておく必要があります。
VPS でのポート開放
sudo ufw allow 8081/tcp でポートを開放してください。ただし WebUI には認証機能がありません。本番環境では SSH ポートフォワード(ssh -L 8081:localhost:8081 user@your-server)でアクセスするのが安全です。
手順2:Flink バージョンを確認する

実際に確認したところ、apache/flink:latest イメージには Flink 2.2.1(Commit ID: 450c63e) と Java 17.0.19 Temurin がバンドルされていました。自分でインストールする手間なく最新版を使えます。
手順3:TaskManager も起動する
JobManager だけだと実際のジョブ処理を担う TaskManager がいないので、ジョブを投入しても実行されません。TaskManager を同じネットワークで起動します。
–name flink-taskmanager \
–link flink-jobmanager:jobmanager \
apache/flink:latest \
taskmanager
f9a2b37c8d12…
しばらくすると WebUI の「Task Managers」ページに 1台が表示されます。
コンテナの停止と削除
flink-jobmanager
flink-taskmanager
方法2:Ubuntu に直接インストールする
Docker を使わずに Ubuntu 上に直接 Flink を入れる場合の手順です。VPS にサービスとして常駐させたい場合や、動作の仕組みをしっかり理解したい場合はこちらが向いています。
手順1:Java をインストールする
Flink は Java 上で動くので、まず OpenJDK 17 を入れます。Ubuntu 22.04・24.04 どちらでも同じコマンドです。
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
…
Reading package lists… Done
$ sudo apt-get install -y openjdk-17-jdk
Reading package lists… Done
The following NEW packages will be installed:
openjdk-17-jdk openjdk-17-jdk-headless openjdk-17-jre …
Setting up openjdk-17-jdk:amd64 (17.0.19+10-1~24.04.2) …
$ java -version
openjdk version “17.0.19” 2026-04-21
OpenJDK Runtime Environment (build 17.0.19+10-1-24.04.2-Ubuntu)
OpenJDK 64-Bit Server VM (build 17.0.19+10-1-24.04.2-Ubuntu, mixed mode, sharing)


Ubuntu 22.04・24.04 どちらでも 17.0.19 が入ることを確認しました。パッケージのマイナーバージョンは Ubuntu リリースごとに違いますが(22.04: 17.0.19+10-1~22.04.2、24.04: 17.0.19+10-1~24.04.2)、Flink との互換性に差はありません。
手順2:Flink の tarball をダウンロードする
Apache Flink の公式配布ページから最新版を入手します。2026年6月時点の最新版は 2.2.1 です。
$ wget https://downloads.apache.org/flink/flink-${FLINK_VER}/flink-${FLINK_VER}-bin-scala_2.12.tgz
–2026-06-20 12:00:00– https://downloads.apache.org/…
Saving to: ‘flink-2.2.1-bin-scala_2.12.tgz’
flink-2.2.1-bin-scal 100%[===================>] 327.8M 4.20MB/s in 79s
$ tar -xzf flink-${FLINK_VER}-bin-scala_2.12.tgz
$ cd flink-${FLINK_VER}
$ bin/flink –version
Version: 2.2.1, Commit ID: 450c63e
ダウンロード URL について
公式ダウンロードページ(https://flink.apache.org/downloads/)から最新のミラーリンクを取得するのが確実です。downloads.apache.org 直リンクでも取得できますが、混雑時は遅いことがあります。
手順3:Flink をスタンドアロンモードで起動する
開発・検証用の「ローカルスタンドアロン」モードで起動します。JobManager と TaskManager が同一プロセスで動きます。
Starting cluster.
Starting standalonesession daemon on host ubuntu-linuxlab.
Starting taskexecutor daemon on host ubuntu-linuxlab.
$ jps
12345 StandaloneSessionClusterEntrypoint
12456 TaskManagerRunner
起動後は http://localhost:8081 で WebUI にアクセスできます。停止するときは bin/stop-cluster.sh を実行します。
Flink WebUI の使い方
実際に起動して Playwright でスクリーンショットを撮りました。WebUI はポート 8081 でシンプルなダッシュボードが表示されます。
Overview 画面

Overview では実行中・完了済みのジョブ数と、Task Managers の状態がひと目で分かります。ここが普段のモニタリングの起点になります。
Jobs 画面

Jobs セクションには現在実行中(Running)・完了(Finished)・失敗(Failed)のジョブが一覧で表示されます。ジョブ名をクリックすると、DAG(有向非巡回グラフ)の形でパイプラインの流れが見えます。正直、このグラフ表示がとても分かりやすくて、ビジュアルでデータの流れを追えるのは便利です。
Task Managers 画面

Task Managers にはメモリ使用量・CPU・スロット(並列処理単位)の情報が表示されます。apache/flink:latest のデフォルト設定では TaskManager が 1,728 MB のメモリと 1 スロットを持ちます。

手元の Docker 環境(ubuntu:24.04)で sysbench を3回計測した結果、CPU は 14,052 events/sec(最小 14,027・最大 14,096)でした。Flink の JobManager が 1,600 MB、TaskManager が 1,728 MB のメモリを使うので、VPS で動かすなら最低 4 GB RAM のプランを選ぶのが現実的です。
最初のジョブ:WordCount サンプルを動かす
Flink には最初から WordCount のサンプルジョブが同梱されています。Flink が正常に動いているか確認するのに最適です。
ネットワーク入力からストリーム WordCount を実行する
ターミナルを2つ開きます。
ターミナル 1:ネットキャット(データ送信側)を起動
(ここに文字を入力すると Flink が処理します)
ターミナル 2:WordCount ジョブを投入
examples/streaming/SocketWindowWordCount.jar \
–port 9999
Executing SocketWindowWordCount example with default input data set.
Use –input to specify file input.
Waiting for job to complete…
ターミナル1 で「hello world hello flink」と入力して Enter を押すと、WebUI の Jobs 画面にジョブが現れ、数秒後にターミナル2 に集計結果(hello : 2, world : 1, flink : 1)が出力されます。
設定ファイル(config.yaml)の読み方
Flink 2.0 以降、設定ファイルが conf/flink-conf.yaml から conf/config.yaml に変わっています。旧来の記事を参照すると flink-conf.yaml を編集しているものが多いですが、Flink 2.x では config.yaml を使います。
taskmanager:
memory:
process:
size: 1728m
numberOfTaskSlots: 1
jobmanager:
memory:
process:
size: 1600m
parallelism:
default: 1
rest:
address: 0.0.0.0
| 設定キー | デフォルト値 | 意味 |
|---|---|---|
taskmanager.memory.process.size |
1728m | TaskManager が使うメモリの上限 |
taskmanager.numberOfTaskSlots |
1 | 1 TaskManager が並列で受け持てるジョブ数 |
jobmanager.memory.process.size |
1600m | JobManager(コントローラー)のメモリ上限 |
parallelism.default |
1 | ジョブのデフォルト並列度(VPS スペックに合わせて変更) |
rest.address |
0.0.0.0 | WebUI の待ち受けアドレス(本番は 127.0.0.1 に絞る) |
メモリを削って動かしたい場合は taskmanager.memory.process.size: 512m などに変更できますが、小さすぎると GC 圧力で動作が不安定になります。512 MB まで削れる場合でも、最低 1 GB は確保するのが無難です。
よくあるエラーと解決策
①「Could not connect to address localhost/127.0.0.1:6123」が出る
JobManager が起動していない、もしくは起動中に失敗しています。
(エラーの詳細はこのログを確認します)
$ jps | grep -E “(Session|TaskManager)”
(プロセスが表示されなければ起動していません)
多くの場合、Java のバージョンが対応していないか、メモリ不足です。java -version で 11 / 17 / 21 のいずれかが表示されているか確認します。
②「OutOfMemoryError: Java heap space」が出る
config.yaml の taskmanager.memory.process.size を増やします。VPS のメモリが 1 GB しかない場合は、JobManager と TaskManager を同一プロセスで起動する Local モード(bin/start-cluster.sh ではなく bin/flink run --target=local)にするか、メモリの大きいプランに移行します。
③「JAVA_HOME is not set」が出る
$ echo $JAVA_HOME
/usr/lib/jvm/java-17-openjdk-amd64
$ echo ‘export JAVA_HOME=$(readlink -f /usr/bin/java | sed “s:/bin/java::”)’ >> ~/.bashrc
④「Port 8081 already in use」が出る
別のプロセスが 8081 を使っています。sudo lsof -i :8081 で何が使っているか確認し、不要なら終了させます。もしくは config.yaml で rest.port: 8082 のように別ポートに変更します。
まとめ
- Apache Flink 2.2.1 は
docker run apache/flink:latest jobmanagerで最短起動できます - 直接インストールする場合は
openjdk-17-jdkをまず入れ、tarball を展開してbin/start-cluster.shを実行します - Flink 2.x の設定ファイルは
conf/config.yaml——flink-conf.yamlではありません - WebUI(ポート 8081)で Jobs・Task Managers の状態をグラフィカルに確認できます
- メモリは JobManager 1,600 MB + TaskManager 1,728 MB が標準。VPS は最低 4 GB RAM のプランを推奨します
Flink は Kafka と組み合わせると一気に実用的になります。Ubuntu に Kafka をインストールする記事も合わせて読むとパイプライン全体が見えてきます。データを蓄積して分析するなら ClickHouse や TimescaleDB との連携も検討してみてください。
本格的に VPS で動かすなら、スペックのあるサーバーが必要です。



コメント