OpenStack によるプライベート・クラウドを Hadoop MapReduce 環境に導入する

クラウド・コンピューティングとビッグ・データは企業を変えつつあります。この記事では、分析プラットフォームを利用して最大の投資収益率を実現する上で、なぜこれらの新しい技術を導入する必要があるかを説明します。この記事を読むことで、プライベート・クラウドとは何か、クラウド・コンピューティング技術とビッグ・データ技術は何で構成されているのか、クラウド・コンピューティングとビッグ・データを組み合わせるとどのような相乗効果があるのか、そしてクラウド・コンピューティングとビッグ・データの導入はどのように行うのか、といったことを理解することができます。

Steven C. Markey, Principal, nControl

Author photoSteve Markey はコンサルタント、客員教授であり、CSA (Cloud Security Alliance) のデラウェア・バレー (フィラデルフィアおよび周辺地域) 支部の現会長でもあります。彼は多くの資格や学位を持ち、技術分野に 11 年を超える経験があります。彼は情報セキュリティー、情報プライバシー、クラウド・コンピューティング、プロジェクト管理、e-ディスカバリー、情報ガバナンスに関して頻繁に講演を行っています。



2012年 11月 22日

さまざまな組織が企業内でクラウド・コンピューティング技術とビッグ・データ技術の両方を活用しています。そのため、これらの技術を組み合わせて使用する方法について検討するのは賢明なことです。企業は、この 2 つの技術を組み合わせて使用することにより、プライベート・クラウドが持つ、弾力的なスケーリングを迅速に行える能力やシングルテナンシーの性質を活かす一方で、最適なレベルの分析処理を実現することができます。この記事の目的は、クラウド・コンピューティング技術とビッグ・データ技術は何で構成されているのか、プライベート・クラウドとは何か、Apache Hadoop とは何か、これらにはどのような相乗効果があるのか、これらの技術はどのように導入すればよいのか、そしてこれらの技術にはどのような課題があるのか、といったことを皆さんが理解する助けとなることです。

プライベート・クラウド入門

「プライベート・クラウド」は企業内に導入されたクラウド・コンピューティングであり、その中で組織は、クラウド・コンピューティング技術が持つさまざまな特徴をデータ・センター内で活用することができます。そうした特徴には、迅速に実現できる弾力的なスケーリング、リソース・プーリング、オンデマンドのプロビジョニング、自動管理などがあります。こうしたさまざまな特徴を社内で活用するために、ほとんどの組織は OpenStack や CloudStack など、オープンソースのクラウド・ディストリビューションを使用しています。

OpenStack はオープンソースのクラウド・ディストリビューションの中で最も普及しており、Compute (Nova)、Storage (Swift)、Messaging Queue (RabbitMQ)、Networking (Quantum) などのコンポーネント、そして OpenStack 全体のコントローラーが含まれています。図 1 はこれらのコンポーネントを図で示したものです (この図には、Networking (Quantum) コンポーネントは含まれていません)。

図 1. OpenStack ディストリビューションのコンポーネント
OpenStack ディストリビューションのコンポーネント

これらのコンポーネントが組み合わされ、計算リソースやストレージ・リソースを動的にプロビジョニングする環境を実現します。ハードウェアの観点で見ると、これらのサービスは多くの仮想サーバーや物理サーバーに分散しています。例えば、ほとんどの組織は、コントローラー・ノードとして動作する 1 台の物理サーバーと、計算ノードとして動作するもう 1 台のサーバーを配備しています。さらに、多くの組織はストレージ環境を専用の物理サーバーに用意する方式を採択しています。これは OpenStack を導入した場合には、Swift ストレージ環境のために別のサーバーを用意することを意味します。


ビッグ・データ入門

Oracle は次の 3 つのソースからデータを集約したものとしてビッグ・データを定義しています。その 3 つとは、昔ながらのデータベース (構造化データ)、付随データ・ソース (ログ・データやメタデータなど)、ソーシャル・メディア (ソーシャル・データ) です。ビッグ・データは多くの場合、非リレーショナル分散データベース (NoSQL など) のような新しい技術パラダイムを使用して格納されます。非リレーショナル・データベース管理システム (Non-Relational Database Management System: NRDBMS) には、カラム指向型、キー・バリュー型、グラフ型、ドキュメント指向型という 4 つのタイプがあります。これらの NRDBMS がソース・データを集約する一方、MapReduce などの分析プログラムは集約された情報を分析します。

