WEB+DB Press Vol.67に記事を書きました

WEB+DB Press Vol.67の特集3「実戦投入Hadoop」内の第3章「Hadoopでログ解析」を担当しました。

WEB+DB PRESS Vol.67

WEB+DB PRESS Vol.67

  • 作者: 川口耕介,山本和彦,おにたま,神林飛志,杵渕朋彦,中島聡,清水亮,齋藤正浩,高橋征義,ミック,みやけん,青江崇,須賀秀和,上新卓也,牧大輔,角田直行,はまちや2,大和田純,白土慧,太田昌吾,個々一番,Shawn M Moore,じゅんいち☆かとう,小野修司,WEB+DB PRESS編集部
  • 出版社/メーカー: 技術評論社
  • 発売日: 2012/02/24
  • メディア: 大型本
  • 購入: 15人 クリック: 253回
  • この商品を含むブログ (26件) を見る
雑誌に記事を書くのはこれが初めてです。興味がありましたら手にとってもらえたらと。
このエントリでは執筆のこぼれ話的なことを書きたいと思います。

取り上げた解析処理について

私が担当した第3章はログ解析を題材に、初めてHadoopに触れる人がMapReduceプログラミングの基本について学ぶことを主眼に置いています。
題材にしたログはPigのチュートリアルに付属しているexciteの検索ログです。これを選んだのには理由があります。
実はAsakusa Frameworkのサンプルにバスケット解析のサンプルがあります。これも同じくPigのチュートリアルのログを使っており、当初はこれと同じ処理を生のMapReduceで作成して、最後にAsakusaのサンプルのURLを紹介して、「見比べてみてください」と結ぶつもりでした。
が、当然のことながらそんな内容では大幅に字数オーバーをしてしまい、作成するプログラムの内容も初学者にはちょっと難しい内容になってしまい (何せセカンダリソートまで出てきましたから) 、これはボツとなりました。

API?旧API

今回掲載したコードは全て新APIで書いています。実はこれも最初は旧APIで書いてました。
Hadoopは0.20にて新しいMapReduceAPIが登場しています。ところ0.20の段階では新APIが旧APIの範囲を全てカバーしておらず、中途半端な状態です。しかもその後0.21、0.22、そしてMapReduce2.0を実装した0.23がリリースされた今でも、0.20が依然Hadoopの安定リリース版として位置づけられている状況です。先日リリースした1.0も0.20系をベースにしています。
そのため、実際の現場では未だに旧APIが主流になっています。象本でも新APIの紹介はしていますが、基本的に全て旧APIで説明しています (第2版でも同じ) 。

...なのですが、そのような事情を説明した上で「IDEで横線引かれても気にしないでね」みたいな感じで書いてしまうとやはり大幅に分量が増えてしまいました。
また、執筆途中に0.22がリリースされ、それを2.0のベースにするかも、という話を耳にし、「さすがにそろそろHadoopプロジェクトとしても0.20離れを促す方向に向かうだろう」という超楽観的自己都合的予測を立て、新APIで説明することにしちゃいましたw

Hadoop MapReduceを説明するのは大変

そして初めての人に対してHadoop MapReduceを1から説明するというのは改めて大変だと思いました。
MapReduceアルゴリズム、全体の処理の流れ、実装する必要のあるクラス、Hadoop独自のI/O、ジョブの実行方法などなど、Hello Worldレベルのことをやるにも知ってもらうことが沢山あります。
それをこの短いページにコンパクトにまとめるのが一番大変でした。でも結局特集3の中では自分の担当分が一番分量オーバーになってしまいましたが...。


人に説明をする文章を書くというのは難しいものですね。でも人に説明することで自分自身の理解も深まるとよく言われるように、この執筆を通じてHadoop MapReduceについて自分の中であやふやだったところを見直すこともできたと思っています。とても良い経験でした。