■ はじめに
Apache Flink (アパッチフリンク) ってのが 話題にあがったので、調べてみた。
目次
【0】Top Big Data frameworks in 2023 【1】Apache Flink 0)公式サイト 1)ライセンス 2)最新バージョン 3)プログラム言語 【2】その他の特徴 1)Exactly-once(正確に1回だけ実行) 2)他のツールとの統合 【3】他のフレームワークとの比較 1)米Yahoo社のベンチマークテスト
【0】Top Big Data frameworks in 2023
https://jelvix.com/blog/top-5-big-data-frameworks
によると、2023年度 Top Big Data frameworks は、以下の通り。 (しかし、「Apache」ばっかだな、、、)
Rank | Big Data framework name | Link | Memo |
---|---|---|---|
1 | Apache Hadoop | https://hadoop.apache.org/ | お馴染みHadoop |
2 | MapReduce | https://en.wikipedia.org/wiki/MapReduce | Frameworkなのか?Hadoopのデータ処理エンジン |
3 | Apache Spark | https://spark.apache.org/ | こちらもお馴染みSpark。Hadoop基盤のデータ処理エンジン |
4 | Apache Hive | https://hive.apache.org/ | こちらもお馴染みHive。Hadoop 分散ファイルシステム (HDFS) に対して、SQL クエリで操作できるソフトウェア |
5 | Apache Storm | https://storm.apache.org/ | Twitter社で開発。耐障害性に優れた高速分散ストリーム処理エンジン |
6 | Apache Samza | https://samza.apache.org/ | LinkedIn社で開発。ストリーム処理向けの非同期処理フレームワーク |
7 | Apache Flink | https://samza.apache.org/ | ★今回のテーマ★ |
8 | Apache Heron | https://incubator.apache.org/projects/heron.html | 左記サイトより「2023-01-18 Project was retired.」 |
9 | Apache Kudu | https://kudu.apache.org/ | 高いスケーラビリティを持つ分散型列指向ストレージ。大量のデータをリアルタイムに更新することに特化 |
10 | Presto | https://prestodb.io/ | Frameworkなのか?SQLクエリエンジン |
【1】Apache Flink
* 分散ストリーム処理プラットフォーム => ストリームデータからデータを受け取り、 ETL処理して、別のデータストアへデータを流すことができる => リアルタイムで分析するのに優れたプラットフォーム => まずは、以下のサイトのスライドを読んでみるといいかも。
https://www.acroquest.co.jp/technical/20190114/10603
動画
* なお、英語だが、Apache Flink が学べるコースがある
https://developer.confluent.io/courses/apache-flink/intro/
0)公式サイト
https://flink.apache.org/
日本語訳
http://mogile.web.fc2.com/flink/
Github
https://github.com/apache/flink
1)ライセンス
* Apache License Version 2
2)最新バージョン
* 2023-03-01現在では「v1.16.1」が最新 => 以下を参照
https://flink.apache.org/downloads/
3)プログラム言語
開発された言語
* Scala製
使用可能な言語
* Scala (Java) * Python * SQL
【2】その他の特徴
1)Exactly-once(正確に1回だけ実行)
* 各イベントが正確に一度だけ配信されることを保証する仕組み => システム障害がクラスター全体に影響しないように設計されている => 障害発生後も、前回処理した内容を保持しており、 その途中状態から、処理を再開することが可能
補足:At-most once / At-least once
* At-most once: 1回は実行を試みる (最大でも1回しか実行されない) * At-least once: 少なくとも1回は実行する (複数回実行される場合もある) => AWS Lambda や AWS Glue は、こっち。
2)他のツールとの統合
KafkaやHadoopなどの他OSSのビッグデータ処理ツールとの統合が容易
AWSとの親和性
* EMR で動かすことが可能
https://docs.aws.amazon.com/ja_jp/emr/latest/ReleaseGuide/emr-flink.html
Amazon EMR | Flink | Remarks |
---|---|---|
emr 6.9.0 | Flink 1.15.2 | 2023-03-01現在では「v1.16.1」が最新 |
emr-5.36.0 | Flink 1.14.2 |
【4】他のフレームワークとの比較
1)米Yahoo社のベンチマークテスト
* 米Yahoo社が、Apache Flink, Spark, Stormでベンチマークテスト
https://yahooeng.tumblr.com/post/135321837876/benchmarking-streaming-computation-engines-at
https://github.com/yahoo/streaming-benchmarks
結論
https://www.infoq.com/jp/news/2016/02/yahoo-flink-spark-storm/
より抜粋 ~~~~~~~~~~~~~ * Yahoo!によると,FlinkとStormの動作には類似点があり いずれもレイテンシが指数的に増加する場合の遅延率は99%まで ほぼ直線的に変化した * ackを無効にした場合のStorm 0.11のパフォーマンスは良好でFlinkを凌駕した。 しかしYahoo!によると “ackを無効にした状態ではタプルエラーの通知や処理も無効”になる ~~~~~~~~~~~~~ => Yahooは、自分たちが採用しているStormの有効性を強調したいのだろうけど “ackを無効にした状態ではタプルエラーの通知や処理も無効”じゃ実質使えないから やっぱり、「Apache Flink」が優れているんじゃないか?
参考文献
https://qiita.com/takanorig/items/e9880813798f0ac5679d
https://www.ossnews.jp/oss_info/Apache_Flink
https://x1.inkenkun.com/archives/5406
関連記事
Apache Flink ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/05/235755
Apache Flink ~ 環境構築 / Docker compose編 ~
https://dk521123.hatenablog.com/entry/2023/07/28/220039
Apache Flink ~ 環境構築編 / Kubernetes ~
https://dk521123.hatenablog.com/entry/2023/05/09/235256
Apache Flink ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/05/29/000000
Apache Flink ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/07/23/161621
Apache Flink ~ 引数の扱い / ParameterTool ~
https://dk521123.hatenablog.com/entry/2023/08/01/004207
Apache Flink ~ Streaming vs Batch ~
https://dk521123.hatenablog.com/entry/2023/07/02/142843
Apache Flink ~ DataStream API ~
https://dk521123.hatenablog.com/entry/2023/10/03/212007
Apache Flink ~ Table API & SQL ~
https://dk521123.hatenablog.com/entry/2023/10/04/001517
Apache Flink ~ RichParallelSourceFunction ~
https://dk521123.hatenablog.com/entry/2023/09/15/000000
Apache Flink ~ Accumulator ~
https://dk521123.hatenablog.com/entry/2024/07/16/231408
Apache Flink ~ Flink to PostgreSQL ~
https://dk521123.hatenablog.com/entry/2023/08/12/133352
Apache Kafka ~ 基礎知識編 ~
https://dk521123.hatenablog.com/entry/2023/04/26/103421
Scala ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/03/10/193805
Scala ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2023/03/12/184331