
このところ知名度がかなり上がってきたHadoop。簡単に説明すると「大規模データを複数のマシンに分散処理することができるJavaベースのOSSプラットフォーム」です。大規模なデータ処理を低コストで行うことが可能となるため、非常に注目を集めるようになってきたテクノロジーです。
Hadoopを理解するには、まずMapReduceについて理解する必要があります。ここで簡単に説明しましょう。MapReduceはHadoopで使用されるプログラミングモデルです。ユーザーはMapフェーズとReduceフェーズを利用することで、複数のサーバーで自動的に分散処理を行うことが可能となります。Mapフェーズは入力された情報の分解と抽出を行い、ReduceフェーズはMapフェーズから渡された情報の集約と計算を行って、まとめ上げ、結果を出力する役割をします。MapとReduceは各々が独自で稼働して複数のサーバー上で処理され、その間に他のマシンと通信することがないために非常に効率よく処理することができます。GMOインターネットグループでは以前からアクセスログの解析等でよく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が停止した場合でもデータへのアクセスが出来るようにしています。
HadoopにはHDFS(Hadoop Distributed File System)というファイルを高い信頼性で扱うことができる分散ファイルシステムがあります。HDFSは膨大なデータを扱うという特性から、GMOとくとくショップの商品、店舗画像を格納するストレージとして利用しています。その他、GMOとくとくショップにある商品のレコメンドデータ生成、アクセスログ解析にもHadoopを利用しています。
HDFSを画像のストレージとして利用する場合、高速なデータ転送を行うのにサーバー間のトラフィックが問題となるため、HDFSを直接オンラインストレージとして使うのは向いていません。そこで、GMOとくとくショップではHDFSを最終ストレージの位置付けとして利用しています。HDFSのフロントに画像キャッシュサーバーを用意し、キャッシュに存在しない画像についてはHDFSにアクセスしてレスポンスをします。
また、HDFSに対して画像データの参照、登録、削除をWeb API経由で行える専用のWebアプリケーションを用意しました。それを冗長化して配置することで、キャッシュサーバーに存在しない画像についても高速にアクセスできるようにしています。
HDFS単体としての利用ではオンライン処理を行う画像ストレージとしての利用は難しいのですが、キャッシュを利用することで、HDFSによって可用性・冗長性が確保された画像を安定的にユーザーに提供するような構成を取ることも可能になるのです。
後編では、Hadoopを使った構築方法やチューニングポイント、運用管理などについて説明します。
- 【第2回】「GMOとくとくショップ」オープンにあたって - GMOとくとくショップと最新テクノロジー -
- 【第7回】「GMOとくとくショップ」に組み込まれたテクノロジー(後編)- Hadoopを使った構築方法やチューニングポイント、運用管理 -
- 【第10回】「GMOとくとくショップ」で利用しているMySQLクラスターとは?(前編)- MySQLクラスターの仕組みについて -
- 【第10回】「GMOとくとくショップ」で利用しているMySQLクラスターとは?(後編)- MySQLクラスター構築方法と運用管理 -
- 【第13回】「GMOとくとくショップ」で利用しているEucalyptusとは?(前編)- Eucalyptusの仕組みについて -
- 【第13回】「GMOとくとくショップ」で利用しているEucalyptusとは?(後編)- Eucalyptusの構築や運用管理について -
- 【第16回】「GMOとくとくショップ」のHadoop集計-Hiveの利用方法-(前編)- Hiveをどのように利用しているか? -
- 【第16回】「GMOとくとくショップ」のHadoop集計-Hiveの利用方法-(後編)- 実際に使用しているHiveQLについて -
- 【第19回】「GMOとくとくショップ」で利用しているアプリケーションフレームワークについて- Webアプリケーションフレームワークとは? -
*本文中に記載されている会社名および商品名・サービス名は、各社の商標 または登録商標です。


























