IBM SmartCloud Enterprise に Hadoop ベースのデータ分析を導入する

クラウド・コンピューティングとビッグ・データ分析は相性が良く、クラウドは弾性、リソースへのオンデマンド・アクセス、そして公共料金のような課金制というメリットをもたらす一方で、ビッグ・データの処理や分析はクラウドのリソースを利用するためのフレームワークを提供します。クラウドと Hadoop を組み合わせれば、大量の構造化データおよび非構造化データを処理することも可能になります。この記事では、IBM SmartCloud Enterprise に (InfoSphere BigInsights Basic という形の) Hadoop を導入する方法を説明します。3 つのノードからなるクラスターを構成して、クラスターが機能していることを検証する方法を学んでください。

Raul F Chong, Big Data and DB2 Senior Program Manager and Technical Evangelist, IBM Software Group

Photo of author Raul ChongRaul F. Chong は、IBM Toronto Laborator に在籍する DB2、ビッグ・データ、およびクラウド・プラグラムのシニア・マネージャー兼テクニカル・エバンジェリストで、世界中に DB2 とビッグ・データ・コミュニティーを広げることを主な職務としています。彼は DB2 管理とアプリケーション開発の両方における DB2 Certified Solutions Expert です。1997年以来、IBM では数々の役職に就き、『Understanding DB2: Learning Visually with Examples, 2nd Edition』(ISBN-10: 0131580183) の筆頭著者でもあります。その他にも 5 冊の著書、そして 30 を超える記事があります。詳しい経歴については、彼の developerWorks プロフィールにアクセスしてください。



2011年 11月 11日

クラウド・コンピューティングとビッグ・データ分析は、現在非常に注目を集めている 2 つの技術分野です。それには以下の理由があります。

  • クラウド・コンピューティングには弾性、リソースへのオンデマンド・アクセス、そして公共料金のような課金制というメリットがあります。
  • Hadoop によってワークロードをコンピューターのクラスターに分散することで行う、ビッグ・データの処理や分析は、クラウドのリソースを利用するためのフレームワークとなります。

クラウドと Hadoop のおかげで、今では大量の構造化データや非構造化データを迅速に処理できるようになっています。Hadoop はクラウドで提供しているような仮想環境を対象に設計されたわけではありませんが、クラウドが提供する仮想環境は簡単にセットアップできる上にコスト効果にも優れています。物理ノードで Hadoop のジョブを実行した場合のパフォーマンスは、クラウドの仮想ノードで同じジョブを実行した場合よりも優れているかもしれませんが、それでもあらゆるユーザーがクラウドを利用して Hadoop のジョブを実行することができます。つまり、ユーザーはクラウドを利用してビッグ・データを操作できるということです。これは、今までは不可能なことでした。

現時点では、クラウドと Hadoop を構成して管理する方法を理解するにはスキルが不足しているとしても、この記事の実践手順に従えば、この 2 つの技術を素早く効果的に導入できるはずです。この記事では、以下の手順を紹介します。

  • IBM SmartCloud Enterprise で 3 つのインスタンスをプロビジョニングして、3 つのノードからなるクラスターを構成する手順
  • すべての Hadoop コンポーネントを停止および起動し、コマンドをテストして Web コンソールを確認するという方法で、クラスターが機能していることを検証する手順

この記事で説明する手順は、皆さんのニーズを満たす、さらに大きなクラスターを構成する場合にも適用することができます。

始める前に

この記事を十分に活用するための前提条件

前もってシステムをセットアップしなくても、この記事から多くのことを学べますが、以下のリソースにアクセスすると記事の内容を実際に体験することができます。

この記事では IBM InfoSphere BigInsights Basic (以降、BigInsights と略称) を使用します。BigInsights は、いくつかの機能が追加された IBM の Hadoop ディストリビューションです。Basic Edition は、無料で入手することができます。詳細については囲み記事を調べてください。

