■ はじめに
https://dk521123.hatenablog.com/entry/2023/03/01/235100
の続き。 今回は、Apache Flinkの開発環境を整える
目次
【1】サポートOS 【2】Windows での環境構築について 失敗談1:.bat での実行 失敗談2:Cygwin での実行 【3】環境構築手順 1)JDKのインストール 2)Apache Flinkのインストール 3)ローカルクラスタの開始と停止 補足1:WindowsからWSLのUbuntuのFlink Web UIにアクセスする 補足2:Flink with Docker Compose
【1】サポートOS
* Linux * Mac OS X * Windows ... 「【2】Windows での環境構築について」以降を参照
https://nightlies.apache.org/flink/flink-docs-stable/docs/try-flink/local_installation/
より抜粋 ~~~~~~~~~~~~~ Flink runs on all UNIX-like environments, i.e. Linux, Mac OS X, and Cygwin (for Windows). You need to have Java 11 installed. ~~~~~~~~~~~~~
【2】Windows での環境構築について
Windowsでの環境構築では、 以下のサイトのようにWSLや Virtual boxで Linux を立ち上げてやった方が良さそう
https://zenn.dev/notrogue/articles/ee83f23167cc3b
失敗談1:.bat での実行
少なくとも最新 Apache Flink (今回の場合「v1.16.1」)では この Windows 用のバッチはない。 => シェルはあるので、無理やり「Git Bash」で実行したところ、 以下のエラーで実行できなかった。
http://mogile.web.fc2.com/flink/flink-docs-release-1.5/start/flink_on_windows.html
より抜粋 ~~~~~~ Flinkジョブマネージャーを実行するために、Windows Batch ファイル (.bat) ~~~~~~
Git Bashでむりやり「./bin/start-cluster.sh」を実行した際のエラー
$ ./bin/start-cluster.sh Starting cluster. /c/flink-1.16.1/bin/config.sh: line 20: /dev/fd/62: No such file or directory [ERROR] Flink distribution jar not found in /c/flink-1.16.1/lib. Starting standalonesession daemon on host LAPTOP-R760QSF6. /c/flink-1.16.1/bin/config.sh: line 20: /dev/fd/62: No such file or directory [ERROR] Flink distribution jar not found in /c/flink-1.16.1/lib. Starting taskexecutor daemon on host LAPTOP-R760QSF6.
失敗談2:Cygwin での実行
以下「試した環境」で環境構築し、「./bin/start-cluster.sh」した後、 「localhost:8081」へブラウザ表示してもWeb UIが表示されなかった。 <flink>/log 配下のログを確認したところ、以下「エラー内容」が表示。 => なお、以下のサイトである環境変数 PATH は既に設定してあり それが原因ではない。他には特に情報がない、、、
試した環境
* OS:Windows11 * Cygwin:v3.4.6-1(cygcheck -c cygwinで確認) * Java:Openjdk11.28 (windows-x64) * Apache Flink:flink-1.16.1
エラー内容
<flink>/log 配下のログより抜粋 ~~~~~~~~~~~ Improperly specified VM option 'MaxMetaspaceSize=268435456 ' Error: Could not create the Java Virtual Machine. Error: A fatal exception has occurred. Program will exit. ~~~~~~~~~~~
https://flink.apache.org/downloads/
【3】環境構築手順
WSLを使って構築する => 他にも Docker や Kubernetes でも構築できる => Docker は、以下の公式サイトの通りやれば、 Web UIの表示までは簡単にできた(重かったけど)
Docker
https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/resource-providers/standalone/docker/
Kubernetes
https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/resource-providers/standalone/kubernetes/
0)設定環境
* OS:Windows11 WSL (Ubuntu 22.04.1 LTS) ... ※ * Java:Openjdk11.0.18 * Apache Flink:flink-1.16.1
※ WSL 環境
* 以下の関連記事を参照のこと。 => 今回では、飛ばす
https://dk521123.hatenablog.com/entry/2021/11/03/003836
1)JDKのインストール
# 確認 java --version # Javaが入っていなかった場合、以下を行う sudo apt update sudo apt install default-jdk java --version openjdk 11.0.18 2023-01-17 OpenJDK Runtime Environment (build 11.0.18+10-post-Ubuntu-0ubuntu122.04) OpenJDK 64-Bit Server VM (build 11.0.18+10-post-Ubuntu-0ubuntu122.04, mixed mode, sharing)
2)Apache Flinkのインストール
公式サイトのダウンロード一覧を確認して 欲しい対象バージョンのURLを調べる
https://flink.apache.org/downloads/
# Apache Flinkのダウンロード(今回は「Apache Flink 1.16.1」) curl -OL https://dlcdn.apache.org/flink/flink-1.16.1/flink-1.16.1-bin-scala_2.12.tgz # ダウンロードしたtarファイル 解凍する tar -xvf flink-1.16.1-bin-scala_2.12.tgz # 確認 ls # flink-1.16.1 flink-1.16.1-bin-scala_2.12.tgz があるはず
3)ローカルクラスタの開始と停止
cd flink-1.16.1 # ローカルクラスタの開始 ./bin/start-cluster.sh # 確認1:flinkのプロセスが存在しているか確認 # => なんか返ってくればOK ps aux | grep flink # 確認2:Web UIのレスポンスが返ってくるか確認 # => HTMLっぽいの返ってくればOK curl http://localhost:8081 # ローカルクラスタの停止 ./bin/stop-cluster.sh
補足1:WindowsからWSLのUbuntuのFlink Web UIにアクセスする
https://zenn.dev/notrogue/articles/ee83f23167cc3b
に載っている通りにやればできる
コマンド例
# 設定ファイルの修正 vi conf/flink-conf.yaml ~~~~~ # 修正前 # rest.bind-address: localhost # 修正後 rest.bind-address: 0.0.0.0 ~~~~~ # ローカルクラスタの開始 ./bin/start-cluster.sh # Windowsのブラウザから以下のサイトにアクセスする # => Web UI が表示されたらOK
# ローカルクラスタの停止 ./bin/stop-cluster.sh
補足2:Flink with Docker Compose
* 以下の公式サイトを参照。
https://nightlies.apache.org/flink/flink-docs-master/docs/deployment/resource-providers/standalone/docker/#flink-with-docker-compose
compose.yaml
# docker compose up -d で実行 version: "2.2" services: jobmanager: image: flink:latest ports: - "8081:8081" command: standalone-job --job-classname com.job.ClassName [--job-id <job id>] [--fromSavepoint /path/to/savepoint [--allowNonRestoredState]] [job arguments] volumes: - /host/path/to/job/artifacts:/opt/flink/usrlib environment: - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager parallelism.default: 2 taskmanager: image: flink:latest depends_on: - jobmanager command: taskmanager scale: 1 volumes: - /host/path/to/job/artifacts:/opt/flink/usrlib environment: - | FLINK_PROPERTIES= jobmanager.rpc.address: jobmanager taskmanager.numberOfTaskSlots: 2 parallelism.default: 2
参考文献
https://zenn.dev/notrogue/articles/ee83f23167cc3b
関連記事
Apache Flink ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/03/01/235100
Apache Flink ~ 環境構築編 / Kubernetes ~
https://dk521123.hatenablog.com/entry/2023/05/09/235256
Apache Flink ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/29/000000
Apache Flink ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/07/23/161621
Apache Flink ~ 引数の扱い / ParameterTool ~
https://dk521123.hatenablog.com/entry/2023/08/01/004207
Apache Flink ~ Accumulator ~
https://dk521123.hatenablog.com/entry/2024/07/16/231408
Flink + PostgreSQL を docker compose で構築する
https://dk521123.hatenablog.com/entry/2023/07/28/220039
Windows 上で WSLコマンドを使って Linux 環境を構築
https://dk521123.hatenablog.com/entry/2021/11/03/003836
Linux で JDK を設定する
https://dk521123.hatenablog.com/entry/2017/08/01/234900
Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331