Apache Flinkのソースコードビルドと環境構築ガイド

ビルド環境の要件

Apache Flinkをソースコードから正常にビルドするには、JDK 8以降とMaven 3.2.5の組み合わせが推奨されます。Maven 3.3.x以降では依存関係のシェーディング(Shading)処理に不具合が生じる可能性があるため、3.2.5を使用することで安定したライブラリ生成が可能になります。また、PowerMockを利用したユニットテストを正しく実行するためには、Java 8以上の環境が必須となります。

リポジトリのクローンと初期設定

公式リポジトリまたはミラーからソースコードを取得します。大規模なリポジトリをクローンする際、Gitのデフォルトバッファサイズが原因でエラーが発生する場合があります。これを回避するために、事前にポストバッファを拡張しておきます。

# GitのHTTPポストバッファを500MBに拡張
git config --global http.postBuffer 524288000

# ソースコードのクローン
git clone https://github.com/apache/flink.git flink-workspace
cd flink-workspace

Mavenリポジトリの最適化

ビルド時間を短縮し、タイムアウトによる失敗を防ぐため、Mavenのsettings.xmlにミラーリポジトリを設定します。特にflink-filesystemsモジュールが依存するMapR関連のJARファイルは容量が大きいため、専用ミラーの利用が不可欠です。

<mirrors>
    <mirror>
        <id>public-central</id>
        <mirrorOf>*,!mapr-repo,!confluent-repo</mirrorOf>
        <name>Central Mirror</name>
        <url>https://maven.aliyun.com/repository/public</url>
    </mirror>
    <mirror>
        <id>mapr-proxy</id>
        <mirrorOf>mapr-releases</mirrorOf>
        <name>MapR Releases Proxy</name>
        <url>https://maven.aliyun.com/repository/mapr-public</url>
    </mirror>
    <mirror>
        <id>confluent-proxy</id>
        <mirrorOf>confluent</mirrorOf>
        <name>Confluent Proxy</name>
        <url>https://packages.confluent.io/maven/</url>
    </mirror>
</mirrors>

ターゲットブランチの選択

開発や検証の目的に合わせて、適切なリリースブランチに切り替えます。ここでは例として、安定版のリリースブランチをチェックアウトします。

# リモートブランチの最新情報を取得
git fetch --all

# 対象のリリースブランチ(例: 1.15)に切り替え
git switch -c local-build-branch origin/release-1.15

コンパイルとビルドの実行

用途に応じてMavenのビルドコマンドを使い分けます。テストやドキュメント生成をスキップすることで、ビルド時間を大幅に短縮できます。

# 標準ビルド(テスト、Javadoc、Checkstyleを無効化)
mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true

# 高速ビルドプロファイルの適用(QAプラグインなども省略)
mvn clean install -DskipTests -Dfast

# ローカルリポジトリへのインストールを行わず、成果物のみを生成
mvn clean package -DskipTests -Dfast

# 特定のHadoopバージョンを指定してビルド
mvn clean package -DskipTests -Dhadoop.version=3.3.4

依存関係エラーのトラブルシューティング

ビルド中に特定のアーティファクト(例: flink-s3-fs-hadoop)の解決に失敗した場合、不足しているJARファイルを手動でローカルリポジトリにインストールすることで解消できます。

# 事前にダウンロードしたJARファイルをローカルMavenリポジトリに登録
mvn install:install-file \
  -Dfile=/path/to/downloaded/flink-s3-fs-hadoop-custom.jar \
  -DgroupId=org.apache.flink \
  -DartifactId=flink-s3-fs-hadoop \
  -Dversion=1.15-SNAPSHOT \
  -Dpackaging=jar

ビルド成果物の確認

ビルドが正常に完了すると、flink-dist/target/ディレクトリ配下に以下の成果物が生成されます。

  • 展開済みのFlinkバイナリディレクトリ(例: flink-1.15.0/
  • 配布用の圧縮アーカイブファイル(例: flink-1.15.0-bin-scala_2.12.tgz
  • Flinkのコア機能を含む実行JARファイル(例: flink-dist_2.12-1.15.0.jar
]]>

タグ: Apache Flink Maven Git Java Hadoop

9月13日 03:27 投稿