Elastic MapReduceとHiveの概要と利用準備
Amazon Elastic MapReduceで手軽に始めるビッグデータ解析(1)
この連載ではプログラマーを主な対象として、クラウド上でビッグデータを扱うシステムを開発するための最低限の知識とノウハウを提供することを目的としています。第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はその中で下記のツールを利用可能です。
| ツール | 説明 |
| Streaming | 任意の言語での標準入出力を介したプログラムで処理を記述する |
| Hive | HiveQLという言語を用いて処理を記述する |
| Pig | Pig Latinという言語を用いて処理を記述する |
| Custom JAR | HadoopそのものをJavaで記述して拡張する |
いずれも実装としては、Hadoopよりもユーザに近い上位レイヤをサポートする仕組みとなっています。
この記事は参考になりましたか?
- この記事の著者
-
津久井 浩太郎(ツクイ コウタロウ)
ヴェルク株式会社 取締役/アーキテクト。ITコンサルティングファーム、ネット広告系SIerにて主にインフラからミドルウェアを中心としたアーキテクチャの設計、構築、運用に関わる。ヴェルクではクラウドやビッグデータを最大限に活用した受託開発や独自の商品開発に注力。同時に社団法人クラウド利用促進機構(CU...
※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です
この記事は参考になりましたか?
この記事をシェア