昔ながらのビッグ・データ環境には、分析プログラム、データ・ストア、スケーラブルなファイルシステム、ワークフロー・マネージャー、分散型のソートおよびハッシュ化ソリューション、データ・フロー・プログラミング・フレームワークが含まれています。商用アプリケーションによく使用されるデータ・フロー・プログラミング・フレームワークは、構造化問い合わせ言語 (Structured Query Language: SQL) です。一方、オープンソース・ディストリビューションで SQL に代わって使用されるデータ・フロー・プログラミング・フレームワークには、例えば Hadoop 向けの Apache Pig などがあります。商用の Hadoop としては、より安定した包括的なソリューションの 1 つに Cloudera があります。一方、オープンソースの Hadoop ディストリビューションとしては、Apache Hadoop が最もよく使用されています。

Apache Hadoop ディストリビューションがよく使用される理由は、多様なコンポーネントを使用できるためです。例えば、HDFS (Hadoop Distributed File System ― スケーラブルなファイルシステム)、HBase (データベース/データ・ストア)、Pig、Hadoop (分析)、MapReduce (分散型のソートおよびハッシュ) などを使用することができます。図 2 に示すように、Hadoop タスクは分割されて複数のノードに渡され、MapReduce タスクは分割されて複数のトラッカーに渡されます。

図 2. HDFS と MapReduce のレイヤーの構成
HDFS と MapReduce のレイヤーの構成を示す図

図 3 に、MapReduce がどのようにジョブを実行するかを示します。ジョブは入力を取得して一連のアクション (スプリット、ソート、マージ) を実行した後、ソートされてハッシュ化されたデータを出力します。

図 3. MapReduce の概略図
MapReduce の概略図

図 4 に、さらに複雑な MapReduce ジョブとそのコンポーネントを示します。

図 4. MapReduce のデータ・フロー図
MapReduce data flow diagram

Hadoop MapReduce を導入した環境は、従来の分析環境 (IBM Cognos や Satori proCube などのオンライン分析処理) よりも複雑ではありますが、スケーラブルでコスト効果が高くなっています。


すべてを組み合わせる

ビッグ・データ環境とプライベート・クラウド環境は、それぞれを単独で使用しても有用ですが、この 2 つを組み合わせると組織にもたらされるメリットが非常に大きくなります。OpenStack によるプライベート・クラウドと Apache Hadoop 環境とを組み合わせると、環境は複雑になりますが、企業にとっての相乗効果は大きくなります。以下のセクションでは、組織がプライベート・クラウド技術とビッグ・データ技術を統合する方法を順番に見ていきます。

Swift、Apache Hadoop、そして MapReduce

プライベート・クラウド環境にビッグ・データを配備する場合の一般的なモデルは、OpenStack の Swift ストレージ技術を Apache Hadoop の MapReduce クラスターと組み合わせて処理を行うモデルです。このアーキテクチャーを採用するメリットは、増え続けるデータを扱うためのスケーラブルなストレージ・ノードを持てることです。IDC の調査によれば、データ量は毎年 60% の割合で増加しています。つまりこのソリューションにより、増え続けるデータへの対応という課題に対処できると同時に、組織はプライベート・クラウドを導入するためのパイロット・プロジェクトを立ち上げることができます。

この導入モデルを使用するのが最も適している組織は、ストレージ・プールを使用してプライベート・クラウドをパイロット運用する一方で、社内のビッグ・データ技術を使用しようとする組織です。ベスト・プラクティスとしては、まずビッグ・データ技術を本番データ・ウェアハウス環境に導入した後、プライベート・クラウドによるストレージ・ソリューションの構築および構成を行います。Apache Hadoop MapReduce 技術をデータ・ウェアハウス環境に適切に統合し、プライベート・クラウドによるストレージ・プールを構築して適切に動作するようになると、指定した Hadoop MapReduce 環境にプライベート・クラウドのストレージ・データを統合できるようになります。

Swift、そして Cloudera の Apache Hadoop ディストリビューション

