Elastic MapReduceとHiveの概要と利用準備

CodeZine / 2012年5月17日 14時0分

図1.EMRの構成

 この連載ではプログラマーを主な対象として、クラウド上でビッグデータを扱うシステムを開発するための最低限の知識とノウハウを提供することを目的としています。第1回ではHadoopという技術の概要、クラウドとHadoopの親和性の高さ、そして次回からの環境準備を中心に解説します。

■対象読者

ビッグデータを使ったアプリケーション開発に興味を持っている人 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はその中で下記のツールを利用可能です。

表1.EMRでサポートされているHadoop拡張ツール
ツール 説明 Streaming 任意の言語での標準入出力を介したプログラムで処理を記述する Hive HiveQLという言語を用いて処理を記述する Pig Pig Latinという言語を用いて処理を記述する Custom JAR HadoopそのものをJavaで記述して拡張する
図1.EMRの構成


 いずれも実装としては、Hadoopよりもユーザに近い上位レイヤをサポートする仕組みとなっています。



■関連記事
Windows AzureユーザーのためのNode.js HTTPモジュールの基礎
Elastic MapReduceとHiveの概要と利用準備
Windows AzureユーザーのためのNode.jsの基礎
ワンストップの国産CMSプラットフォーム「SITE PUBLIS」の舞台裏
Windows AzureでNode.jsを実行しよう

■記事全文へ

この記事に関連するニュース

トピックスRSS

ランキング