リアルタイム分析では、新しいブログ記事が何人に読まれているか、Facebookの最新ステータスに誰が「いいね!」を押したかなど、今起きていることを最新の状態で把握することができます。ほとんどのユースケースでは、リアルタイムは機能としてあったらいいな程度のものであり、重要なインサイトは得ることができないれません。しかしながら、リアルタイム性が必要となる場合もあります。

例えば、あなたが大手広告代理店を経営しているとしましょう。クライアントが多額の費用を投じて行った最新のオンライン広告キャンペーンが実際に効果を上げているかどうかを、リアルタイムのアナリティクスで確認することができます。もしうまくいっていなければ、予算がそれ以上使われる前にすぐに変更することができます。もうひとつのケースは、自社アプリでリアルタイム分析機能を提供することです。そうすることで見栄えが良くなり、ユーザーがそれを必要とする可能性もあります。

世の中にはかなりの数のリアルタイムプラットフォームがあります。それらの多くは新しく登場したものであり、それぞれの違いは誰にとっても明確ではありません。私たちにできることは、すべての選択肢を紹介して、その中から選んでもらうことです。ここでは、ビッグデータ用に使用する5つのリアルタイム・ストリーミング・プラットフォームを紹介します。

Table of Contents

  1. Apache Flink
  2. Apache Spark
  3. Apache Storm
  4. Apache Samza
  5. Amazon Kinesis
  6. エンタープライズのソリューション

1. Apache Flink

Apache Flinkは、オープンソースのストリーミングプラットフォームで、複雑なストリーム処理を非常に高速に行うことができます。実際、ライブストリームを数ミリ秒で処理できるのは、ビッグデータの レコードをリアルタイムに処理する際に、新しく変更されたデータのみを処理するようにプログラムできるからです。Flinkは大規模なバッチ処理やストリーム処理を容易に実行し、リアルタイムなインサイトを提供することができるため、低レイテンシーで高性能なプラットフォームとして知られています 

Flinkのもう一つの特徴はフォールトトレランスで、システム障害がクラスター全体に影響しないことです。また、どのようなクラスター環境でも演算を完了しながら動作するように設計されているため、必要に応じて簡単に拡張できる信頼性の高い高速なソリューションとなっています。また、 Exactly-Onceセマンティクス(各イベントが正確に一度だけ配信されることを保証する仕組み。イベントを紛失したり、2回(またはそれ以上)配信されることはありません。)とあらかじめ用意されたオペレータ(オペレータは1つまたは複数のデータストリームを新しいデータストリームに変換します。プログラムは、複数の変換を組み合わせて、洗練されたデータフロートポロジーを作ることができます。)が追加されたことで、このプラットフォームでのリアルタイムでのデータ処理が可能になりました。

Flinkは、イベントのストリームをバウンド(終了が定義されている)またはアンバウンド(終了が定義されていない)のデータセットとして処理できることに注意してください。アンバウンドストリームでは、処理の終了が定義されておらず、継続して処理することができます。一方、バウンドストリームのイベントは、バッチとして処理され、処理の開始と終了が定義されます。このため、Python、Scala、SQL、Javaなど、さまざまな言語でプログラムを書くことができ、柔軟性があります。さらに、Flinkは使い勝手がよく、KafkaやHadoopなどの他のオープンソースのビッグデータ処理ツールとの統合が容易であることでも知られています。

2. Apache Spark

オープンソースのデータ処理フレームワークで、その速さと使いやすさで知られるものにSparkがあります。このプラットフォームは、クラスター上のRAM上でインメモリーで動作し、HadoopのMapReduceの2段階のパラダイムに縛られないため、ビッグデータの処理において圧倒的な速さを発揮します。

大規模なデータセットの処理タスクをたやすく完了できるだけでなく、複数のコンピュータに分散させることもできます。さらに、データパイプラインの作成、データストリームやグラフ処理なども可能です。そのため、バッチ処理や機械学習から、大規模なSQLやビッグデータのストリーミングまで、あらゆる用途に対応する代表的なリアルタイム・ストリーミング・プラットフォームの一つとなっています。実際、Intel、Yahoo、Groupon、Trend Micro、Baiduなどの企業がすでにApache Streamを採用しています。

Sparkは、スタンドアロンのクラスターモードでも、Hadoop YARNの上でも動作し、HDFSから直接データを読み込むことができます。また、EC2、Mesos、Kubernetes、クラウドなどでも動作します。さらに、Sparkのユーザーは、Python、SQL、R、Scala、Javaで簡単にアプリケーションを書くことができ、汎用性が高く、扱いやすいのが特徴です。これらの特徴が、Sparkが今日のリアルタイム・ストリーミング・プラットフォームのトップに位置づけられている理由です。

