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

CodeIQ Blog

自分の実力を知りたいITエンジニア向けの、実務スキル評価サービス「CodeIQ(コードアイキュー)」の公式ブログです。

『はじめてのHadoop』 - データ処理の注目技術を学ぶためのいちばん新しい入門書 #book #hadoop #bigdata

CodeIQの中の人、hnanami です。
今回は、『はじめてのHadoop』の著者である、NTTソフトウェア株式会社 横井 浩さんから寄稿いただきました。

===============================

みなさんこんにちは、横井 浩と申します。

日頃は顧客向けシステム開発に従事しています。3年ほど前に始めてHadoopを用いたシステム開発に携わったことから、Apache Hadoopの本を執筆する機会をいただくことになりました。拙著は3名で書き上げたものですが私が代表して紹介させていただきます。

Hadoopは理解するのが難しい

大量の購買履歴やアクセスログなど人の行動に直結するデータには、ビジネスをよりよくするヒントがあります。

さまざまな業界がそこに着目して、「ビッグデータ」と言われる、大量、マルチデータソース、非構造化などのデータ群に対する分析に力を入れています。これまでの人間の経験と勘でビジネスの計画を立てるのではなく、実データに基づいた分析結果を元に計画を立て実行することにより、データ分析に基づくビジネス判断が可能になり、確実な成果が達成できるようになります。

このデータ分析は、従来のデータウェアハウスとビジネスインテリジェンス技術でも実現可能でした。しかし、上述した「ビッグデータ」に対しては、コストや処理時間が見合わなくなっています。

そのような背景もあり、企業内で活用され始めてきているのが「Hadoop」です。

Hadoopは、データの分散処理を行うための実行基盤です。複数のサーバが各々の役割を持って分散処理をすることで、非常に大きなデータも現実的な時間で処理ができることをメリットとしています。

そのように強力なHadoopですが、勉強し始めた当初は、MapReduceジョブの実装部分ばかりに目が行き、いざサンプルコードを動かしてみても、

「何がどう動いているのかわからない」
「結果が正しいのかわからない」

という状況からなかなか抜け出せませんでした。Hadoopにおける分散処理の仕組みを理解してようやく抜け出すことができたのですが、Hadoopを勉強するうえでは「アーキテクチャについても理解する必要がある」という点で、慣れるのにやや時間がかかるように思います。

仕組みをしっかりおさえつつ、手を動かしながら学べる

そういった経験をふまえて、より効率的にHadoopを学習できるようにまとめたのが『はじめてのHadoop』です。
f:id:codeiq:20130531121231j:plain

本書は

  • 「これからHadoopについて勉強してみよう!」というソフトウェアエンジニアの方
  • 「Hadoopとはどういったものなのか、イメージだけでも知っておきたい」というITマネージャ、ITアーキテクトの方々

を読者対象と仮定して執筆しました。

結果として、600ページを超える分量となってしまいましたが、できるだけわかりやすく解説しているので、読みやすいと思います。

『はじめてのHadoop』の各章の概要をざっくりと紹介します。

  • 第1章 Hadoopを知る

   Hadoopの生い立ちやHadoopの活用シーンについて紹介しています。

   ディストリビューションの紹介、およびHadoopのインストール方法や設定ついて記載しています。

   HDFSやMapReduceの仕組み、またCDH4から採用された機能について記載しています。

   HDFSの仕組みや実際の操作方法について記載しています。

  • 第5章 ノンプログラミングでデータを操作する

   Hadoopの関連プロダクトであるHiveやPigの操作方法について記載しています。

  • 第6章 プログラミングでMapReduceを使う

   MapReduceジョブの実装や動作の方法について記載しています。

  • 第7章 ランダムアクセスできるデータベースとして使う

   HBaseのアーキテクチャや操作方法について記載しています。

   複数のサーバを使ったHadoopクラスタの構築方法について記載しています。


操作方法やプログラミングも重要ですが、まずは全体像や仕組みの把握から始められるように、冒頭でアーキテクチャや内部コンポーネントの動きについての説明を加えています。

そして、手を動かしながら読み進められるように、インストールやプログラミング、各種操作の説明については、コマンド実行時の出力結果やソースコードをなるべく省略せずに記載しているのが特徴です。

1台のマシンでも試せる

Hadoopは、複数のサーバが各々の役割を持って分散処理をすることで、非常に大きなデータも現実的な時間で処理ができることをメリットとしています。しかしながら、「ちょっと試してみたい」という状況で複数のサーバを自前で用意するのは難しいでしょう。

Hadoopには、疑似分散モードという、1台のマシンで分散処理を試せるモードがあります。はじめはこの疑似分散モードでHadoopを動作させて、HDFSやMapReduceなどの基本的なコンポーネントの動きに慣れていくといいでしょう。

もちろん複数の物理サーバや仮想マシンクラスタを組んで分散処理を試すのも非常に意味があるので、ぜひトライしてみてください。

また、本書はCloudera社のHadoopディストリビューションをベースにしていますが、これまで現場で広く使われているCDH3と、その次のバージョンであるCDH4の両方に対応しています。操作が異なる部分は分けて記載していますので、自分が使用したいバージョンに合わせて試すことができます。

未来への投資として

以前、「200GBほどのタブ区切りテキストファイルから、一定の条件に合致する行のみ抽出してほしい」と頼まれたことがありました。その時Hadoopについて知っていたならば、Pigなどを使って、手軽にほしい結果が得られたのかもしれません。しかしながら、その当時はスクリプトを実装することしかイメージできず、サクッと終えることができませんでした。

Hadoopには、ちょっとした作業にも使えるツールもそろっています。もし、少しでもHadoopに興味があれば、未来への投資として、勉強してみませんか?