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

NTTデータのHadoop報告書がすごかった

雑記

業界トップ のエンタープライズ Hadoop 企業 Cloudera に入社しました http://www.cloudera.co.jp/

今年の6月に、「平成21年度 産学連携ソフトウェア工学実践事業報告書」というドキュメント群が経産省から公表されました

そのうちの一つに、NTTデータに委託されたHadoopに関する実証実験の報告書がありましたので、今更ながら読んでみることにしました。
Hadoop界隈の人はもうみんなとっくに読んでるのかもしれませんけど。


http://www.meti.go.jp/policy/mono_info_service/joho/downloadfiles/2010software_research/clou_dist_software.pdf


「高信頼クラウド実現用ソフトウェア開発(分散制御処理技術等に係るデータセンター高信頼化に向けた実証事業)」というタイトルもいかついですが、その分量たるや、なんと375ページ。

その量でさえ、内容に比べれば大したことではありません。

とにかく内容が濃いです。

Hadoopの入門書や入門ページには書かれてないような構築・運用・チューニングの話が盛りだくさんなのです。


まず、2章では渋滞解析アプリケーションの開発事例が紹介されています。

車や携帯からのGPS情報を集積して渋滞情報を解析するシステムの事例です。クラウドマガジンVol.2の特集4に全く同じ話が書かれていたので読んだ方も多いかと思います*1

題材としても十分面白いのですが、この章ではデータの収集方法・解析方法の説明から、MapReduce処理の設計を丁寧に解説し、さらに Mapper, Reducer だけでなく Comparator などの必要なソースコードの全てを載せて解説しています。
ここまで詳しく書かかれた事例はそうそうないです。

3章以降は読まなくても、2章だけでは読んでおくといいと思います。


とはいえ、すごいのは3章からです。まだ私もざっとしか読んでいませんが、すごいと思った箇所を列挙していきます。

  • 異なるスペックのサーバ(なんと5種類)でクラスタを組む際の構築・運用・チューニング(3章、9章)
  • 可用性検証(4章、10章)
    • 障害発生時の影響範囲が部位ごとに一覧になっている。これだけでもすごいが、L3スイッチ(ラック間スイッチ)障害のレベルまできちんと検証してる
  • 高可用性構成(4章、10章)
    • ソフトウェアFTのkemariを使って、ネームノードをフェイルオーバさせたときのセーフモード状態を回避し、1秒で切り替えている
  • シナリオ(6章)
    • サービス開始(サーバ3台)からサービスを徐々に拡大し、サーバ93台構成に拡張するまでどういう問題がありどう対処していくかをテストシナリオとして解説している
      • Hadoop関係なくこんな資料みたことない
  • プログラミング(8章)
    • 開発にあたり、何を設計し何を実装すべきかが細かく書かれている
    • Pig/Hiveの概要だけでなく、どういう場面でPig/Hiveを使うべきかも書かれている
    • 外部データ(文書中では静的データ)の参照先を選択する際の比較表がある
      • ローカルディスク、memcached、RDBMS、HBase/HyperTable、MapReduceアプリケーション
  • チューニング(3章、9章)
    • パラメータを決定する手順(3章)
      • 少量のデータを用いる場合と大規模データを用いる場合の両方を使ってパラメータを決定する(9章)
    • mapやreduceなどのプロセスが持つメモリの内訳が図式化されている(9章)
    • IOネック、CPUネックそれぞれの性能測定とパラメータチューニングの指針(9章)
    • MapReduce処理時間見積もり式(3章、9章)
  • 運用(11章)
    • 想定している運用レベルがやたら具体的
      • 「24h365d稼働ただし不定期メンテ時間あり、保守は日中のみ対応、ベンダ保守は翌日以降対応」というケースを想定して書かれているらしい
    • puppetを使った構成管理
  • 自動構築(12章)
    • kickstart+puppetやプロプライエタリ製品を含む3種類の実現方法で機能比較している
    • サーバの命名規則についての指針
    • なんと運用規約についての指針まである
    • もちろんこの章もサーバスペックが均一でないことを考慮している
  • 監視(13章)
    • サーバのどの部分を可視化すべきかについて細かく書いてある
    • Gangliaのグラフが見にくいからと、それをカスタマイズする方法まで書かれている。ちなみに今まで言及はしなかったがGangliaの導入手順ももちろん書かれている

これでも全然書き足りないぐらいですね。とにかく分量がものすごいです。

ものすごいお金がかかってるなと思ったと同時に、なんとなく血と汗と涙の匂いがただよってくる感じがしました。実際の案件かなりこなしてないと書けない気がします。運用規約の話なんて頭だけじゃ絶対思いつかないですよ。

この報告書は、Hadoop本の次に読む2冊目のドキュメントとして非常にいいんじゃないかなと思いました。入門書としては全く不向きだと思いますけど。いきなりこれ読まされたら「こんなん作れるか!」って投げ出したり、「こんな大規模構成関係ないし」ってそっぽ向かれそうです。


まだざっとしか読んでませんので、これからじっくり読むことにします。

*1:余談ですが、特集4は全てNTTデータの方が執筆しています