バツイチとインケンのエンジニアブログ
プログラムやプログラムじゃないこと

Apache Flink とは

2016-05-26
書いた人 : バツイチ
カテゴリ : Apache Flink | タグ : Apache Spark, flink

ストリーミング処理に本気で取り組む必要があったので Apache Flink を使ってみました。

Apache Flinkとは?

分散ストリーミング処理エンジンです。
ストリーミングのみならずバッチ処理も行うことができますが、ストリーミングと静的データとを同じインターフェイスで扱うことができます。

  • 分散システム
  • 協調
  • フォルト・トレランス
  • データ・ストリーミングにおける分散環境

を提供すると謳っています。

本体はScalaで書かれていますが、java, scala, python* のAPIクライアントが用意されています。
クライアントは一連のオペレーションをデータフローとして記述します。

公式URL: http://flink.apache.org/
2016-03-08 メジャーバージョン(1.0.0) リリース。
2016-05-25 現在, 1.0.3。

Apache Flink のAPI

コアAPIといくつかのオプション的なAPIで構成されています。

flink api
flink api

(https://ci.apache.org/projects/flink/flink-docs-release-1.0/ より)

コアAPI

  1. DataStream API ・・・ 無限ストリームを扱うAPI。Java, Scala。
  2. DataSet API ・・・ 静的データを扱うAPI。Java, Scala, Python。
  3. Table API ・・・ SQLを発行するAPI。Java, Scala。

オプション

  1. CEP ・・・ 複雑なイベント処理ライブラリ・API
  2. FlinkML ・・・ 機械学習ライブラリ・API
  3. Gelly ・・・ グラフ操作ライブラリ・API

構成がApache Sparkと似ています。

Apache Spark vs Flink

非常によく似たコンセプトのApache Spark(のストリーミング)とApache Flinkなので当然違いが気になります。
下記の米Yahooによるベンチマークや
https://yahooeng.tumblr.com/post/135321837876/benchmarking-streaming-computation-engines-at

CapitalOneのエンジニアの方が書かれた下記のスライドをみると違いが良くわかります。

Flink vs. Spark from Slim Baltagi

(http://www.slideshare.net/sbaltagi/flink-vs-spark より)

ざっくり違いをまとめるとこんな感じです。

# Apache Spark Apache Flink 備考
処理方式 micro batch event driven micro batchでは厳密なwindow集計が行えないケースがあります。
throughputに対するレイテンシ 線形増加 定数 米Yahooのベンチマーク参照
対応クライアント言語 scala, java, python, R scala, java, python
REPL ◯ ☓
Web UI 処理フローを表現するUIあり ダッシュボード機能つきUIあり
notebook Web UI Apache Zeppelin, Jupyter, etc Apache Zeppelin ※ FlinkのJupyterから使えるのでは…?
YARN cluster ◯ ◯

この他に、Apache Flinkは

  • ユーザ・コードによるOOMが発生しない
  • GCを削減する
  • 効率的なディスクI/O、ネットワーク転送
  • ランタイム・チューニング不要
  • 堅牢・安定パフォーマンス

といったアドバンテージがあるそうで、これを見て私は飛びつきましたw
(http://www.slideshare.net/sbaltagi/flink-vs-spark より)

次回、QuickStartに従ってApache Flinkをちょっと触ってみてからクラスタ構築をやってみます。
最終的には、fluentd → kafka → Flink → Apache Zeppelinでストリーミング集計 の流れを構築していきます。

このエントリーをはてなブックマークに追加
Tweet

← Unity初心者がボールごろがしゲームを作る part5
Apache Flinkをインストール →

 

最近書いた記事

  • Ryzen7 3800XT でmini ITXオープンフレームPCを作る
  • Pythonで機械学習入門 競馬予測
  • HP ENVY 15 クリエイターモデルレビューとRAID0解除
  • JRA-VAN データラボを使って、競馬データを収集する
  • Surface Pro 3 にubuntu18.04を入れる

カテゴリー

  • Android
  • Apache Flink
  • API
  • AWS
  • bazel
  • BigQuery
  • Cassandra
  • Docker
  • Druid
  • Elasticsearch
  • Git
  • Golang
  • gradle
  • HDFS
  • JavaScript
  • jvm
  • Linux
  • MongoDB
  • MySQL
  • Nginx
  • Nodejs
  • PaaS
  • PHP
  • Python
  • RabbitMQ
  • Raspberry Pi
  • React Native
  • Redis
  • Riak
  • rust
  • scala
  • Scheme
  • SEO
  • solr
  • Spark
  • spray
  • Sublime Text
  • Swift
  • Tableau
  • Unity
  • WebIDE
  • Wordpress
  • Youtube
  • ひとこと
  • カンファレンス
  • スケジューラ
  • マイクロマウス
  • 広告
  • 技術じゃないやつ
  • 株
  • 機械学習
  • 競馬
  • 自作キーボード
  • 自然言語処理

アーカイブ

  • 2021年4月
  • 2021年2月
  • 2021年1月
  • 2020年3月
  • 2020年2月
  • 2020年1月
  • 2019年10月
  • 2019年9月
  • 2019年8月
  • 2019年7月
  • 2019年6月
  • 2019年5月
  • 2019年4月
  • 2019年2月
  • 2019年1月
  • 2018年12月
  • 2018年11月
  • 2018年9月
  • 2018年5月
  • 2018年3月
  • 2018年2月
  • 2017年9月
  • 2017年8月
  • 2017年6月
  • 2017年4月
  • 2017年3月
  • 2017年1月
  • 2016年10月
  • 2016年9月
  • 2016年8月
  • 2016年6月
  • 2016年5月
  • 2016年4月
  • 2016年3月
  • 2016年2月
  • 2016年1月
  • 2015年12月
  • 2015年11月
  • 2015年10月
  • 2015年9月
  • 2015年8月
  • 2015年6月
  • 2015年5月
  • 2015年2月
  • 2015年1月
  • 2014年12月
  • 2014年11月
  • 2014年9月
  • 2014年6月
  • 2014年5月
  • 2014年3月
  • 2014年2月
  • 2014年1月
  • 2013年12月
  • 2013年11月
  • 2013年10月
  • 2013年9月
  • 2013年8月

書いた人

  • バツイチちゃん
  • インケンくん

このブログについて

エンジニアとしての考え方が間逆な2人がしょーもないこと書いてます。

バツイチ

アイコン

IT業界で働くエンジニアです。名前の通りバツイチです。
理論や抽象的概念が好きだけど人に説明するのが下手。

インケン

アイコン

バツイチちゃんと同じ業界で働いています。
理論とか開発手法とかは正直どうでもよくて、
生活する上で役に立つことに使いたい

Copyright 2025 バツイチとインケンのエンジニアブログ