GMOインターネット株式会社
ホーム > GMO最新ネット業界レポート一覧 > GMO最新ネット業界レポート

企業情報

GMO最新ネット業界レポート

第16回 テクノロジー編(前編)
GMOインターネット株式会社 次世代システム研究室 室長 堀内敏明。2009年11月24日、新しいショッピングガイドサイト「GMOとくとくショップ」をオープン。既存の大手インターネット会社のショッピングガイドサイトと異なり、最新テクノロジーを多数盛り込んでいるのが特徴。第7回でレポートした「Hadoop」。その「Hadoop」集計上で必要なプロダクトHiveについて説明する。
1.Hiveとは?

図1 HDFSのイメージ

最近「クラウド」という言葉でよく取り上げられるクラウドコンピューティング。この技術で特に注目されているのは仮想化と大規模分散処理の二つです。データ容量がどんどん増加していく現在にあって、実装が難しい大規模分散処理が「クラウド」で特に重要な分野であることは間違いありません。この大規模分散処理で最も有名なオープンソースの一つがHadoopです。HadoopはGoogleの発表したGFS(Google File System)やMapReduceのオープンソースクローンで、Apacheのトップレベルプロジェクトになっています。

GFSに相当するものとしてHadoopにはHDFS(Hadoop Distributed File System)があります。複数のサーバー群を一つのファイルシステムとして扱うことができ、システム停止をすることなく、サーバーの追加だけで簡単に容量を増やすことが出来ます。また容量だけでなく、データの複製をサーバー同士で持ち合って保存する仕組みを持つため、冗長性にも優れています(図1)。

図2 MapReduceのイメージ

MapReduceはこのHDFSの仕組みを利用して、大規模データの集計処理を複数のサーバー群に分散して並列処理を行わせます。集計するデータとそのためのサーバーが大規模であればあるほど、高いパフォーマンスを得ることができます(図2)。

ただ、MapReduceは集計するにもデータをKey/Valueに「分解」しないといけませんし、少し異なった集計をたくさん行うときでも、都度MapReduceのプログラムを書かなければなりません。これがHadoopの取っ付き難い点になっています。

図3 MapReduceによる集計の流れ

図3は都道府県ごとに件数をカウントする集計の例です。Keyに都道府県、Valueに1という風にデータを「分解」して、Keyの都道府県ごとに1を数えていくのがMapReduceにおける基本的なカウントの方法です(図3)。

RDBで使われるSQLであれば、データ構造を決めてしまえば(テーブル定義)、カラム毎のカウントやサムなど様々な集計をSelect文(Group By句)ですぐに行うことができます。この広く普及したSQLをHadoopのMapReduceで使えるようにしたのが、Hiveです。

2.Hiveの概要

Hiveは元々Facebookで開発され、Apacheプロジェクトに寄贈されました。SQLによく似たHiveQLを使ってHadoop上で集計することができます。一言で言うと、HiveはHadoopのSQLラッパーのようなものです。HiveQLの基本的な構文は、Create table文、Load文、Insert文、そしてSelect文の4つです。Create Table文はテーブル定義、Load文はデータ入力、Insert文はデータ出力、Select文はデータ集計の役割を主に果たします。

Hiveの便利な点は、既にHadoop(HDFS)上にファイルがあればそのままテーブルとして扱える点です。MySQLなどのRDBでは、テーブルを先に作り、テーブル定義に沿った構造のデータを後から格納するやり方しかありません。これに対しHiveは、先にテーブルを作るやり方だけでなく、既存のCSVファイルなどのデータに合わせて後からテーブルを作ることもできます。

つまり、既存データを後からテーブルとして扱うことができます。Hiveが優れているのは、後からテーブルを作った場合、実体となるデータファイルをHiveと関係なく自由に置き換えることが可能な点です。例えば、後からテーブルを作ったときは別のバッチ処理で実体となるデータファイルを日々置き換えることが可能です。Hadoop(HDFS)上に実体となるデータファイルを作るまでの処理と、Hiveで集計する処理を完全に切り分けられるので、Hadoop上の集計を行う開発がしやすいというメリットがあります。

3.Hiveのインストールおよび準備

Hiveのインストールの大前提として、Hadoop環境が既に構築されていなければなりません。Hiveのインストール先は、Hadoopがインストール済みでHadoop環境に接続する一通りの設定がなされたサーバーである必要があります。また、現時点でHiveのインストールはインターネット上のSubversionレポジトリからソースをコピーしてビルドします。ビルドにはAntを使いますので、Hiveのインストール先にはAntのインストールも必要です。

Hiveのインストール自体はWikiドキュメント(*1)にある通り、さほど難しくありません。必要に応じてHADOOP_HOME、HIVE_HOMEやPATHなどの環境変数を設定します。HiveをインストールしたサーバーからHiveクライアントを使う時には、Hadoop環境ができていればそれを利用するだけですので、Hadoop環境に繋ぐための複雑な設定は要りません。すぐにHiveクライアントを使うことができます。HADOOOP_HOME、HIVE_HOMEなど必要な環境変数を設定したユーザーで、$HIVE_HOME/bin/hive と打てば繋がります。

HiveはRDBのようなDBユーザーの作成や、テーブルを格納するデータベースを作成する必要はありません。その代わり、デフォルトの状態ではHiveクライアントで作業したローカルディレクトリにしかテーブルの基本情報を残さないようになっています。違う場所で作業しても前に作ったテーブルを見ることができません。Hiveのユニークな特徴です。

*1:HiveインストールのWikiドキュメント
http://wiki.apache.org/hadoop/Hive/AdminManual/Installation

後編では、GMOとくとくショップで実際に使っているHiveQLについて説明します。


2010.5.19


*本文中に記載されている会社名および商品名・サービス名は、各社の商標 または登録商標です。

 

Copyright (C) GMO Internet, Inc. All Rights Reserved.