Apache Flink を Docker で試す

2023年6月25日 engineering

こんにちは、 @kz_morita です。

今回は、 Apache Flink を試してみるのにあたって、docker の環境を作ってサンプルを実行してみたのでそのメモです。

いかに docker-compose ファイルとかをコミットしてあるので良ければ参考にしてみてください。

flink は、stream 処理を実行するための framework です。

Docker で動かすために以下のページを参考にしました。

上記は、docker run コマンドでそれぞれ起動しているため、今回は docker-compose.yml ファイルを作成しました。

version: "3"

services:
  jobmanager:
    image: flink:latest
    container_name: flink-jobmanager
    ports:
      - "8081:8081"
    networks:
      - flink-network
    environment:
      FLINK_PROPERTIES: "jobmanager.rpc.address: jobmanager"
    command: jobmanager
    tty: true

  taskmanager:
    image: flink:latest
    container_name: flink-taskmanager
    networks:
      - flink-network
    environment:
      FLINK_PROPERTIES: "jobmanager.rpc.address: jobmanager"
    command: taskmanager
    tty: true

networks:
  flink-network:

上記は Flink の jobmanagertaskmanager を起動しています。それぞれを簡単に説明すると、jobmanager は Flink で実行したいジョブを管理するもので、実際に処理を行う worker node が taskmanager になります。

公式ページのこちら がわかりやすいです。

ちなみに、jobmanager には、WebUI が用意されているため、8081 ポートに接続できるようにしています。

上記の docker-compose ファイルを用意したら起動します。

$ docker-compose up -d 

起動すると、localhost:8081 で以下のような WebUI にアクセスできます。

Job を実行する

Flink が動いたので実際に Job を実行してみます。

Docker image の中にサンプルの .jar ファイルが入っているので今回は、WordCount.jar を実行してみます。

実行されてることが確認できるように、docker logs を実行しておきます。

新しく二つ terminal のタブを開いて実行するのがよさそうです。

$ docker logs -f flink-jobmanager
$ docker logs -f flink-taskmanager

docker compose exec で、ジョブを指定して実行します。

$ docker compose exec jobmanager ./bin/flink run ./examples/streaming/WordCount.jar

実行すると結果が表示されるのが確認できるかと思います。

WebUI からもログをみることができそうです。

まとめ

今回は、Apache Flink をローカルで試すために、docker-compose 周りの設定や、実際に Job の実行などを実施してみました。

docker-compose ファイル作っておくとサクッと環境作れるのでこういう新しいものを試すときには非常に便利だなと思いました。

この記事をシェア