Hadoop について初めて学ぶ読者は、BigDataUniversity.com の Hadoop Fundamentals I というオンライン・コースに無料で参加することもできます。ビデオと実習で学べるこのコースには、この記事で説明する構成手順のデモ・ビデオ、そして IBM Cloud で Hadoop コマンドを実行する場合のデモ・ビデオも用意されています。この記事の内容は、このオンライン・コースの「Lesson 1: Hands-on lab: Creating your own Hadoop cluster, Option 3」で説明されています。さらに詳しく学べるコースをお望みであれば、有料の「InfoSphere BigInsights Essential」クラスを IBM では用意しています。これらのリソースへのリンクは、囲み記事を参照してください。

以上の実践演習を試す一方で、この記事の手順に従う場合には、この先を読み進めてください。

手順を開始する用意はできていますか?この手順に従うには、IBM Cloud アカウントが必要です。まだお持ちでない場合は、2011年 11月 11日まで有効な無料の試用版を利用することができます (囲み記事を参照)。


クラウドでのデータ分析の導入

IBM Cloud に 3 つのインスタンスをプロビジョニングして 3 つのノードからなるクラスターを構成し、クラスターを検証およびテストするための手順は、以下のステップで構成されます。

  1. IBM Cloud にログオンする
  2. BigInsights マスター・ノード・インスタンスをプロビジョニングする
  3. BigInsights データ・ノード・インスタンスをプロビジョニングする
  4. Hadoop クラスターが機能していることを検証する

ステップ 1: IBM Cloud にログオンする

  1. IBM Cloud ポータル・ページを開いてサインインします。
  2. ユーザー ID とパスワードを入力し、「Submit (送信)」をクリックします。
    図 1. IBM Cloud のサインイン・ページ
    IBM Cloud のサインイン・ページ
  3. ログオンすると、「Overview (概要)」タブが選択された状態で IBM Cloud ダッシュボードが開きます (図 2 を参照)。このタブには、これまでにプロビジョニング済みのインスタンスが表示されます。「Control panel (コントロール・パネル)」タブをクリックしてください。
    図 2. IBM Cloud ダッシュボード
    IBM Cloud ダッシュボード

ステップ 2: BigInsights マスター・ノード・インスタンスをプロビジョニングする

この記事を執筆している時点では、IBM Cloud には BigInsights のイメージとして以下の 2 つのタイプが用意されています。

  • IBM BigInsights Basic 1.1 Hadoop Master Node
  • IBM BigInsights Basic 1.1 Hadoop Data Node

これらのイメージは、RHEL (RedHat Enterprise Linux) 5.6 (64 ビット) で実行され、「従量課金制」オプションが適用されます。前述のとおり、BigInsights Basic Edition は無料ですが、RHEL および IBM Cloud インフラストラクチャーの使用に対しては 1 時間あたり 0.30 USドル (この記事を執筆している時点) の料金がかかります。

Hadoop が使用するマスター・スレーブ・アーキテクチャーでは、マスターに NameNode と JobTracker ノードが組み込まれ、スレーブに DataNode と TaskTracker ノードが組み込まれます。

Hadoop は、以下の 3 種類のモードのいずれかで動作するように構成することができます。

  • スタンドアロン・モード: すべてのコンポーネントを起動することはなく、1 つのノードだけで動作します。
  • 擬似分散モード: すべてのコンポーネントを起動して、1 つのノードだけで動作します。
  • 完全分散モード: すべてのコンポーネントを起動して、複数のノードで動作することが要求されます。

スタンドアロン・モードと擬似分散モードは開発またはテストで使用され、完全分散モードは本番シナリオで使用されるのが一般的です。

この記事では、Hadoop マスター・ノードの他に Hadoop データ・ノードをプロビジョニングするかどうかに応じて、擬似分散モードまたは完全分散モードのいずれかを使用することを前提とします。

  • Hadoop マスター・ノードだけをプロビジョニングし、そのノードだけで動作する場合は、擬似分散モードを使用します。
  • Hadoop マスター・ノードに加え、1 つ以上の Hadoop データ・ノードをプロビジョニングする場合は、完全分散モードを使用します。

IBM Cloud BigInsights イメージは構成済みの状態になっているので、Hadoop データ・ノードをプロビジョニングする際に Hadoop マスター・ノードの IP アドレスを指定するだけで、クラスターを簡単に構成することができます。ただし、最初に Hadoop マスター・ノード・インスタンスをプロビジョニングしておく必要があります。

