flink - Apache Flinkは、強力なストリームおよびバッチ処理機能を備えたオープンソースのストリーム処理フレームワークです。

(Apache Flink)

Created at: 2014-06-07 15:00:10
Language: Java
License: Apache-2.0

Apache Flink

Apache Flinkは、強力なストリームおよびバッチ処理機能を備えたオープンソースのストリーム処理フレームワークです。

Flinkの詳細については、https: //flink.apache.org/をご覧ください。

特徴

  • バッチ処理とデータストリーミングプログラムの両方をサポートするストリーミングファーストランタイム

  • JavaとScalaのエレガントで流暢なAPI

  • 非常に高いスループットと低いイベント遅延を同時にサポートするランタイム

  • Dataflowモデルに基づくDataStreamAPIでのイベント時間と異常処理サポート

  • さまざまな時間セマンティクス(イベント時間、処理時間)にわたる柔軟なウィンドウ処理(時間、カウント、セッション、カスタムトリガー)

  • 正確に1回の処理を保証するフォールトトレランス

  • ストリーミングプログラムにおける自然な背圧

  • グラフ処理(バッチ)、機械学習(バッチ)、および複合イベント処理(ストリーミング)用のライブラリ

  • DataSet(バッチ)APIの反復プログラム(BSP)の組み込みサポート

  • インメモリとアウトオブコアのデータ処理アルゴリズムを効率的かつ堅牢に切り替えるためのカスタムメモリ管理

  • ApacheHadoopMapReduceの互換性レイヤー

  • YARN、HDFS、HBase、およびApacheHadoopエコシステムの他のコンポーネントとの統合

ストリーミングの例

case class WordWithCount(word: String, count: Long)

val text = env.socketTextStream(host, port, '\n')

val windowCounts = text.flatMap { w => w.split("\\s") }
  .map { w => WordWithCount(w, 1) }
  .keyBy("word")
  .window(TumblingProcessingTimeWindow.of(Time.seconds(5)))
  .sum("count")

windowCounts.print()

バッチ例

case class WordWithCount(word: String, count: Long)

val text = env.readTextFile(path)

val counts = text.flatMap { w => w.split("\\s") }
  .map { w => WordWithCount(w, 1) }
  .groupBy("word")
  .sum("count")

counts.writeAsCsv(outputPath)

ソースからのApacheFlinkの構築

Flinkを構築するための前提条件:

  • Unixライクな環境(Linux、Mac OS X、Cygwin、WSLを使用)
  • ギット
  • Maven(バージョン3.2.5を推奨し、少なくとも3.1.1が必要です)
  • Java 8または11(Java 9または10が機能する場合があります)
git clone https://github.com/apache/flink.git
cd flink
mvn clean package -DskipTests # this will take up to 10 minutes

Flinkがにインストールされました

build-target

注:Maven 3.3.xはFlinkをビルドできますが、特定の依存関係を適切にシェーディングしません。Maven3.1.1はライブラリを適切に作成します。Java 8で単体テストを構築するには、Java 8u51以降を使用して、PowerMockランナーを使用する単体テストの失敗を防ぎます。

Flinkの開発

Flinkコミッターは、IntelliJIDEAを使用してFlinkコードベースを開発します。Scalaコードを含むプロジェクトの開発には、IntelliJIDEAをお勧めします。

IDEの最小要件は次のとおりです。

  • JavaとScalaのサポート(混合プロジェクトも)
  • JavaとScalaによるMavenのサポート

IntelliJ IDEA

IntelliJ IDEは、Mavenをすぐにサポートし、Scala開発用のプラグインを提供します。

詳細については、IntelliJのセットアップガイドをご覧ください。

Eclipse Scala IDE

注:私たちの経験から、このセットアップは、Scala IDE 3.0.3にバンドルされている古いEclipseバージョンの欠陥、またはScalaIDE4.4.1にバンドルされているScalaバージョンとのバージョンの非互換性のためにFlinkでは機能しません。

代わりにIntelliJを使用することをお勧めします(上記を参照)

サポート

お気軽にお問い合わせください!

ヘルプが必要な場合は、メーリングリストの開発者とコミュニティに連絡してください。

Flinkでバグを見つけた場合は、問題を開きます。

ドキュメンテーション

Apache Flinkのドキュメントは、次のWebサイトにあります:https ://flink.apache.org または

docs/
ソースコードのディレクトリ。

フォークして貢献する

これはアクティブなオープンソースプロジェクトです。私たちは、システムを使用したり、システムに貢献したりしたい人に常に門戸を開いています。自分のスキルに合った実装タスクを探している場合は、お問い合わせください。この記事では、ApacheFlinkに貢献する方法について説明します。

Apache Flinkは、Apache Software Foundation(ASF)のオープンソースプロジェクトです。Apache Flinkプロジェクトは、Stratosphere研究プロジェクトから始まりました。