3. Apache Storm 

Stormは、無料の分散型リアルタイム計算システムで、Hadoopがバッチ処理用に行ってきたことをストリーミングのために行うことを目指しています。言い換えれば、アンバウンドなビッグデータのストリームを処理するためのシンプルなソリューションです。Stormを採用しているビッグブランドには、Spotify、Yelp、WebMDなどがあります。

Stormの大きなメリットの一つは、あらゆるプログラミング言語で使用できるように設計されており、ユーザーに多くの柔軟性を提供していることです。さらに、リアルタイム分析、機械学習、ETLなど、いくつかの使用例があります。また、最近の多くの優れたリアルタイム・ストリーミング・プラットフォームと同様に、ビッグデータをミリ秒以内に処理できる高速性を備えています。

Stormについて知っておくべきことの1つは、耐障害性と拡張性があり、既に使用しているテクノロジーと簡単に統合できることです。特に、Hadoop YARNの上で動作し、Flumeと組み合わせてHDFSにデータを保存することができます。このように、Stormを使用することで、どのようなプログラミング言語を使用していても、セットアップや使用が簡単なプラットフォームでデータを迅速に処理することができます。

4. Apache Samza

Samzaは、オープンソースの分散ストリーム処理フレームワークで、複数のソースからのビッグデータをリアルタイムに処理できるアプリケーションを構築することができます。このフレームワークは、Apache KafkaとYARNをベースにしていますが、スタンドアロンのライブラリとしても動作します。SamzaはLinkedInにより開発されましたが、その後、eBay、Slack、Redfin、Optimizely、TripAdvisorなどの大手企業が採用し始めています。

Samzaは、MapReduceに似たシンプルなコールバックベースのAPIを提供しており、スナップショット管理機能も備えています。また、耐久性と拡張性に優れたフォールトトレランスや、ステートフルな処理、アイソレーション機能も備えています。また、SparkやHadoopなどの他のバッチシステムとの違いは、連続的な演算と出力が可能なため、レスポンスタイムが非常に速いことが挙げられます。

Samzaは、非常に高いスループットと低いレイテンシで、超高速なデータ分析を実現することで知られています。そのため、ビッグデータを扱うために構築された数多くのプラットフォームの中でも、人気の高い選択肢となっています。

 

5. Amazon Kinesis

Kinesisは、クラウド上でストリーミングデータをリアルタイムに処理するためのAmazonのサービスです。この分析ソリューションは、Hadoopなどのツールが抱えるバッチ処理の問題を回避することができます。そのため、毎時数百テラバイトのデータを処理することができ、ビッグデータをリアルタイムに正確に処理することができます。 

このサービスの特徴を活かして、リアルタイムなデータを必要とするアプリケーションの開発が可能になります。Kinesisを使えば、ビデオやオーディオ、Webサイトのクリックストリームなど、あらゆるメディアのデータを即座に取り込み、バッファリングし、処理することができます。すべてのデータが最初に収集されるのを待つ必要はなく、到着した時点で処理することができるのです。これにより、AIや機械学習などの分析結果を数分で得ることができます。また、Kinesisはスケーラブルであり、多数のソースからの大量のストリーミングデータを低レイテンシーで処理できます

さらに、Kinesisは、Redshift、S3、DynamoDBなど、コネクタを介して他のAmazonサービスと統合することで、完全なビッグデータアーキテクチャを実現します。また、このツールにはKinesis Client Library(KCL)が含まれており、アプリケーションを構築してストリーミングデータをダッシュボードやアラートを利用できる上、価格は使用したリソースに対してのみ支払うダイナミックプライシングです。

エンタープライズのソリューション

ビッグデータが増大し続けている中、大企業はそれをただ傍観しているわけではありません。IBM InfoSphere Streams、Microsoft StreamInsight、Informatica Vibe Data Streamなどは、リアルタイム処理が可能な商用のエンタープライズグレードのソリューションのほんの一部です。このようなリアルタイムデータをすべて処理するには、データを正しく効率的にプル、プッシュ、変換できるデータ統合ツールが必要であり、Integrate.ioはそれを提供することができます。Integrate.ioの製品ロードマップには、Change Data Capture(CDC)が含まれているので、ぜひ試してみてください。Integrate.ioが提供するサービスについてもっと知りたい方は、オンラインデモにお申し込みください。また、オンラインデモ後にトライアルを希望の方には、14日間無料で利用できるトライアル環境を提供しております。