スタンドアロン・モードで動作させたい場合には、BigInsights マスター・ノードをプロビジョニングして、core-site.xml、hdfs-site.xml、および mapred-site.xml の各ファイル内でパラメーターをコメントアウトすることによって、Hadoop にこの動作モードを設定することができます。

まずは、Hadoop マスター・ノード・インスタンスをプロビジョニングする作業に取り掛かりましょう。

  1. 「Control panel (コントロール・パネル)」タブで、「Add instance (インスタンスの追加)」をクリックします。
    図 3. BigInsights インスタンスの追加
    BigInsights インスタンスの追加
  2. インスタンスを実行するデータ・センターを選択します。
    図 4. データ・センターの選択
    データ・センターの選択ウィンドウ

    BigInsights イメージは、すべてのデータ・センターに用意されているはずです。この例では、カナダの Markham データ・センターを選択します。

  3. データ・センターを選択すると、そのデータ・センターで使用可能なイメージの一覧が表示されます。「IBM BigInsights Basic 1.1 - Hadoop Master Node」イメージを選択して、「Next (次へ)」をクリックします。
    図 5. 「BigInsights Basic 1.1 - Hadoop Master Node」の選択
    「BigInsights Basic 1.1 - Hadoop Master Node」イメージの選択
  4. BigInsights Hadoop Master Node イメージを構成します。
    図 6. BigInsights Hadoop Master Node イメージの構成
    BigInsights Hadoop Master Node イメージの構成

    この例では、インスタンスに「Hadoop master」という名前を付けます。

    MapReduce: Hadoop の威力の源

    MapReduce は、コンピューターのクラスターで大量のデータ・セットの分散コンピューティングを行えるようにするソフトウェア・フレームワークです。MapReduce は、関数型プログラミングで一般に使用されている map 関数と reduce 関数から派生しました (ただし、これらの関数の役割は、MapReduce と関数型プログラミングとで同じというわけではありません)。

    MapReduce では map ステップで、マスター・ノードが入力を取り、それを小さなセグメントに分割してワーカー・ノードに配布します。この動作は一連のワーカー・ノードに関して行われ、その構造は複数のブランチを持つツリー構造になることもあります。分割された問題がそれぞれのワーカー・ノードで処理されると、その結果はマスター・ノードに送られていきます。そして、reduce ステップでマスター・ノードがすべての結果を収集して組み立て、元の問題を解決します。

    ここでは試しにクラスターをセットアップしているだけで、本番用にセットアップしているわけではないことを考えると、「Server configuration (サーバー構成)」の選択肢としては、サイズ的に「Copper」で十分だと思います。本番用のセットアップでは、まず IBM Cloud の構成サイズ (Copper、Bronze、Silver、Gold、Platinum) のそれぞれを使用して、MapReduce ジョブのパフォーマンスを精査してください。あるいは、Hadoop ウィキ (「参考文献」を参照) で指定されているベンチマークを試してみることもできます。ベンチマークは、1 つのノード (Hadoop マスター・ノード) で試してください。クラスターをセットアップした後に、ベンチマークを再び繰り返すことができます。BigInsights IBM Cloud イメージの場合、ベンチマークで以下の特定のコマンドを実行する必要があります。

    cd /mnt/biginsights/opt/ibm/biginsights/IHC
    hadoop jar hadoop-*-examples.jar randomwriter rand 
    hadoop jar hadoop-*-examples.jar sort rand rand-sort

    私は IBM Cloud を利用したことがあるので、そのときに生成したキーがあります。したがって、「Key (キー)」には、これらのキーのうちの 1 つを使用します。この例では、「IBM Cloud Raul」を使っています。

  5. 他のすべてのパラメーターはデフォルトのまま変更せずに、「Next (次へ)」をクリックします。
  6. イメージに指定した構成の要約が表示されます。問題がなければ、「Next (次へ)」をクリックします。
    図 7. Hadoop Master Node イメージの構成の要約
    Hadoop Master Node イメージの構成の要約
  7. サービス契約が提示されます。契約の条件に同意しない限り、この先には進めません。「I agree (同意)」(本当に同意する場合!) をクリックしてから、「Submit (送信)」をクリックします。
    図 8. 続行する場合のサービス契約への同意
    続行する場合のサービス契約への同意
  8. イメージのプロビジョニング・リクエストを送信した後、送信成功のメッセージ・パネルが表示されます。
    図 9. インスタンスのプロビジョニング・リクエスト送信後に表示される送信成功メッセージ
    インスタンスのプロビジョニング・リクエスト送信後に表示される送信成功メッセージ
  9. インスタンスをリクエストしてから数分もすれば、プロビジョニングが完了して、インスタンスがアクティブになります。つまり、インスタンスは稼動していて、使用できる状態にあります。このイメージの場合、イメージがアクティブ状態になると同時に、すべての Hadoop コンポーネントが自動的に起動されます。インスタンスの IP アドレスも表示されているはずです (図 10 を参照)。
    図 10. 正常にプロビジョニングされた Hadoop マスター・ノード・インスタンス
    正常にプロビジョニングされた Hadoop マスター・ノード・インスタンス

