SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

Google基盤ソフトウェアのオープンソースクローンを使ってみる

Hadoop、hBaseで構築する大規模分散データ処理システム

Google基盤ソフトウェアのオープンソースクローンを使ってみる 1


  • X ポスト
  • このエントリーをはてなブックマークに追加

この連載では、大規模分散計算フレームワーク「Hadoop」と、その上につくられた大規模分散データベース「hBase」の仕組みと簡単なサンプルアプリケーションを紹介します。HadoopとhBaseは、Googleの基盤ソフトウェアのオープンソースクローンです。今回はGoogleのインフラストラクチャー、およびHadoop、hBaseの概要について説明します。

  • X ポスト
  • このエントリーをはてなブックマークに追加

はじめに

 この連載では、大規模分散計算フレームワーク「Hadoop」と、その上につくられた大規模分散データベース「hBase」の仕組みと簡単なサンプルアプリケーションを紹介します。HadoopとhBaseは、Googleの基盤ソフトウェアのオープンソースクローンです。機能やコンセプトについては、Googleが発表している学術論文に依っています。

 これらの学術論文によると、Googleでは大規模分散ファイルシステム「Google File System」、大規模分散計算フレームワーク「MapReduce」、大規模分散データベース「BigTable」、分散ロックサービス「Chubby」という4つのインフラソフトウェアが使われています。

図1 Google、OSS基盤技術の対応関係
図1 Google、OSS基盤技術の対応関係

 図1にGoogleの基盤技術間の依存関係、そしてそれに対応するOSSの対応関係を示しました。まずは対応するGoogleの基盤技術それぞれの機能や特徴をざっくりと説明し、大規模処理を行う上で各ソフトウェアがどのような役割を果たすのかを説明したいと思います。これにより大規模データ処理システムの全体像を掴んでもらうのがねらいです。

 ここで紹介するGoogleの基盤技術については西田圭介さんの「Googleを支える技術」という本が詳しいので一読をお勧め致します。

1. Googleの基盤技術

1.1 Google File System

 GFS(Google File System)は、大量のデータを大量のマシンで安全に保存するための分散ファイルシステムです。分散ファイルシステムというのは、複数のマシンのディスクを組み合わせて1つのファイルシステムとして見せる技術です。1つのディスクで保存しきれないような大量のデータを効率よく扱う際に非常に有効です。

図2 Google File Systemの概念図
図2 Google File Systemの概念図

 GFSの特徴としては同じファイルを異なるマシンに重複して持たせることで、一部のマシンが故障してもファイルが失われないという点が挙げられます(冗長化)。Googleでは何万台ものサーバーが常時稼動しているので、1日に多くのマシンが壊れます。それに耐えられるような耐故障性の高い分散ファイルシステムを持つことは巨大データを扱う上で必須だったのではないかと思われます。

1.2 MapReduce

 MapReduceは大規模なデータを大量のマシンで並列に処理するための分散計算フレームワークです。ウェブ検索のためのインデックス作成処理や、ログ解析、機械学習などの処理に利用されているようです。

図3 MapReduceの概念図
図3 MapReduceの概念図

 MapReduceという名前は処理を「Mapフェーズ」と「Reduceフェーズ」という2段階のフェーズに分割することに由来します。Mapフェーズでは大量の情報を分解し、必要な情報を抜き出して出力します。ReduceフェーズではMapフェーズで抽出された情報を集約し、それに対して計算を行い結果を出力します。MapReduceの入出力はGFSからなされることが多いようです。

 Map、Reduceのそれぞれのフェーズでは他のマシンと通信することがないため、数万台のマシンに効率よくタスクを分配することができ、台数に比例する能力でデータを処理することができます。タスクを分配する際には、データを保持しているノードでそのデータを処理する計算を始める事で、余計なファイルの転送を防ぎます。またマシンが途中で故障して処理が中断した場合も、他のマシンで同じ処理を自動的に始めてくれるなど、耐障害性についても十分考慮されています。

1.3 BigTable

 BigTableはGoogle File System上に構成されたスケーラブルな分散データベースです。Google File Systemは巨大なファイルを扱うのに特化されていますが、小さいファイルの大量の読み書きには向いていません。しかしWebページなどの情報を扱うには、構造化された小さいデータに対してデータベース的にアクセスしたいという要求があります。BigTableはそのような要求を満たすために作られた分散データベースです。

 BigTableでは大規模なデータを保存するために、テーブルを複数の行で構成される「タブレット」という単位に分割します。各タブレットは異なるサーバーに分散して配置され、データサイズ増大への対応と負荷分散が可能になります。

 またデータ圧縮を用いてディスクスペースを節約したり、メモリをうまく使うことでデータの参照や挿入を高速に行えたりするのも特徴です。データモデルも行・列で扱う既存のRDBMSとは異なっています。

1.4 Chubby

 他にもGoogleではChubbyと呼ばれる分散ロック管理サービスが使われています。Chubbyは複数のマシンで協調しながらロックサービスを提供するためのソフトウェアで、リソースの排他制御に用いられます。Chubbyのオープンソースクローンは未だ作られていません。

次のページ
2. Hadoop & hBaseの概要

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
Google基盤ソフトウェアのオープンソースクローンを使ってみる連載記事一覧

もっと読む

この記事の著者

太田 一樹(オオタ カズキ)

東京大学情報理工学系研究科コンピューター科学専攻石川研究室M1。並列プログラミングや、大規模システムソフトウェアに興味があります。 Webページ ブログ Twitter今までに投稿した記事 Hadoop、hBaseで構築する大規模分散データ処理システム Hadoopのインストールとサンプルプログラムの実行 複数マシンへHadoopをインストールする blogeyeの実装に学ぶ、Amazon EC2/S3でのHadoop活用術 (by 大倉さん)

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/2448 2008/09/05 11:17

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング