data Artisansでアプリケーションエンジニアリング・ディレクターを務めるJamie Grier氏が、Apache Flinkを用いたデータストリーミングアーキテクチャについてOSCON 2016 Conferenceで講演し、データストリーミングアプリケーションの構成要素について語った。
データストリーミングアプリケーションは、静的なデータセットではなく、イベントのストリームとして継続的に生成されるデータを処理するために使われる。従来の中央集権的な「実世界の状態」型のデータベースおよびデータウェアハウスと比べて、データストリーミングアプリケーションは、イベントのストリームおよびイベントの履歴を集約したアプリケーション固有のローカルな状態に従事する。ストリーミングデータ処理にはいくつかの利点がある。
- シグナルから判断までのレイテンシー削減
- リアルタイムデータと過去データの処理方法の統一
- タイムトラベルクエリ
Apache Flinkは分散ストリームおよびバッチデータ処理のためのオープンソースプラットフォームであり、Google Data Flowのモデルに着想を得ている。プログラミング言語としては、JavaとScalaでStream Processing APIをサポートする。他のストリーミングデータ処理フレームワークと比べると、Flinkにはデータのマイクロバッチ処理がなく、「一度に1メッセージ」のストリーミング処理に基づいている。
Jamie氏はステートフルなストリーム処理について語り、Flinkアプリケーションのサンプルコードならびに、オープンソースの時系列データベースInfluxdbおよび可視化ツールGraphanaを用いたモニタリングについて紹介した。
彼はストリーム処理におけるWindowingのコンセプトと、処理時間とイベント時間でのWindowingの違いについても語った。処理時間でのWindowingはストリーミングデータ解析に影響を与え、データ処理の一部にエラーをもたらしてしまう。イベント時間の場合、Windowingはクロックタイムではなくデータからもたらされる。イベント時間を使うことで、データはデータ自体に埋め込まれたタイムスタンプに従って処理され、より正確な結果を計算できるという。
また彼は、アプリケーションでFlinkを使ったときの障害処理と耐障害性についても触れた。Flinkのセーブポイント機能を使うことで、状態を失うことなく、プログラムとFlinkクラスタを更新することができる。リアルタイムで生成されるデータをストリーム処理しているとき、このセーブポイントデータスナップショットは重要だ。
Apache Flinkについて興味がある人はWebサイトをチェックしてみよう。また9月にはFlink Forward 2016 Conferenceがベルリンで開かれる予定だ。プロポーザルの提出締め切りは2016年6月30日となっている。
Rate this Article
- Editor Review
- Chief Editor Action