読者です 読者をやめる 読者になる 読者になる

@fumito_itoのHadoopブログ

Windows向けのHadoopディストリビューションについて書いていきます。現在のところはApache Hadoop on Azure CTPがメイン。リリースされ次第、Apache Hadoop for Windows Serverについても書く予定。

Hadoop on WindowsがHDInsight Serverとなってプレビュー公開されました!

こんな感じ。
f:id:weathercook:20121026005057p:plain

Web PI4.0からインストールすることができます。
動作環境はWindows 7 またはWindows Server 2008 R2。
詳細なリリース情報はこちらから見ることができます。

以下のHadoop関連ソフトウェアが利用できるほか

  • HDFS/MapReduce
  • Pig
  • Hive
  • Sqoop

一部で話題の.NET SDK for Hadoopも梱包されています。

また、以前からAzure上で動くHadoopサービスとして提供されていたHadoop On AzureもWindows Azure HDInsightと名前が変わっています。こちらは招待制のサービスとなっており、Invitationを受け取ると3ノード、ディスク容量1.5TBのクラスターを利用することができます。

Go AzureでHadoop on Azureについてお話ししました

6/30にGo AzureというイベントでHadoop on Azureについてお話してきました。

今回がスピーカーデビューだったので緊張して死ぬのでは…?と思っていましたが、生きてました。
よかったよかった。(謎)

HadoopとAzureというキャッチーな題材であったためか、某上司の(笑)強力な裏番組があったにも関わらずたくさんの方に聞いていただけました。ありがとうございました。
いろいろと伝わりにくい点があったかと思います。ブログやtwitterなどでコメント頂ければ幸いです。

今後もこちらのブログでHadoop on AzureやらHadoop for Windows Serverやらについてキャッチアップしていきますので、よろしくお願いします!

以下、当日のスライドやらUstやらです。

Go Azureのイベントページ
http://msdn.microsoft.com/ja-jp/windowsazure/jj129528.aspx

Togetter
http://togetter.com/li/329793




Video streaming by Ustream

Hadoop on AzureとBlob Storageを接続した時のsplit sizeの扱い

Hadoop on AzureではHadoopで処理するデータをAzure BlobやAmazon S3上から取得することができます。
オンデマンドで利用するというサービスの性質上、これは非常に有用な機能なのですが、HDFS上に置いたファイルを取得する場合と少し動きが違ってくるので注意が必要です。

何が違うのか?

具体的に言うとファイルをノードに分配する際の分割ルールが違います。

  • HDFS上にファイルが置かれている場合、HDFSのブロックサイズ(デフォルト 64MB)で分割する
  • Azure Blob上にファイルが置かれている場合、ファイルの数で分割する

たとえば1GBのファイルをHDFS上とAzure Blob上においてそれぞれ処理した場合を考えてみましょう。

  • HDFS上に置かれたファイルはブロックサイズごとに分割されてMapタスクに渡されるので、15個くらいのノードがMapジョブを実行します。
  • 一方でAzure Blob上に置かれたファイルは分割されませんのでMapタスクが一つだけしか起動されません。

これでは分散処理をしている意味が全然無いですね。Azure Blob上にあるファイルを処理する場合は、適切なサイズにファイルを分割しておくように配慮する必要があります。

【超小ネタ】Hadoop On Azureの500がカワイイ

Twitterの例に見るように、エラー画面の可愛さは重要。

f:id:weathercook:20120625100828p:plain

Go Azureで喋ります。

Windows Azure ユーザー コミュニティ イベント “Go Azure” | MSDN

諸般の巡り会わせによりHadoop on Azureについて45分話すことになりました。
外で喋ること自体が初めてなので、かなりキンチョーしていますがベストを尽くしたいと思います。

Hadoop on Azureってなに?という方はこちらを見るのが手っ取り早いです。

Go AzureはAzure界隈の情報を一挙に得ることができるコミュニティーベースのイベント。6/30に開催です。

Hadoop on AzureのInteractive ConsoleからHiveを実行する

今回はInteractive ConsoleからHiveを実行してみます。

Hiveは今までと同じようにJavaScriptによる実行も可能ですが、Hive専用のコンソールが用意されているのでそちらを使ってみます。

 

Interactive Console上部のボタンをクリックして実行モードをJavaScriptからHiveに切り替えます。

f:id:weathercook:20120616120521p:plain

 

画面下部の入力エリアからHiveQLを打ち込んでEvaluateボタンで実行してみましょう。たとえばテーブル一覧を表示するには"show table;"と打ち込みます。

f:id:weathercook:20120616120544p:plain

hivesampletableというテーブルが最初から用意されていることがわかります。ではこのテーブルのカラム一覧を表示するためにHiveQLを実行してましょう"describe hivesampletable;"を実行します。

f:id:weathercook:20120616120602p:plain

カラム一覧が表示されましたね。どうやらアクセスログっぽいものが格納されているようです。では、集計関数などを用いた簡単な分析を行ってみます。マーケットごとに、どんなプラットフォームの端末からアクセスがあったのか集計してみましょう。

f:id:weathercook:20120616120611p:plain

iPhoneばっか…w

 

ついでなのでJavaScriptでも実行してみましょう。MapReduceを実行したときと同じようにQueryObjectを定義してrun()で実行します。QueryObjectの指定の仕方はhelp("hive")で確認することができます。

f:id:weathercook:20120616120621p:plain

Hive用のコンソールとJavaScriptの両方からHiveを実行することができました。今回は利用しませんでしたが、Hive用のコンソールでは画面上部のセレクトボックスからテーブル一覧やカラム一覧を取得できるため、HiveQLを組み立てるときに役立ってくれるでしょう。やりましたね。

Interactive Consoleでpigとかhiveとか実行するときの小咄

今日は小咄。

 

Interactive Consoleでpigやhiveを実行するときは検索条件などをChainして設定していきます。ということは.where()は.mapReduce()はjQueryライクに同じオブジェクトを返していると考えられます。

Chainの例

pig.from("example/data/davinci.txt").mapReduce("wordcount.js").where(...)...

 

では具体的にどんなオブジェクトを返しているのか?それはhelp("pig")コマンドで確認することが出来ます。

f:id:weathercook:20120608103917p:plain

run()(とto())はpromiseオブジェクトを、それ以外はQueryObjectを返却するようです。

runやtoでpromiseオブジェクトを返すということは、前に実行されたpigの完了をトリガーにして次のpigを実行するなどのオペレーションも可能ということです。夢が広がりますね。