重要: Scalaに依存するMaven アーティファクトはScalaのメジャーバージョンが後ろに付きます。例えば、"2.10" あるいは "2.11"。プロジェクトwiki上のマイグレーションガイドに相談してください。

ソースからFlinkをビルドする

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

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クライアントを含みます。

上に戻る

Hadoopのバージョン

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

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

私たちが区別しなければならないHadoopの二つの主要なバージョンがあります: - Hadoop 10.20, 0.23 あるいは 1.2.1のように0あるいは1から始まる全てのバージョン。- Hadoop 22.6.0のおうに2から始まる全てのバージョン。

Hadoop 1と2の主な違いは、HadoopのクラスタリソースマネージャーのHadoop YARNが利用可能かどうかです

デフォルトでは、FlinkはHadoop 2の依存を使います

Hadoop 1

Hadoop 1のためのFlinkをビルドするには、以下のコマンドを発行します:

mvn clean install -DskipTests -Dhadoop.profile=1

-Dhadoop.profile=1 フラグはMavenにHadoop 1 のためのFlinkをビルドするように指示します。異なるHadoopプロファイルを使う場合、Flinkに含まれる機能は変わることに注意してください。特に、Hadoop 1ビルドでは、YARNおよびHBaseは非サポートです。

Hadoop 2.x

Hadoop 2.X バージョンはバージョン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>タグの下に追加されるべきです。詳細はこの問題を見てください。

上に戻る

内部

Mavenを使ったビルドはpropertiesbuild profilesによって制御されます。二つのプロファイルがあり、一つはhadoop1のためのもので、もう一つはhadoop2のためのものです。hadoop2プロファイルが有効な場合(デフォルト)、システムはYARNクライアントもビルドするでしょう。

hadoop1 プロファイルを有効にするには、ビルド時に-Dhadoop.profile=1を設定します。プロファイルに依存して二つのHadoopバージョンがあり、プロパティを使って設定します。hadoop1については 1.2.1を使い(デフォルト)、hadoop2については、2.3.0を使います。

hadoop-two.version (あるいは hadoop-one.version) プロパティを使ってこれらのバージョンを変更することができます。例えば、-Dhadoop-two.version=2.4.0

上に戻る

TOP
inserted by FC2 system