データウェアハウスの強化
第 2 回 ビッグデータ・テクノロジーをソース・データのランディング・ゾーンとして使用する
コンテンツシリーズ
このコンテンツは全#シリーズのパート#です: データウェアハウスの強化
このコンテンツはシリーズの一部分です:データウェアハウスの強化
このシリーズの続きに乞うご期待。
この連載の第 1 回では、データウェアハウスの現状について、その全体像、テクノロジー、アーキテクチャーを説明し、ビッグデータ・テクノロジーへ移行する技術面およびビジネス面での理由を明らかにした上で、ビッグデータ・テクノロジーを組み込むことによって既存のデータウェアハウスを強化するための、ビッグデータの使用例をいくつか示しました。今回の記事では、第 1 回で紹介した使用例の 1 つとして、Hadoop ベースの環境をビッグデータのランディング・ゾーンとして使用する方法を取り上げます。ビッグデータを保管、処理、前処理、フィルタリング、探索する複数のシナリオを説明するとともに、ランディング・ゾーンの概念とその論理アーキテクチャーおよび主要なコンポーネントを紹介します。
ランディング・ゾーン
Hadoop には、データのステージング・エリアとして機能するランディング・ゾーンを構成する機能があります。さまざまな構造化ソースと非構造化ソースからデータを受け入れるランディング・ゾーンは、以下の複数のタスクを実行します。
- データの初期探索: ストレージ・コストを節約するために、データを探索し、データウェアハウスに移して保存できるデータを判別します。保存中のデータは、大抵、このカテゴリーに分類されます。
- ストリーミング・データの処理: ストリーミング・データはかなりの量になることがありますが、そのすべてを保管しなければならないわけではありません。ランディング・ゾーンではストリーミング・データを受け取ると、そのデータを保管せずに、データを分析して処理することができます。ランディング・ゾーンを使用して、Hadoop 分散ファイル・システム (Hadoop Distributed File System: HDFS) に保存すべきストリーミング・データ、データウェアハウスに保存すべきストリーミング・データを判別してください。
- 前処理機能の提供: ランディング・ゾーンでデータを変換してから、データウェアハウスにデータをロードすることができます。
ランディング・ゾーンのスコープと境界
図 1 に示すように、ランディング・ゾーン (Landing zone) が位置するのは、データ・ソースとデータウェアハウスの間です。リアルタイム・アナリティクスの処理は、ランディング・ゾーンの外部で行われます。
図 1. ランディング・ゾーンのスコープ
ビッグデータを処理するためのランディング・ゾーンの実装
ビッグデータ・プラットフォームは、大量のデータを分散して保管し、並行処理するためのインフラストラクチャーを提供します。データには、構造化データ、半構造化データ、非構造化データがあります。これらのデータは、保管されている状態のものもあれば、転送中の状態のものもあります。
この大量のデータの保管先となるのは、分散ファイル・システム (HDFS など) およびドキュメント指向データベース (MongoDB など) です。データの処理には、MapReduce などの分散処理テクノロジーを適用します。分散ストレージからデータを取得するには、Jaql、Hive、Pig などの SQL ライクなプログラミング・モデルを使用します。
ビッグデータを処理するランディング・ゾーンは、以下のシナリオで実装することができます。
- データウェアハウスのデータ・ソースとしてビッグデータを用意する
- 非構造化データを保管して、そのデータをデータウェアハウスに移す
- データウェアハウスからビッグデータ・ストレージにデータを移す
- ステージング・データをビッグデータ・ストレージに移す
- ランディング・ゾーンでストリーミング・データを処理し、フィルタリングしたデータをデータウェアハウスに移す
- ランディング・ゾーンでデータを探索し、フィルタリングしたデータをデータウェアハウスに移す
データウェアハウスのデータ・ソースとしてビッグデータを用意する
データウェアハウスに保管されているデータの中に、重要なビジネスの洞察を引き出せる可能性があるデータはありますか?
ビジネスでの一般的なビッグデータ・ソースには、ソーシャル・メディア、モバイル端末、スマート端末、気象情報、そしてセンサーから収集した情報などがあります。これらのデータ・ソースに接続するには、アダプターを使用することができます。データは、データ・ソースから直接取得することも、データ・プロバイダーを介して取得することもできます。データ・プロバイダーはデータを所有または取得した後、要求される頻度で、特定のフィルターを通した特定のフォーマットで公開します。
図 2 に示すように、最初のステップは、データをランディング・ゾーンに移すことです。非構造化データについては、構造化フォーマットまたは半構造化フォーマットに変換してから、初期段階でのデータの前処理、抽出、変換を行います。変換後のデータは、収容可能なサイズのリポジトリーに保管します。次のステップでは、有用なエンティティーを特定し、エンティティー ID を使用して該当するエンティティーを取得します。さらに、保管されたデータに対して並列処理を行うことで、分析結果をさまざまな形式 (グラフ、ダッシュボード、サマリー・レポート) に取り込むことができます。
このシナリオでは、新たなソースからビッグデータを取得して、既存のデータウェアハウス・プラットフォームに移すことができます。この新しいデータは、ウェアハウス・アプリケーションからさらなるビジネスの洞察を得るために使用することができます。
図 2. データウェアハウスのデータ・ソースとしてビッグデータを用意する
非構造化データを保管して、そのデータをデータウェアハウスに移す
手作業で検索しなければならないドキュメントはありますか?
企業内部で生成される非構造化データも、ランディング・ゾーンのデータ・ソースになります。ドキュメント管理ツールに保管された大量のデータには、デジタル文書、画像、動画、音声といった形式の情報が含まれます。
これらの社内アプリケーションの非構造化データは、ランディング・ゾーンに送信することができます。図 3 に示すように、最初のステップは、データをランディング・ゾーンに移すことです。非構造化データを構造化フォーマットまたは半構造化フォーマットに変換してから、初期段階でのデータの前処理、抽出、変換を行います。前処理を行う際に、データウェアハウスに保管されている既存のエンティティーを非構造化データのエンティティーに関連付けて、データをデータウェアハウスに移せるようにします。次のステップでは、有用なエンティティーを特定し、エンティティー ID を使用して該当するエンティティーを取得します。さらに、保管されたデータに対して並列処理を行うことで、分析結果をさまざまな形式 (グラフ、ダッシュボード、サマリー・レポート) に取り込むことができます。
このシナリオでは、企業内部の非構造化データがストレージ・リポジトリーに保管されるため、そのデータを探索して取り込むことが可能になります。フィルタリングされたデータは、データウェアハウスにも移されます。
図 3. 非構造化データを保管して、データウェアハウスにデータを移す
データウェアハウスからビッグデータ・ストレージにデータを移す
データウェアハウスのストレージ制限により、まだ価値のあるデータをパージまたはアーカイブせざるを得ない状況になっていますか?
大量のデータを処理するのにかなり時間がかかるレポートがありますか?それらのレポートをリアルタイムで利用できるとしたら、組織がより迅速に意思決定を行えるようになりますか?
図 4 に示すように、最初のステップでは、データをデータウェアハウスからランディング・ゾーンに移します。初期段階でのデータの前処理、抽出、変換を行ってから、データをリポジトリーに保管します。さらに、保管されたデータに対して並列処理を行うことで、分析結果をさまざまな形式 (グラフ、ダッシュボード、サマリー・レポート) に取り込むことができます。
このシナリオでは、ビッグデータが既存のデータウェアハウスから取得されて、コスト・エフェクティブにビッグデータ・ストレージに保管されます。既存のデータウェアハウスの制限により、アーカイブまたはパージされることになっていたデータを、さらなるビジネスの洞察を得るために使用できるようになります。
図 4. データウェアハウスからビッグデータ・ストレージにデータを移す
ステージング・データをビッグデータ・ストレージに移す
複雑な処理を行ってからでないと、データウェアハウスに保管できないデータがありますか?
図 5 に示すように、最初のステップでは、データをデータウェアハウスのステージング・エリアからランディング・ゾーンに移します。初期段階でのデータの前処理、抽出、変換を必要に応じて行って、データをデータウェアハウスに移せる状態にします。必要な場合は、データをビッグデータ・ストレージに保管します。さらに、保管されたデータに対して並列処理を行うことで、分析結果をさまざまな形式 (グラフ、ダッシュボード、サマリー・レポート) に取り込むことができます。
このシナリオでは、ビッグデータがデータウェアハウスのステージング・エリアからビッグデータ・プラットフォームに移されてから、データウェアハウスにプッシュされます。
これで、時間のかかる複雑な処理を必要とする大量のデータを、ビッグデータ・プラットフォームで処理できるようになります。
図 5. ステージング・データをビッグデータ・ストレージに移す
ランディング・ゾーンでストリーミング・データを処理し、フィルタリングしたデータをデータウェアハウスに移す
ストリーミング・データがさらなるビジネスの洞察を提供する可能性があるかどうか、さらには組織がよりタイムリーに状況に対応する上でストリーミング・データが役立つ可能性があるかどうかを検討してください。
通常、ストリーミング・データは速い速度で組織に配信されます。図 6 に示すように、最初のステップでは、ストリーミング・データをランディング・ゾーンに移します。非構造化データについては、構造化フォーマットまたは半構造化フォーマットに変換してから、初期段階でのデータの前処理、抽出、変換を行います。変換後のデータは、収容可能なサイズのリポジトリーに保管します。
このシナリオでは、新たなソースからストリーミング・データがリアルタイムで取得されて、ランディング・ゾーンで前処理が行われます。ランディング・ゾーンでフィルタリングされたデータは、データウェアハウスに移すことができます。この追加データは、ウェアハウス・アプリケーションからさらなるビジネスの洞察を得るために使用することができます。
図 6. ランディング・ゾーンでストリーミング・データを処理し、フィルタリングしたデータをデータウェアハウスに移す
ランディング・ゾーンでデータを探索し、フィルタリングしたデータをデータウェアハウスに移す
ビッグデータ・プラットフォームに保管されているデータの中に、さらなるビジネスの洞察を引き出して既存のエンタープライズ・アプリケーションへ提供できる可能性があるビッグデータはありますか?
図 7 に示すように、最初のステップは、既存の外部ソースからデータを取得することです。非構造化データについては、構造化フォーマットまたは半構造化フォーマットに変換してから、初期段階でのデータの前処理、抽出、変換を行います。ランディング・ゾーンでは、データを前処理して分析し、データの探索を実行することで、そのデータをデータウェアハウスに移せるかどうかを判別します。
このシナリオでは、ビッグデータが新たなソースから取得されて、ランディング・ゾーンで分析、探索されます。そしてフィルタリングされたデータが、データウェアハウスに移されます。この追加のビッグデータは、ウェアハウス・アプリケーションからさらなるビジネスの洞察を得るために使用することができます。
図 7. ランディング・ゾーンでデータを探索し、フィルタリングしたデータをデータウェアハウスに移す
ランディング・ゾーンのアーキテクチャーと論理コンポーネント
ランディング・ゾーンには、以下のコンポーネントが含まれています。
- 統合環境
- データ探索環境
- Hadoop 環境: 分散ファイル・システム (ネーム・ノードとデータ・ノードを含む) および MapReduce ゾーン (ジョブ・トラッカーとタスク・トラッカーを含む)
- ストリーム環境
統合環境
統合環境は、各種データ・ソース、Hadoop、データウェアハウスの間のインターフェースを提供するために、データ・インテグレーターを使用します。この統合機能を提供するのが、IBM InfoSphere Information Server です。
InfoSphere Information Server のコンポーネントとなっている IBM DataStage は、それぞれに異なる複数の複雑な情報ソースを統合して変換する機能を備えた、ETL (Extract, Transform, Load: 抽出、変換、ロード) ツールです。DataStage によって、新規データを定期的に分析する IBM InfoSphere BigInsights にデータが取り込まれます。さらに、DataStage は Hadoop からデータウェアハウスにデータをプッシュします。
したがって、データ・インタグレーターは以下の数種類の統合を管理することになります。
- 汎用の Jaql モデルによる、JDBC ソースとの統合
- ODBC データ・ソースとの統合
- IBM DB2 との統合
- Big SQL 統合: ODBC ドライバー、DB2 からの LOAD 文、IBM Netezza データウェアハウス・アプライアンス、および Teradata の統合です。Big SQL により、Hadoop 内のすべてのデータに JDBC/ODBC インターフェースを介してアクセスできるようになります。また、IBM Cognos Business Intelligence サーバーがさまざまなタイプの計算を BigInsights MapReduce に転送して処理することも可能になります。
図 8 に、Hadoop 環境にデータ・インテグレーターを組み込むシナリオを示します。
図 8. ランディング・ゾーンのアーキテクチャー (Hadoop 環境にデータ・インテグレーターを組み込む場合)
図 9 に、Hadoop の外部に分離された統合環境を示します。
図 9. ランディング・ゾーンのアーキテクチャー (統合環境を分離する場合)
データ探索環境
IBM InfoSphere Data Explorer はデータ探索コンポーネントの役割を果たし (図 10 を参照)、ランディング・ゾーンに可視化機能とディスカバリー機能を提供します。InfoSphere Data Explorer によって、前処理の前後でユーザーがデータをディスカバーしたり、ナビゲートしたりすることが可能になります。
図 10. データ探索環境
Data Explorer はランディング・ゾーンに、以下の機能を提供します。
- 初期ディスカバリー環境: データウェアハウスに移すのに最適なコンテンツ、Hadoop に維持しておく必要があるデータ、そして破棄できるデータを識別します。
- 柔軟でコンパクトなアーキテクチャー: 従来の索引ベースの手法ではなく、位置ベースの索引に基づいて構築されたアーキテクチャーです。
- 複数のインターフェース: 管理とデプロイメントが簡単な、Web、コマンド・ライン、API、フレームワークなど。
- Hadoop 環境との統合: データ探索を容易にします。
Hadoop 環境
図 11 に示されている Hadoop 環境は、特に保存されているデータを対象に、大規模なデータ処理を行うための環境です。この環境には、ストレージ・フレームワークとオペレーショナル・フレームワークが含まれます。このような Hadoop 環境を提供するのは、InfoSphere BigInsights です。
図 11. Hadoop クラスター
ストレージ・フレームワーク: 分散ファイル・システム
Hadoop 分散ファイル・システム (HDFS) は、大規模なファイルをサポートするように最適化されています。HDFS により、データはロード時に複数のノードに分散されます。HDFS は、以下の主要なコンポーネントからなります。
- ネーム・ノード
- データ・ノード
- ジョブ・トラッカー
各データ・ブロック (またはファイルの一部) は、3 つのデータ・ノードにデフォルトで複製されます。これらのノードは、複数のデータ・ノードを格納するラックに収容されています。1 つ目のレプリカは、クライアント・アプリケーションと同じノードに配置されます。クライアント・アプリケーションが同じクラスター上で実行されている場合、そのアプリケーションはデータを読み込む必要があるためです。2 つ目のレプリカは、最初のラックとは別のラックに配置されます。3 つ目のレプリカは、2 つ目のラックと同じラックに配置されますが、配置先のノードは異なります。
オペレーショナル・フレームワーク: MapReduce ゾーン
オペレーショナル・フレームワーク内には、MapReduce タスクのタスク・トラッカーを格納する単純な MapReduce プログラミング・モデルのみがあります。各クラスターには、1 つ以上のタスク・トラッカーが含まれます。
ストリーム環境
各種ストリーミング・ソースからランディング・ゾーンに取り込まれるデータのエントリー・ポイントとなるのは、ストリーム環境です。ストリーム環境は、これらのデータを準リアルタイムで処理します。この場合のリアルタイムとは、データ・パケットが到着してから処理後のデータが使用可能になるまでの待ち時間を示すレイテンシーが小さいことを意味します。
ストリーム環境の役割を果たす IBM InfoSphere Streams は、ディスクの大容量ストレージにアクセスするのではなく、メモリー内でデータを処理します。図 12 に示すように、最初の一連のアナリティクスによって、関連するデータが Hadoop 環境にプッシュされます。InfoSphere Streams は、高速かつスケーラブルであり、プログラミングも可能であるため、単純なデータ・アナリティクスから高度なアナリティクスにまで対応します。複雑なアナリティクスは、ランディング・ゾーンの外部で行われます。
図 12. ストリーム環境でのデータ・フロー
前処理タスク
Hadoop 環境にロードされたデータには、さまざまなタイプの前処理を適用することができます。
- 探索ゾーンを使用した初期データ・フィルタリング
- データウェアハウスに送信する前、または変換を目的として送信する前のデータ・クレンジング
- データウェアハウスに送信する前のデータ変換
- 構造化データ、半構造化データ、非構造化データのマージ。例えば、図 13 に示す銀行のシナリオでは、以下のタスクが行われます。
- 呼び出しに関連付けられたデータが、複数のソースから収集されて Hadoop にロードされます。
- SOR (System of Record) 内のデータを分析するために、ソース属性が選択されます。
- 構造化データに関連する、半構造化データと非構造化データがモデリングされます。
- 詳細なオペレーショナル・レポート作成をサポートするために、詳細な構造化データの 3 ヶ月にわたるサブセットが SOA リレーショナル・データベース管理システム (RDBMS) にロードされます。
- データが集約されます。
図 13. Hadoop を利用して行われるデータのロードを含む前処理タスク
さまざまな環境への Hadoop の統合
データ処理環境に Hadoop を組み込むには、アーキテクチャー内の他のコンポーネントに Hadoop を統合します。
既存のデータウェアハウスおよびその他の従来型データ・ソースに統合する
Hadoop をリレーショナル方式の従来型データ・ソースおよびデータウェアハウスに統合するには、ETL 処理を使用したデータ統合を行います (図 14 を参照)。
図 14. ETL を使用したデータ統合
ストリーム環境に統合する
図 15 に示すように、ストリーム環境と Hadoop 環境との統合は、InfoSphere Streams に含まれる以下のツールを使用して、Hadoop 環境内で直接行います。
- HDFSDirectoryScan: HDFS を除き、DirectoryScan と同様
- HDFSFileSource: HDFS を除き、FileSource と同様
- HDFSFileSink: HDFS を除き、FileSink と同様
- HDFSSplit: 複数のデータ・バッチを並列に HDFS に書き込みます。
図 15. ストリーム環境との統合
データ探索ゾーンに統合する
データ探索に Hadoop 環境を統合すると、分散ストレージに保管されているコンテンツにアクセスしてナビゲートできるようになります。この統合により、ユーザーは、ウェアハウスへのロード前にデータをディスカバーしたり、ナビゲートしたりすることが可能になります。HDFS 内のデータを対象として情報のディスカバリーおよび探索を行うためのユーザー・インターフェースは、データ探索ツールによって作成されます。このツールは、初期段階のディスカバリー・ツールとして機能し、ウェアハウスに移すのに最適なコンテンツと、Hadoop 環境で保持すべきコンテンツを識別します。
InfoSphere Data Explorer は、クローリングして索引を付けるというモデルを採用しています。このモデルでは、コミット・メカニズムによって InfoSphere Data Explorer の索引の整合性を確保します。InfoSphere Data Explorer は XML をベースにしているため、柔軟な統合が可能です。すべての構成は XML 形式で保存され、クエリーやクローリングの実行中に取り込まれたデータは、以降の操作を可能にするために必ず XML に変換されます。生成されるデータも、最初は XML 形式で生成されます。データは最終的に、HTML などの他の形式に変換されて、配信または表示されることになります。
InfoSphere Data Explorer サーバーは、Hadoop サーバーのクラスターからリアルタイムでデータを受信することができます。また、InfoSphere Data Explorer は、InfoSphere Data Explorer の Application Builder を使用して作成されたアプリケーションから、該当するデータを Hadoop にプッシュすることもできます。
まとめ
これまで、組織は多数のソースからデータを抽出し、そのデータをデータウェアハウスやデータベースに移してからでないと、データに対してクエリー、分析、ディスカバリー、探索を実行することができませんでした。このような状況では、ランディング・エリアやステージング・エリアが、データを永続的なデータウェアハウスやデータベースに渡す前の一時ストレージ・スペースとしてのみ使用されるのが通常でした。
Hadoop ベースのテクノロジーにより、組織は今や、ランディング・エリアをこれまでよりも有効に活用することができます。リアルタイムのストリーミング・ソースを含め、多数のソースからのデータをランディング・ゾーンで受信し、ランディング・ゾーンを前処理ゾーンとしてデータのクレンジングや変換を行ってから、データウェアハウスに送信することができます。ランディング・ゾーンでデータをフィルタリングすることで、データウェアハウスのキャパシティーとパフォーマンスが向上します。
この連載の第 3 回では、ビッグデータ・テクノロジーをデータウェアハウス内の履歴データに適用する場合を取り上げます。組織内で受け渡されるデータの量を考えると、それほど頻繁に使用されないデータをデータウェアハウスからアーカイブ・リポジトリーに移す、効果的なプロセスを実装することが重要になります。第 3 回では、ビッグデータ・テクノロジーを使用して、データウェアハウス内に履歴データのアクティブ・アーカイブを作成する方法を説明します。
ダウンロード可能なリソース
関連トピック
- 連載「Big data architecture and patterns」(developerWorks、2013年9月): ビッグデータに関する問題を分類し、それぞれの問題に対処するビッグデータ・ソリューションのアーキテクチャーを選択して、そのソリューションを IBM ビッグデータ・プラットフォームで実装する方法を説明しています。
- 「Harness the Power of Big Data: The IBM Big Data Platform」(Paul C. Zikopoulos、Dirk deRoos、Krishnan Parasuraman、Thomas Deutsch、David Corrigan、James Giles 共著): IBM ビッグデータ・プラットフォームの概要と、このプラットフォームをビジネス上の問題に適用する方法を説明しています。