ゼロの状態からビッグ・データを扱うことをためらう組織のために、Cloudera のようなソリューション・プロバイダーではビッグ・データ・アプライアンスを提供しています。CDH (Cloudera's Distribution including Apache Hadoop) ソリューションを利用すると、組織は人員を調達したり、Hadoop のあらゆる詳細について人員を教育したりするための投資が必要なくなり、ビッグ・データの観点で高い投資収益率 (ROI) を得られる可能性があります。この方法は、ビッグ・データのスキルもプライベート・クラウドのスキルもない組織が、ゆっくりと反復的にこの技術を製品ラインに組み込みたい場合には、特に魅力的です。

ビッグ・データとクラウド・コンピューティングは、多くの組織がコスト削減のために採用したいと思っている比較的新しい技術です。その一方で、これらの組織はこの新しい技術をフルに採り入れることはためらい、ベンダーがサポートするビッグ・データ・ソフトウェアのディストリビューションを使用することで、安心してこの技術を自分達のために有効に活用する方法を学習します。また、企業がこの技術を使用して、プライベート・クラウドのストレージ・ノードで扱うのが最善となり得るような大規模なデータ・セットの分析をする場合、その企業はこの技術に対する投資が非常に有効に活用されていることがわかるかもしれません。このストラテジーを最も有効に企業に採り入れるには、まず始めに組織のデータ・ウェアハウス環境を分析するために CDH のインストール、構成、管理を行ってから Swift に格納されたデータをその環境に追加します。

Swift、Nova、そして Apache Hadoop MapReduce

組織が自分達のビッグ・データ環境に高いレベルの柔軟性、スケーラビリティー、自律性を求める場合、Apache と OpenStack で提供されるオープンソース技術のネイティブ機能を活用することができます。そのためには、企業は Apache と OpenStack 両方の技術スタックを最大限活用する必要があり、さらにそれらの技術スタックを最大限活用するには、この環境を上記のソリューションの例で説明したのとは異なる考え方で構築する必要があります。

十分にスケーラブルかつ柔軟なビッグ・データ環境を実現するには、ストレージ・ノードと計算ノードの両方を提供するプライベート・クラウド環境上で、そのビッグ・データ環境が実行されなければなりません。そのためには、組織は最初にプライベート・クラウドを構築し、その後でビッグ・データへの対応を追加する必要があります。つまりこの時点で、Swift、Nova、RabbitMQ が必ず必要であり、この環境を管理および保守するためのコントローラー・ノードも必要です。一方で問題は、異なるシステム (例えば、ビッグ・データを扱わない仮想マシンやゲスト・インスタンス) や、異なるビジネス・ユニット、そして異なる部門のためにこの環境を複数セクションに分割する必要があるかどうかです。企業が全組織にわたってプライベート・クラウドを活用することを予定している場合、ネットワーク構築の観点から異なる環境を分割するために Quantum を追加する必要があります (図 5)。

図 5. OpenStack アーキテクチャー
OpenStack アーキテクチャーを示す図

プライベート・クラウド環境がセットアップされ、テストが終わると、その環境に Apache Hadoop コンポーネントを組み込むことができます。この点に関して言えば、Nova インスタンスを使用して NoSQL データ・ストアや SQL データ・ストアを格納する (2 つは共存可能です) ことや、Pig インスタンスと MapReduce インスタンスを格納することもできます。Hadoop を Nova とは別のマシンに配置して処理を行うこともできます。近い将来、Nova インスタンスでも Hadoop を実行できるようになり、すべての Nova インスタンスでプライベート・クラウドが自己完結することが期待されます。

GFS、Nova、Pig、そして MapReduce

アーキテクチャーの観点で見ると、OpenStack の Swift を使用してスケーラブルなストレージを実現する他にも選択肢があります。例えば、GFS (Google File System) を Nova や Apache Hadoop のコンポーネント (特に Pig と MapReduce) と組み合わせて使用する方法があります。この例では、組織は計算処理に関してプライベート・クラウドの計算ノードの開発のみに集中できる一方、Google のパブリック・ストレージ・クラウドをデータ・ストアとして活用することができます。このハイブリッド・クラウドでは、組織はコア・コンピタンスとしての計算処理に集中できる一方、サードパーティーはストレージに集中することができます。このモデルでは他のプロバイダーのソリューション (Amazon Simple Storage Service など) を利用することができますが、組織はどの外部ストレージを利用する場合でも、その前に XFS (eXtensible File System) を使用したソリューションを社内で構築し、適切にテストを行った後で、そのソリューションをパブリック・クラウドに拡張する必要があります。また、データの機密性に応じて、企業はユーザーのデータを保護するためのメカニズム (難読化、非匿名化、暗号化、ハッシュ化など) を使用する必要があります。


ヒントと秘訣

クラウド・コンピューティングとビッグ・データを企業に導入する場合、それぞれの技術プラットフォームに関して人員のスキルを確立することが重要です。人員がこれらの技術を理解したら、試験環境を構築してこれらのプラットフォームの組み合わせが可能かどうかをテストします。多種多様なコンポーネントがあるため、実装を行う場合には、必ず上で説明した実績のある方法を選択するようにします。また、これらのパラダイムを組み合わせようとして問題が生じた場合には、いくつかの解決策を試してみた上で、別の方法に移行します。別の方法の例としては、アプライアンスやハイブリッド・クラウドがあります。


障害になるものと落とし穴

これらの技術は非常に新しいため、ほとんどの組織は多額の設備投資 (CapEx) を行う前に、これらの技術を既存のリソースを使用してテストしようとします。しかし、これらの技術を社内に導入するための予算と人員を適切に確保しない限り、パイロット運用やテストの結果に落胆させられるかもしれません。また、完全なプライベート・クラウドが展開されているのでなければ、組織はビッグ・データを最初に社内に導入し、その後でプライベート・クラウドを導入する必要があります。

最後に、組織はプライベート・クラウドとビッグ・データの計画に関して、戦略的なロードマップを作成することが不可欠です。導入に成功すると、さらなる分析「ジョブ」への要求が多数発生することになり、処理が追いつかなくなるかもしれません。このリスクを避けるには、これらの技術を社内に展開する際には反復的なプロジェクト管理手法を使用し、各事業部門や各部署への展開を段階的に行う必要があります。


まとめ

クラウド・コンピューティングとビッグ・データが利用できるようになった現在、組織はこれらの技術が自分達の会社にとってどのようなメリットがあるのか (例えば、設備投資の観点でコスト削減になる、あるいは処理が強化されるなど) を判断する必要があります。企業はこれらのシステムを個別にテストした後、反復的に展開することで社内に導入する必要があります。そうすることで、企業は将来の組織に備えるための確実な ROI を実現することができます。

参考文献

学ぶために

製品や技術を入手するために

  • 皆さんに最適な方法で IBM 製品を評価してください。製品の試用版をダウンロードする方法、オンラインで製品を試す方法、クラウド環境で製品を使う方法、あるいは SOA Sandbox で数時間を費やし、サービス指向アーキテクチャーの効率的な実装方法を学ぶ方法などがあります。

議論するために

  • developerWorks コミュニティーに参加してください。ここでは他の developerWorks ユーザーとのつながりを持てる他、開発者によるブログ、フォーラム、グループ、ウィキを調べることができます。

コメント

developerWorks: サイン・イン

必須フィールドは(*)で示されます。


IBM ID が必要ですか?
IBM IDをお忘れですか?


パスワードをお忘れですか?
パスワードの変更

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


お客様が developerWorks に初めてサインインすると、お客様のプロフィールが作成されます。会社名を非表示とする選択を行わない限り、プロフィール内の情報(名前、国/地域や会社名)は公開され、投稿するコンテンツと一緒に表示されますが、いつでもこれらの情報を更新できます。

送信されたすべての情報は安全です。

ディスプレイ・ネームを選択してください



developerWorks に初めてサインインするとプロフィールが作成されますので、その際にディスプレイ・ネームを選択する必要があります。ディスプレイ・ネームは、お客様が developerWorks に投稿するコンテンツと一緒に表示されます。

ディスプレイ・ネームは、3文字から31文字の範囲で指定し、かつ developerWorks コミュニティーでユニークである必要があります。また、プライバシー上の理由でお客様の電子メール・アドレスは使用しないでください。

必須フィールドは(*)で示されます。

3文字から31文字の範囲で指定し

「送信する」をクリックすることにより、お客様は developerWorks のご使用条件に同意したことになります。 ご使用条件を読む

 


送信されたすべての情報は安全です。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=60
Zone=Cloud computing
ArticleID=846088
ArticleTitle=OpenStack によるプライベート・クラウドを Hadoop MapReduce 環境に導入する
publish-date=11222012