ソースからのFlinkのビルド

This page covers how to build Flink 1.3-SNAPSHOT from sources.

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

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

NOTE: Maven 3.3.x can build Flink, but will not properly shade away certain dependencies. 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クライアントを含みます。

Dependency Shading

Flink shades away some of the libraries it uses, in order to avoid version clashes with user programs that use different versions of these libraries. Among the shaded libraries are Google Guava, Asm, Apache Curator, Apache HTTP Components, and others.

The dependency shading mechanism was recently changed in Maven and requires users to build Flink slightly differently, depending on their Maven version:

Maven 3.0.x, 3.1.x, and 3.2.x It is sufficient to call mvn clean install -DskipTests in the root directory of Flink code base.

Maven 3.3.x The build has to be done in two steps: First in the base directory, then in the distribution project:

mvn clean install -DskipTests
cd flink-dist
mvn clean install

Note: To check your Maven version, run mvn --version.

上に戻る

Hadoopのバージョン

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

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

Hadoop is only supported from version 2.3.0 upwards. 特定の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