Tuning Maniax 2014 蒼き調律者たち 10

日本マイクロソフト佐々木邦暢氏によるHadoopコース総評

日本マイクロソフト佐々木邦暢氏によるHadoopコース総評

「マイクロソフトのクラウドで、Apache Hadoopを使った解析処理を行う」

この、「Azureの一般的な使われ方」とは少しだけ違う舞台で本当に競技が成り立つか!?我々自身が一抹の不安を抱えながらの開催となった「Tuning Maniax - Hadoop編」ですが、結果的には多くの方にご参加いただき、Maniaxコミュニティのエネルギーを改めて実感することができました。本当にありがとうございました。

Hiveが大多数

さて、今回「どのような処理方式を選択されるかは参加者の自由!」という非常にユルいルールを設定しました。いろいろなやり方が入り乱れての戦いになると面白いな、と思っていたのですが、実際にはHiveを選択された方が多く、Javaで直接MapReduceプログラムを書かれたのは少数派、という結果となりました。やはり、一般的になじみ深いSQLに近い形でクエリを記述できるHiveは取り組みやすかったようです。

入賞者のお三方も全てHive派だったのですが、とはいえ三者三様の異なるクエリでそれぞれが正解を出力されていました。それぞれをここで引用するスペースはありませんが、1位nakayoshixさんのクエリが5つのMapReduceジョブに変換されていたのに対し、3位なのまるさんのクエリはジョブ2つで、よりすっきりしていたようです。クエリの洗練度合いでは、なのまるさんが一歩リードといったところでしょうか。

Nakayoshixさんの勝因

では優勝されたnakayoshixさんの勝因はというと、
「Azure無償評価枠内に収まるように計算しつつ、最大限にノード数を確保」
という点にあったようです。その数なんと256ノード!まずは小さなクラスタでクエリの確認をしつつ、Azureサポート部門に依頼してコア数上限を1050コアまで拡大し、最後に一発勝負のBig Runを行ったそうです。
漢らしいですね。

下はNakayoshixさんから頂いたスクリーンショットです。

優勝したnakayoshixさんのHadoopコース用構成

ちなみにJava派は…

今回少数派となってしまった「JavaでガチMapReduce」勢ですが、特別賞を受賞された福重さんはその数少ないお一人でした。福重さんは、非常に効率的なプログラムを作成されたものの、なんと「間違えてテスト用の入力データを使ってしまった」ため惜しくも入賞を逃しました。次回は是非正しいデータを使ってHive組に挑んで欲しいと思います。

なお、Hive組にやられっぱなしではあんまりなので、私(@ksasakims)もJavaでプログラムを作成してみました。一度のジョブで3問全部の答えをカウントできるように、Partitionerを自作してReducerを3つ動かすなどちょっとした工夫をした結果、32ノード利用時に処理時間35分(2100秒)と、なかなかの速度で処理できたようです。

※とはいえ、Hadoopを実際の業務で活用されている参加者の方からは「Javaで直接書いた方が速いことはわかっているが、ジョブの実行時間だけでなくプログラム開発の時間を含めて考えると、HQLで簡単に処理できるHiveは生産性が非常に高い」というご意見も頂きました。おっしゃるとおりだと思います。

次回は!?

いつ頃になるのか(そもそもあるのか)、今のところ未定ではありますが、HadoopとHDInsightはどんどん進化を続けています。今回まだ利用できなかった、HDP 2.1ベースのHDInsight-3.1では、Apache Tezが統合されてさらに高速化されていますし、そのHDInsightがAzureの日本リージョンでも使えるようになる予定です。

この新たな舞台で、さらに熱い戦いが繰り広げられることを願ってやみません。

この記事のキーワード

この記事をシェアしてください

人気記事トップ10

人気記事ランキングをもっと見る