ソースからのFlinkのビルド

このページはソースから Flink 1.3-SNAPSHOT をビルドする方法をカバーします。

Flinkをビルドするために、ソースコードが必要です。リリースのソースをダウンロード または gitリポジトリをクローンします。

さらに、Maven 3JDK (Java Development Kit)が必要です。Flink はビルドするために少なくとも Java 7が必要です。Java 8を使うことをお勧めします。

注意: Maven 3.3.x はFlinkをビルドすることができますが、わずかな依存を適切に取り除くことができないでしょう。Maven 3.0.3 はライブラリを適切に生成します。Java 8 を使ってユニットテストをビルドするには、PowerMock runnerを使うユニットテスト内での失敗を避けるためにJava 8u51以上を使ってください。

gitからクローンするには、以下を入力します:

git clone https://github.com/apache/flink

Flinkをビルドする最も簡単な方法は以下を実行することです:

mvn clean install -DskipTests

これは Maven (mvn) にまず全ての既存のビルド (clean) を削除し、それから新しいFlinkライブラリを作成 (install)するように指示します。-DskipTests コマンドはMavenがテストを実行することを防ぎます。

デフォルトのビルドはHadoop 2のためのYARNクライアントを含みます。

依存の違い

Flinkは異なるバージョンのライブラリを使ってクラッシュすることを避けるために、いくつかのライブラリを隠します。隠されるライブラリは Google Guava, Asm, Apache Curator, Apache HTTP Components などです。

依存性のシェーディング メカニズムは最近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 を実行します。

上に戻る

Hadoopのバージョン

Info ほとんどのユーザはこれを手動でやる必要はありません。ダウンロードページ は一般的なHadoopバージョンのためのバイナリパッケージを含みます。

FlinkはApache Hadoopから来る依存としてHDFSとYARNに依存があります。(アップストリームのプロジェクトおよび異なるHadoop配布物の両方による)多くの異なるバージョンのHadoopがあります。間違ったバージョンの組み合わせを使っている場合は例外が起こるかもしれません。

Hadoop はバージョン2.3.0 以上でサポートされます。特定のHadoopバージョンをビルドするように指定することもできます:

mvn clean install -DskipTests -Dhadoop.version=2.6.1

Hadoop 2.3.0より前

Hadoop 2.x バージョンはバージョン2.3.0以上でのみYARN機能がサポートされます。2.3.0未満のバージョンを使いたい場合は、以下の特別なビルド引数を使ってYARNサポートを除外することができます: -P!include-yarn

例えば、もし Hadoop 2.2.0のためのFlinkをビルドしたい場合は、以下のコマンドを使います:

mvn clean install -Dhadoop.version=2.2.0 -P!include-yarn

ベンダー固有のバージョン

ベンダー固有の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を有効にします。

上に戻る

Scalaのバージョン

Info 純粋にJava APIとライブラリを使うユーザはこの章を無視することができます。

Flink はAPI、libraries そしてScalaで書かれている実行時ランタンムを持っています。(Scalaは厳密に後方互換性を持たないため)Scala APIとライブラリの利用者はFlinkのScalaバージョンをプロジェクトのScalaバージョンと合わせる必要があるかも知れません。

デフォルトでは、FlinkはScala 2.10でビルドされます。Scala2.11でFlinkをビルドするために、以下のスクリプトを使ってデフォルトのScala バイナリバージョンを変更することができます。

# Switch Scala binary version between 2.10 and 2.11
tools/change-scala-version.sh 2.11
# Build with Scala version 2.11
mvn clean install -DskipTests

独自のScalaバージョンでビルドするには、適切なバイナリバージョンに切り替え、追加のビルドプロパティとして 言語バージョンを提供する必要があります。例えば、Scala 2.11.4でビルドするには以下を実行する必要があります:

# Switch Scala binary version to 2.11
tools/change-scala-version.sh 2.11
# Build with custom Scala version 2.11.4
mvn clean install -DskipTests -Dscala.version=2.11.4

FlinkはScala 2.10に対して開発され、さらにScala 2.11に対してテストされています。これら二つのバージョンは互換性があると知られています。(Scala 2.9のような)以前のバージョンは互換性がありません

新しいバージョンは互換性があるかもしれませんが、Flinkによって使われる言語機能の破壊的な変更と、それらのScalaバージョンでのFlinkの依存の可用性に依存します。Scalaで書かれている依存物は、例えばKafka, Akka, Scalatest および scoptが含まれます。

上に戻る

暗号化ファイルシステム

たとえばホームディレクトリが暗号化されている場合、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>タグの下に追加されるべきです。詳細はこの問題を見てください。

上に戻る

TOP
inserted by FC2 system