This page covers how to build Flink 1.5-SNAPSHOT from sources.
Flinkをビルドするために、ソースコードが必要です。リリースのソースをダウンロード または gitリポジトリをクローンします。
さらに、Maven 3 と JDK (Java Development Kit)が必要です。Flink requires at least Java 8 to build.
注意: Maven 3.3.x はFlinkをビルドすることができますが、わずかな依存を適切に取り除くことができないでしょう。Maven 3.0.3 はライブラリを適切に生成します。To build unit tests use Java 8u51 or above to prevent failures in unit tests that use the PowerMock runner.
gitからクローンするには、以下を入力します:
git clone https://github.com/apache/flink
Flinkをビルドする最も簡単な方法は以下を実行することです:
mvn clean install -DskipTests
これは Maven (mvn
) にまず全ての既存のビルド (clean
) を削除し、それから新しいFlinkライブラリを作成 (install
)するように指示します。
To speed up the build you can skip tests, checkstyle, and JavaDocs: mvn clean install -DskipTests -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true
.
The default build adds a Flink-specific JAR for Hadoop 2, to allow using Flink with HDFS and YARN.
Flinkは異なるバージョンのライブラリを使ってクラッシュすることを避けるために、いくつかのライブラリを隠します。Among the shaded libraries are Google Guava, Asm, Apache Curator, Apache HTTP Components, Netty, and others.
依存性のシェーディング メカニズムは最近Mavenに変更され、Mavenのバージョンに依存してユーザがFlinkを少し異なる方法でビルドする必要があります:
Maven 3.0.x, 3.1.x, and 3.2.x Flinkのコードベースのルートディレクトリで mvn clean install -DskipTests
を呼ぶだけで十分です。
Maven 3.3.x ビルドは2つのステップでされなければなりません: 最初はベースディレクトリで、そして分散プロジェクト内で:
mvn clean install -DskipTests
cd flink-dist
mvn clean install
注意: Mavenのバージョンを調べるには mvn --version
を実行します。
Info ほとんどのユーザはこれを手動でやる必要はありません。ダウンロードページ は一般的なHadoopバージョンのためのバイナリパッケージを含みます。
FlinkはApache Hadoopから来る依存としてHDFSとYARNに依存があります。(アップストリームのプロジェクトおよび異なるHadoop配布物の両方による)多くの異なるバージョンのHadoopがあります。間違ったバージョンの組み合わせを使っている場合は例外が起こるかもしれません。
Hadoop is only supported from version 2.4.0 upwards. 特定のHadoopバージョンをビルドするように指定することもできます:
mvn clean install -DskipTests -Dhadoop.version=2.6.1
ベンダー固有のHadoopバージョンのFlinkをビルドするには、以下のコマンドを発行します:
mvn clean install -DskipTests -Pvendor-repos -Dhadoop.version=2.6.1-cdh5.0.0
-Pvendor-repos
はCloudera, Hortonworks あるいは MapRのような人気のあるHadoopベンダーのリポジトリを含むMaven build profileを有効にします。
Info 純粋にJava APIとライブラリを使うユーザはこの章を無視することができます。
Flink はAPI、libraries そしてScalaで書かれている実行時ランタンムを持っています。(Scalaは厳密に後方互換性を持たないため)Scala APIとライブラリの利用者はFlinkのScalaバージョンをプロジェクトのScalaバージョンと合わせる必要があるかも知れません。
Flink 1.4 currently builds only with Scala version 2.11.
We are working on supporting Scala 2.12, but certain breaking changes in Scala 2.12 make this a more involved effort. Please check out this JIRA issue for updates.
たとえばホームディレクトリが暗号化されている場合、java.io.IOException: File name too long
例外に遭遇するかもしれません。Ubuntuで使われているencfsのようないくつかの暗号化ファイルシステムは長いファイル名を許可しません。それがこのエラーの原因です。
回避策は以下を追加することです:
<args>
<arg>-Xmax-classfile-name</arg>
<arg>128</arg>
</args>
エラーを起こしているモジュールのpom.xml
のコンパイル設定内に追加します。例えば、もしエラーがflink-yarn
モジュール内で起きた場合、上のコードはscala-maven-plugin
の<configuration>
タグの下に追加されるべきです。詳細はこの問題を見てください。