対象読者
- ビッグデータを使ったアプリケーション開発に興味を持っている人
-
Java、PHP、Ruby、Pythonなど、一般的なプログラミング知識とSQLを理解している人
必要な環境
- Windows、Macなどインターネットが利用可能なOS環境
クラウドでHadoopを使うメリット
昨今ビッグデータ格納の基盤としてHadoopを使う事例が増えてきています。大規模なストレージを必要とせずにビッグデータを扱える環境は非常に魅力的です。
HadoopはGoogleの検索エンジンの基盤として開発されたGoogle File SystemおよびMapReduceの技術仕様を元に開発されたオープンソースソフトウェアです。ファイルを複数のサーバに冗長化した上で分散配置するHDFS(Hadoop Distributed File System)と、分散配置されている大量データから必要なデータの抽出や分解を行うHadoop MapReduceにより構成されています。
現在、Hadoopはクレジットカード会社の売上データの解析や、国立国会図書館が提供している検索サービスのインデックス作成、大手ECサイトのリコメンドデータの生成など、少なくとも億単位以上のデータを対象とする分析処理の基盤として使われています。
Hadoop運用の課題
Hadoopは特性上、最小でも数台~数十台規模のサーバを必要としますが、オンプレミス環境下でその規模のサーバを運用するには、導入および運用コスト(人的作業コスト含む)ともに相応のものになります。
またHadoopのMapReduceを利用した分散処理は、バッチ駆動型の仕組みとなるため常時起動されているわけではなく、Hadoopクラスタを構成する各サーバのリソースに「遊び時間」が発生することは避けられません。
以上のような理由から、スタートアップベンチャーや新規事業ではなかなかオンプレミス環境にHadoopを展開させるのが難しいというのが実情でした。
オンプレミスでの課題をAmazon Elastic MapReduceで解決
前述のような課題は、必要な時に必要な分だけ自由にサーバリソースを利用できるパブリッククラウド上にHadoopを乗せることで大きく改善することができます。特にAmazon Web Services(AWS)のAmazon Elastic MapReduce(EMR)というサービスを使えば、Hadoopがすでにセットアップされた状態で利用することができ、前述したようなオンプレミスでHadoopを展開させる際に発生するリスクを大きく低減させることができます。EMRは2011年4月より東京リージョンでも利用できるようになっており、日本国内から低レイテンシで利用できます。
Hadoopをサポートする拡張ツール
Hadoopに格納したデータから目的のものを取り出すには、mapperとreducerという処理を記述しアプリケーションから実行する必要がありますが、Hadoop自体はJavaで記述されたソフトウェアであるため、普段Javaを利用していない開発者の方にとってはやや敷居が高く感じられるかもしれません。
そのため、HadoopではMapReduce操作を簡単にするためのさまざまなツールが有志により開発されています。EMRはその中で下記のツールを利用可能です。
ツール | 説明 |
Streaming | 任意の言語での標準入出力を介したプログラムで処理を記述する |
Hive | HiveQLという言語を用いて処理を記述する |
Pig | Pig Latinという言語を用いて処理を記述する |
Custom JAR | HadoopそのものをJavaで記述して拡張する |
いずれも実装としては、Hadoopよりもユーザに近い上位レイヤをサポートする仕組みとなっています。