この例で Hadoop マスター・ノード・インスタンスに割り当てられた IP アドレスは 170.224.193.137 です。この数字を書きとめておいてください。Hadoop データ・ノードをプロビジョニングするときに必要になります。

ステップ 3: BigInsights データ・ノード・インスタンスをプロビジョニングする

Hadoop マスター・ノード・インスタンスをプロビジョニングした後は、クラスターで使用するデータ・ノードをいくらでもプロビジョニングすることができます。この例では、2 つのデータ・ノードをプロビジョニングして 3 つのノードからなる Hadoop クラスターを作成します。

Hadoop データ・ノード・インスタンスをプロビジョニングする手順は、Hadoop マスター・ノード・インスタンスのプロビジョニング手順と非常によく似ているので、ここではマスター・ノードの場合とは異なるステップ、あるいは注意が必要なステップのみを説明します。

  1. Hadoop を使用する場合の最悪のシナリオは、異なる複数のデータ・センター内にあるデータにアクセスすることです。したがって、この例ではマスター・ノードに選択したデータ・センター (カナダの Markham) のみを使用します。ただし、イメージには「IBM BigInsights Basic 1.1 - Hadoop Data Node」を選択します (図 11 を参照)。
    図 11. カナダの Markham データ・センターで使用可能な Hadoop Data Node イメージの選択
    カナダの Markham データ・センターで使用可能な Hadoop Data Node イメージの選択
  2. インスタンスの名前として「Hadoop slave 1」と入力します。その他すべての設定は、デフォルトのままにするか、Hadoop マスター・ノードで選択したのと同じ値を選択します。
    図 12. BigInsights Hadoop Data Node イメージの構成
    BigInsights Hadoop Data Node イメージの構成
  3. BigInsights Hadoop データ・ノードを構成した後、パネルが表示されます。ここに、Hadoop マスター・ノードの IP アドレスを入力する必要があります。この IP アドレスを入力することで、Hadoop データ・ノードが自動的にクラスターに追加されます。IP アドレスを入力して、「Next (次へ)」をクリックします。この例での Hadoop マスター・ノードの IP アドレスは 170.224.193.137 です。
    図 13. BigInsights Hadoop マスター・ノードの IP アドレスの入力
    BigInsights Hadoop マスター・ノードの IP アドレスの入力
  4. 次のステップに進み、デフォルトを受け入れて Hadoop データ・ノード・インスタンスを追加します。
  5. もう 1 つの Hadoop データ・ノードについて、上記とまったく同じ手順を繰り返します。ただし、名前には「Hadoop slave 2」と入力してください。

図 14 に、Hadoop マスター・ノード・インスタンスと 2 つの Hadoop データ・ノード (スレーブ) インスタンスを示します。

図 14. 使用できる状態になった 3 つのノードからなる Hadoop クラスター
使用できる状態になった 3 つのノードからなる Hadoop クラスター

