HDInsightを知る~ビッグデータ×クラウド

第1回 HDInsightとは何か?

この記事を読むのに必要な時間:およそ 3 分

Apache Hadoop

Apache Hadoopとは,Doug Cutting(@cutting)氏によって生み出された,分散データ処理基盤の定番と言えるオープンソースソフトウェアであり,現在はApache Software Foundationにおけるトップレベルプロジェクトの1つです。

Yahoo!やFacebook, 楽天など,大量のデータ処理を必要とするWebサービス企業での大規模事例は,Hadoopユーザならずとも一度は耳にしたことがあるのではないでしょうか。

そんなHadoopですが,筆者の生息する「Microsoft文化圏」ではあまり身近な存在でなかったことも確かです。Hadoopの大部分はJavaで書かれているため一見どこでも動きそうなのですが,Javaプログラム内からchmodやkillなどのUNIXコマンドを呼び出していたり,コマンド群がbashのスクリプトだったりと,Windows環境で動かすにはいくつかハードルがあったからです。

HADOOP-8079,そしてHDInsight

もう2年ほど前になりますが,Hadoop Commonプロジェクトに次のような提案が出されました。

"Proposal for enhancements to Hadoop for Windows Server and Windows Azure development and runtime environments"

https://issues.apache.org/jira/browse/HADOOP-8079

当時Microsoftでは,⁠Isotope⁠というコードネームの元,Hadoopを「ネイティブに」Windows上で動かすための作業を,Hortonworks社と協同で進めていました。HADOOP-8079はその最初の対外的な成果物と言えるものであり,Windows上でHadoopを動かすためのパッチや,hadoopコマンドなどの各種bashスクリプトをcmd.exe用に移植したものが含まれていたのです。

なお,⁠Windows上でネイティブに動かす」と言っても,Windows環境に特化した「亜種」を作り出したわけではありません。必要最低限の地味な修正で,オリジナルのHadoopがそのままWindowsで動くようにしたのです。

以下は変更部分の一例です。

--- core/org/apache/hadoop/util/Shell.java    (revision 1293380)
+++ core/org/apache/hadoop/util/Shell.java    (working copy)
@@ -45,17 +45,19 @@
   public final static String USER_NAME_COMMAND = "whoami";
   /** a Unix command to get the current user's groups list */
   public static String[] getGroupsCommand() {
-    return new String[]{"bash", "-c", "groups"};
+    return (WINDOWS)? new String[]{"cmd", "/c", "groups"}:
+        new String[]{"bash", "-c", "groups"};
   }

その後,この活動はHortonworks社のHadoopディストリビューションである⁠Hortonworks Data Platform⁠のWindows版,⁠HDP for Windows⁠として結実しました。

これを,MicrosoftのパブリッククラウドであるWindows Azureで利用できるようにしたものが,今回の主題「Windows Azure HDInsightサービス」です。

Hadoopクラスタも「所有」から「利用」

数十,あるいは数百ノードにおよぶHadoopクラスタをすべて自前で構築・運用するのは,なかなか手間のかかるものです。また,たとえば夜間バッチ処理のように「常に利用するわけではない」クラスタのために多数のハードウェアを所有するのは必ずしも効率的ではありません。

その点,HDInsightサービスのような「クラウドHadoop」であれば,使いたいときに動的にクラスターを生成してジョブを投入し,処理が終わればクラスタをきれいさっぱり削除してしまえば良いわけです。

Windows Azure管理ポータルで,HDInsightクラスターの「簡易作成」を選ぶと,図1のような簡単な操作で,32ノードまでのクラスタを作成可能です。

図1 HDInsightクラスタの作成

図1 HDInsightクラスタの作成

Azure上にできあがったHDInsightクラスターは,図2のような構成になっています。

図2 HDInsightサービスのシステム構成

図2 HDInsightサービスのシステム構成

ネームノード,データノードはおなじみのものです。これらはWindows Azureクラウドサービスの「Workerロール」のインスタンスとして実行されます(ゲストOSは今のところWindows Server 2008 R2です)⁠

では,⁠BLOBストレージ」とは何でしょうか?

著者プロフィール

佐々木邦暢(ささきくにのぶ)

日本マイクロソフト株式会社 ビジネスプラットフォーム統括本部 インキュベーション・セールス部

Twitter:@ksasakims

バックナンバー

HDInsightを知る~ビッグデータ×クラウド

コメント

コメントの記入