上位入賞者たちはどうやってチューニングしたのか!?Tuning Maniax総評
日本マイクロソフト佐々木邦暢氏による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さんから頂いたスクリーンショットです。
ちなみに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の日本リージョンでも使えるようになる予定です。
この新たな舞台で、さらに熱い戦いが繰り広げられることを願ってやみません。
連載バックナンバー
Think ITメルマガ会員登録受付中
全文検索エンジンによるおすすめ記事
- Tuning Maniax 2014参加者必見!スタートアップセミナーの資料を一挙掲載
- Tuning Maniax 2014を締めくくるWordPressコース表彰式を開催
- 優勝者に嬉しいサプライズが!?Hadoopコース表彰式レポート
- Tuning Maniax 2014開幕!大会にエントリーしよう(1)
- Hadoopコースを攻略しよう(環境構築編)
- WordPressコース 1st Stageを攻略しよう(Webサイト編)
- WordPress コース 2nd Stage を攻略しよう(Windows 仮想マシン編)
- Hadoopコースを攻略しよう(HDInsightによる大量ログ解析編)
- WordPress コース 2nd Stage を攻略しよう(Linux 仮想マシン編)
- Hadoopシステム構築のノウハウ