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

企業情報

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

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

図1 MapReduceの概念

このところ知名度がかなり上がってきたHadoop。簡単に説明すると「大規模データを複数のマシンに分散処理することができるJavaベースのOSSプラットフォーム」です。大規模なデータ処理を低コストで行うことが可能となるため、非常に注目を集めるようになってきたテクノロジーです。

Hadoopを理解するには、まずMapReduceについて理解する必要があります。ここで簡単に説明しましょう。MapReduceはHadoopで使用されるプログラミングモデルです。ユーザーはMapフェーズとReduceフェーズを利用することで、複数のサーバーで自動的に分散処理を行うことが可能となります。Mapフェーズは入力された情報の分解と抽出を行い、ReduceフェーズはMapフェーズから渡された情報の集約と計算を行って、まとめ上げ、結果を出力する役割をします。MapとReduceは各々が独自で稼働して複数のサーバー上で処理され、その間に他のマシンと通信することがないために非常に効率よく処理することができます。GMOインターネットグループでは以前からアクセスログの解析等でよくHadoopを利用しています。

2.Hadoopの問題点
HadoopはNameNodeがSPOF(single point of failure)となっているシステムです。DataNodeの場合、複数台用意してデータブロックのレプリケーションを行うことで単一点障害を防いでいます。しかしNameNodeには、GFS(Google File System)のような他ノードのマスター昇格が無いため、NameNodeが停止すると全システムが停止してしまいます。この場合、HDFS上のデータ保護・アクセスの観点から許容できないため、冗長性を確保するためフェイルオーバーの方法について検討する必要があります。

マスターとして動作しているNameNodeのフェイルオーバー方法として、KeepAlivedとNFSを使った冗長化を行っています。定常状態ではマスターとなっているNameNodeは、DataNodeやアプリケーションからアクセスされる為のVIP(Virtual IP)を持って動作し、自サーバー上とNFSによって共有されているバックアップ先のNameNode上にメタデータ(fsimage, editlog)を書き込みます。マスターのNameNodeのフェイルオーバーは、次のような動作によって行われます。

KeepAlivedによる監視でマスターのNameNodeが停止したと判断した場合、バックアップ先のNameNode上のフェイルオーバースクリプトが動作し、NFSによって確保されているメタデータを復旧させ、VIPを付け替えてHadoopをマスターとして起動します。 GMOとくとくショップではXENの上にDataNodeを稼働させているため、物理サーバーが落ちた場合は、そのサーバー上で稼働している複数のDataNodeも一緒に落ちてしまいます。そのため、停止したDataNode群にデータブロックとレプリケーションが存在している場合、そのデータにアクセスすることが出来なくなってしまうという問題が出てきます。これに対処するため、あるデータブロックのレプリケーション先を別のXEN上で稼働する DataNodeに設定し、XENが停止した場合でもデータへのアクセスが出来るようにしています。

3.画像ストレージとしてHadoopを使用

図2 画像ストレージの構成

HadoopにはHDFS(Hadoop Distributed File System)というファイルを高い信頼性で扱うことができる分散ファイルシステムがあります。HDFSは膨大なデータを扱うという特性から、GMOとくとくショップの商品、店舗画像を格納するストレージとして利用しています。その他、GMOとくとくショップにある商品のレコメンドデータ生成、アクセスログ解析にもHadoopを利用しています。

HDFSを画像のストレージとして利用する場合、高速なデータ転送を行うのにサーバー間のトラフィックが問題となるため、HDFSを直接オンラインストレージとして使うのは向いていません。そこで、GMOとくとくショップではHDFSを最終ストレージの位置付けとして利用しています。HDFSのフロントに画像キャッシュサーバーを用意し、キャッシュに存在しない画像についてはHDFSにアクセスしてレスポンスをします。

また、HDFSに対して画像データの参照、登録、削除をWeb API経由で行える専用のWebアプリケーションを用意しました。それを冗長化して配置することで、キャッシュサーバーに存在しない画像についても高速にアクセスできるようにしています。

HDFS単体としての利用ではオンライン処理を行う画像ストレージとしての利用は難しいのですが、キャッシュを利用することで、HDFSによって可用性・冗長性が確保された画像を安定的にユーザーに提供するような構成を取ることも可能になるのです。

後編では、Hadoopを使った構築方法やチューニングポイント、運用管理などについて説明します。

2010.1.27


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

 

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