IoT研究所

1 2

レッドハット ミドルウェアコンサルタントの小林です。
今回は、レッドハットのIoTテクノロジースタックの中でも重要な要素と成っているリアルタイムビッグデータソリューションに関してご紹介するとともに、Red Hat JBoss Data Grid 7から新たに利用可能になったDistributed Stream機能に関して、2回に分けてご紹介します。

[第1回]Red Hatのリアルタイムビッグデータソリューションとは

ビッグデータという言葉そのものは単に「大量のデータ」を意味するだけですが、そのボリュームや種類、保持期間、発生頻度はさまざまで、解決したいビジネス上の課題も多様です。このため、ビッグデータを扱っていくシステムでは、対象とするデータの「ボリューム、種類、保持期間、発生頻度」と「そのデータをどう活用するか」によって全く異なるアプローチが必要になります。

現在、多くの企業でHadoop/MapReduce/Spark等が利用されていますが、こらら従来のビッグデータソリューションは、ペタバイト級のデータを対象にデータマイニングや統計解析、機械学習をバッチ的に実行するのに適しています。このデータの活用方法は、よりユーザーの利便性を上げるための分析結果や、より良い製造方法を模索するためのレポート等、基本的には人(データサイエンティスト)によるレポーティング等が主な活用方法になることが多くなります。それに対して、例えば、Twitterの一つ一つのTweetにリアルタイムで関連性の高い広告をつけるなど大量に発生する細かいトラフィックに対するリアルタイム処理に関しては、従来のビッグデータの仕組みでは難しく、リアルタイムを想定したビッグデータソリューションが必要となります。この領域はストリーム処理の分野ですが、現在、リアルタイム処理を実現するためにビッグデータ領域の一部として扱われ始めています。

前振りが長くなってしまいましたが、Red Hatが提唱するリアルタイムビッグデータは、このストリーム処理に近い処理形態を想定しており、大量に発生する細かなトラフィックをインメモリデータグリッドとルールエンジンでリアルタイムで処理していくことを基本としています。

特徴としては以下の様になります。

■ 高速にアクセス可能な共有されたインメモリデータグリッドにより簡単にスケールアウト可能なアーキテクチャ

クラスタを構成するすべてのサーバが単一の分散メモリに高速アクセス可能となり、複数サーバ構成で高多重処理が可能となる。
また、インメモリデータグリッドはノードの追加/削除で自動的にデータを再配置するため、サーバ追加も容易に可能。

■ コンピュートグリッドとしてインメモリデータグリッドを活用することによりさらに高速なメモリアクセス

データへのアクセス回数が多い複雑な処理に関しては、ロジックそのものをデータが存在するリモートノードに転送し、リモートノード側で処理を行うことが可能。
これにより、インメモリデータグリッドのデータアクセスはローカルメモリアクセスと同等のスピートまで向上するため、さらなる高速化が可能。

また、インメモリデータグリッドの全データに対する集計や一括処理をする場合も、各ノードのローカルメモリに対してのみロジックを実行し、各ノードの処理結果のみを収集するような処理モデルも実装可能となる。

■ 柔軟なデータ処理を実現するルールエンジン

データ処理で利用されるビジネスロジックの一部をルールエンジンで実行することにより、データサイエンティストやビジネスエキスパートのような業務寄りのスタッフの要望を簡易に実装可能となる。また、ルールはシステムを停止せずに変更することが可能であり、システムとして真に価値を提供しているビジネスロジックの変更容易性を高めることができる。

ユースケース

ユースケースとして、IoT/インダストリー4.0で語られるような「スマートファクトリー」を例に考えてみましょう。
「スマートファクトリー」は近年注目を浴び得ているコンセプトであり、工場内のセンサーや設備機器をネットワークで接続し、それらの機器から集めたデータを利用することで、さらなるオートメーション化、品質の向上、サプライチェーンとの連携等を目指すものです。
もちろんスマートファクトリーでもビッグデータは欠かすことのできない重要な要素になりますが、ここでも従来のバッチ的なビッグデータ解析手法とリアルタイムなビッグデータ処理手法の2種類の手法が必要となります。

例えば、集めた多くのデータからデータサイエンティストが分析を行い、そこから工場内のさらなる効率的な運用や新製品の開発に繋がるようなヒントを得るといった要望には、従来のビッグデータ解析手法が最適です。
必要となるデータも出来れば年単位で欲しいため、データ量はペタバイト級となる反面、データサイエンティストの分析も数日から数週間かかることになります。

反対に、集めたデータから状況に応じてラインを停止したい、というような要望にはリアルタイムビッグデータが最適です。
この場合、判断のために必要なデータは直近のデータ、長くとも数日、実際は数時間分となるため、データ量は数ギガ程度でしょう。しかし、求められるアクション(ラインを停止する、もしくは停止アラートをあげる)は、停止する必要があると規定されている複数の条件が揃った直後、つまりリアルタイムなアクションが求められるのです。

レッドハットのリアルタイムビッグデータソリューション

レッドハットでは、主にRed Hat JBoss Data Grid(以下、JDG)とRed Hat JBoss BRMSと言う二つの製品を組み合わせてリアルタイムビッグデータソリューションを提供しています。
JDGは2012年からRed Hat製品として提供されているオープンソースのインメモリデータグリッド製品です。
非常に活発に開発が行われているinfinispan.orgプロジェクトをベースにしており、バージョンを重ねる度に多くの機能が実装され、現在では単なるインメモリデータグリッドとしてだけではなく分散コンピュートグリッドの基盤やリアルタイム分析基盤として利用されるケースが多くみられます。
JBoss BRMSは、ルールエンジンとBusiness Central(ルールを管理するWebアプリケーション)やDrools Fusion(CEPエンジン)、Business Resource Planner(組み合わせ最適化エンジン)を包括的に提供する製品となっており、さまざまな適用領域がありますが、リアルタイムビッグデータソリューションでは基本的にコアとなるルールエンジンだけを利用します。
ルールエンジンでは、ルール言語を用いて複数のデータのパターンマッチングを実施し、「ある条件に合致するデータの組み合わせを検出する」ことを目的に利用します。ルールの記載に関しては幾つか方法が用意されていますが、スプレットシート(Microsoft Excel等)を利用して、ルールを追加、変更し、システム停止することなく、その変更を反映することができるため、ルールエンジンでシステムの重要な条件判断部分を実装することで仕様変更に強いシステムを構築することが可能となっています。

第2回では、リリースされたばかりのJDG7の新機能、Distributed Streamを実際に動かしてみたいと思います。お楽しみに!

1 2