SHOEISHA iD

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

DeveloperZine(デベロッパージン)- エンジニアの意思決定を支える技術情報メディア ProductZine

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

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

Hadoopのインストールとサンプルプログラムの実行

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


4. HDFS(Hadoop Distributed File System)のアーキテクチャ

 この章は「The Hadoop Distributed File System: Architecture and Design」を噛み砕いた内容となっています。また、このHFDSのアーキテクチャはGoogleFileSystemの学術論文に基づいています。興味のある方はぜひ参照してみてください。

 HDFSは大規模なファイルを非常に効率よく、そして安全に保存するための分散ファイルシステムです。大規模なデータを保持するためには大量のマシンが必要となります。しかし、マシンが増えてくるとその分故障する確率も増えてきます。例えばマシンが3年に1回壊れるとしましょう。10000台あると、1日に10台ずつ壊れていく計算になります。そのため、最初から故障を前提としたファイルシステムを構築する必要があります。

 HDFSは、MapReduceと組み合わさることで効力を発揮します。データを保持しているマシン上で計算プログラムを走らせることによって、計算に必要なデータをネットワークを介して転送する必要が無くなります。またローカルで計算を始められない状況でも、計算プログラムに一番近いマシン(IPによって決定される)から入力データを取ってくることにより、通信が最適化されます。

 図11はHDFSのアーキテクチャを表しています。HDFSはNameNodeとDataNodeという2つのサーバーで構成されます。Nodeという名前がついていますが、実質的にはサーバーなので同じマシン上で起動していてもかまいません。先ほど1台で動かしたときは、NameNodeもDataNodeも同じマシン上で起動していました。HDFSクライアントはこれら2つのサーバーに接続し、通信することでファイル操作が行えるようになっています。

図11 HDFSのアーキテクチャ
図11 HDFSのアーキテクチャ

 DataNodeは実際のデータを保持するサーバーです。HDFSではファイルはブロックという固定サイズの単位に分割されます(デフォルトは64M)。DataNodeではブロック単位でハードディスクにデータが保存されます。

 NameNodeはファイルシステムのメタデータ(ディレクトリ構造やファイルのアクセス権など)を管理するサーバーです。またブロック情報も管理しています。つまり、あるファイルがどのようなブロックに分かれているか、そしてそれらのブロックがどのDataNodeで保持されているかを管理しています。

 クライアントがファイルを読み込むときは、まずファイル名をNameNodeに渡します。アクセス権限がある場合は、そのファイルを構成するブロックを保持しているDataNodeの位置を取得することができます。それに基づいて各自DataNodeに接続し、データを読み込みます。

 また安全性という面では、複数のDataNodeに同じブロックを保持させるレプリケーションという機能があります。先ほど設定した「hadoop-site.xml」にmapred.submit.replicationという値がありましたが、これを3にすると、少なくとも3つのDataNodeに同じブロックを置くように管理してくれます。

 DataNodeが故障してシステム内のブロックの個数が1つや2つになった場合は、すぐさま他のDataNodeにブロックが転送されます。これによりすべてのブロックが消失してしまう事態を防ぎます。

 ディスクが足りなくなってきたら、全体を止めることなく動的にDataNodeを追加することもできます。

次のページ
5. MapReduceの説明

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

Google基盤ソフトウェアのオープンソースクローンを使ってみる連載記事一覧

もっと読む

この記事の著者

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

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

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

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

この記事をシェア

CodeZine(コードジン)
https://codezine.jp/article/detail/2485 2008/08/21 21:12

イベント

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

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

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

メールバックナンバー