これで、すべてのインスタンスのプロビジョニングが完了し、インスタンスがアクティブになったので、Hadoop クラスターを使用することができます。おめでとうございます!

ステップ 4: Hadoop クラスターが正しく動作していることを検証する

  1. IBM Cloud の「Control panel (コントロール・パネル)」タブで、Hadoop マスター・インスタンスをクリックします。スクロールダウンすると、図 15 および図 16 に示すような情報が表示されているはずです。
    図 15. Hadoop マスター・ノードの構成の要約
    Hadoop マスター・ノードの構成の要約

    図 15 には、Hadoop マスター・ノードに構成した内容の要約が示されています。

    図 16. Hadoop マスター・ノードの「開始手順」セクション
    Hadoop マスター・ノードの「開始手順」セクション

    図 16 には、クラスターを監視するのに役立つリンクのリストが示されています。このうち、先頭に記載されている「BigInsights Web Console (BigInsights Web コンソール)」リンクに注目してください。このリンクをクリックすると、ブラウザーに Web コンソールが開きます (図 17 を参照)。

    図 17. BigInsights Web コンソール
    BigInsights Web コンソール
  2. BigInsights Web コンソールで Hadoop クラスターが実行中であることを確認するには、「Components (コンポーネント)」セクションで、すべてのコンポーネントが起動済みであることを確認します。「Start Stop Summary (起動/停止の要約)」セクションで、3 つのノードが起動していることを確認してください。
  3. 今度は、いくつかのコマンドを試してみます。putty を使用して、マスター・ノードに ssh で接続します。ユーザーとしては、IBM Cloud の他のインスタンスでの場合と同じく idcuser を指定します。
  4. stop-all.sh コマンドを使用して、Hadoop のすべてのコンポーネントを停止します。
    図 18. すべてのコンポーネントを停止する stop-all.sh コマンドの実行
    すべてのコンポーネントを停止する stop-all.sh コマンドの実行
  5. 次は、start-all.sh コマンドを使用して、Hadoop のすべてのコンポーネントを起動します。
    図 19. すべてのコンポーネントを起動する start-all.sh コマンドの実行
    すべてのコンポーネントを起動する start-all.sh コマンドの実行
  6. 以下のコマンドを実行して、すべてが正常に動作していることを確認します。
    • hadoop fs -ls /
      HDFS (Hadoop Distributed File System) のルートに置かれたすべてのファイルとディレクトリーを一覧表示して、HDFS が正常に動作しているかどうかをテストします。
    • pig
      Grunt> quit;

      pig を起動して、終了します。
    • hive
      Hive> quit

      hive を起動して、終了します。
    • jaqlshell
      Jaql> quit;

      jaql を起動して、終了します。

    図 20 に、上記のコマンドと、それぞれを実行したときの出力を示します。

    図 20. Hadoop コマンドおよびコンポーネントのテスト
    Hadoop コマンドおよびコンポーネントのテスト

まとめ

この記事では、ものの数分で IBM Cloud に 3 つのノードからなる Hadoop クラスターを構成する手順をステップ・バイ・ステップで説明しました。この手順は簡単であり、大きなサイズのクラスターにも適用することができます。Hadoop データ・ノードをプロビジョニングする際に Hadoop マスター・ノードの IP アドレスを指定できるように、必ず最初に Hadoop マスター・ノードをプロビジョニングして、その IP アドレスを書きとめるようにしてください。

参考文献

学ぶために

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

  • IBM InfoSphere BigInsights Basic ソフトウェアをダウンロードしてください。
  • 無料の IBM SmartCloud Enterprise 試用版にサインアップしてください。この試用版にサインアップできるのは 2011年 10月 28日までです。試用期間は 2011年 11月で終了します。このオファーの有効期限が過ぎていたら、IBM Cloud にアクセスして他のオファーを調べてください。
  • IBM SmartCloud Enterprise に用意された製品イメージを調べてください。

議論するために

コメント

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, Information Management
ArticleID=772539
ArticleTitle=IBM SmartCloud Enterprise に Hadoop ベースのデータ分析を導入する
publish-date=11112011