[技術解説]

Hadoopの基本機能とエコシステム─構成・動作原理は意外とシンプル、難解さを解きほぐし全体像を把握する

急拡大するHadoop経済圏 Part2

2012年3月6日(火)栗原 雅(IT Leaders編集部)

Hadoopは構成や動作原理はシンプルなうえ、数多くの技術情報も公開されている。 国内でも一部のネット系サービス事業者が本格活用によって成果を上げ始めている。 Hadoopはどのように動作するのか、企業利用時にどういった周辺技術が有用なのか。 基本機能とそれを支える技術のエコシステムからHadoopの全体像を概説する。

栗原 雅 (編集部)
監修:濱野賢一朗氏 NTTデータ 基盤システム事業本部
システム基盤サービスビジネスユニット OSSプロフェッショナルサービス シニアエキスパート

米国では多種多様なデータをまとめて蓄え、大容量のデータを対象に抽出や集計の処理を実行する仕組みとしてごく身近な存在になりつつあるHadoopだが、国内ではまだそこまで浸透していない。Hadoopそのものが進化の過程にあるため、現時点では本格的な導入に踏み出しにくいという点は、少なからずあろう。

一方で、大容量のデータを活用するタイミングが到来するのはもう少し先のこと、と見られているふしもある。数十万から数千万のユーザー数を抱え、すでにテラバイト級やペタバイト級の各種ログ情報を蓄えているネット系のサービス事業者はともかく、多くの企業にとってはまだ、自社でビッグデータを持つ姿をイメージしにくいのが実情だろう。

しかし、実際には企業が大容量のデータを保有するようになる時期は、それほど遠くないはずだ。例えば、RFIDタグを活用した商品管理や物流/倉庫管理の広がりや、位置や温度などを測る各種センサーを実装したデバイスの普及によって、企業が収集・活用できるデータの種類と量は格段に増えつつある(本誌2012年2月号の特集「M2Mを理解する」を参照)。それらを活用する基盤技術の選択肢として、Hadoopの存在が急浮上してくることはほぼ間違いない。

以下ではまず、ビッグデータの大規模分散管理と活用を可能にしたHadoopのアーキテクチャと、2つの基本機能について改めて見ていく。続いて、Hadoopの基本機能を補完する複数のテクノロジの全体像を俯瞰して整理する。

アーキテクチャ
スレーブサーバーを増やし大容量ファイルを高速処理

周知の通り、Hadoopを用いたシステムは比較的小規模でも数十や数百、大規模になると数千や数万といった台数のサーバーを組み合わせて構成する。多数のサーバーを用いる最大の理由の1つが、大容量のファイルを格納できるようにするためである。仮に1ファイルで数テラバイトの容量があっても、ファイルを細かく分割したうえで複数のサーバーに分散して保管する。

もちろん、ディスク装置の大容量化が進んだこともあり、最近では1台のディスク装置に数テラバイト規模のファイルを格納することは可能だ。しかし、ディスク装置のデータ転送速度は毎秒数百MBと遅いため、書き込みや読み取りにはどうしても時間を要する。その点、Hadoopではファイルを分割して複数のディスク装置が並行して書き込みや読み取りを実行するので、大容量のファイルでも高速に処理を完了させられる。

このような分散処理を実行するHadoopのサーバー群には、大きく2つの種類がある(図2-1)。1つは、大容量のファイルをいくつものブロックに分けて保管すると共に、ファイルからデータを抽出したり集計したりする処理を実行するサーバー。もう1つは、ファイル名やディレクトリ、ファイルのブロックの保管先を一元管理するサーバーだ。前者はスレーブサーバー、後者はマスターサーバーと呼ぶ。このうちスレーブサーバーの台数を増やすことによって、Hadoopは格納できるファイルの容量を増やしたり、抽出や集計の実行並列度を高めて処理の高速化を図れる。

図2-1 Hadoopのクラスタ構成の概念図
図2-1 Hadoopのクラスタ構成の概念図
複数のスレーブサーバー(データノード、タスクトラッカー)のディスクに分散して保管するデータや、各スレーブサーバーで分散して実行するタスクをマスターサーバー(ネームノード、ジョブトラッカー)で集中管理する。スレーブサーバーを増やすことでスケールアウトする

クライアント(外部のアプリケーション)がファイル操作の要求を出すと、その要求はマスターサーバーが受け取る。そしてファイルのブロックを保管している複数のスレーブサーバーに対して、共通の処理内容を指示する。ファイルのブロックが100台のスレーブサーバーに分散していた場合、100台のスレーブサーバーが同じ処理を並列で実行することになる。

基本機能 1. HDFS
箱に収容した小さな容器に細かく刻んだファイルを格納

もう少し詳しくHadoopの仕組みを見ていく。

ファイルを分割して複数のサーバーで分散管理することから、Hadoopのファイルシステムは「HDFS(Hadoop分散ファイルシステム)」と呼ぶ。また、ファイルの実体を保管するスレーブサーバーをHDFSの「データノード」、ファイル名やファイルのブロックを保管しているデータノードを一元管理するマスターサーバーのことを「ネームノード」と表現する。

少し大ざっぱな解釈になるが、HDFSは「いくつもの容器(=データノード)を収容した“箱”」と捉えるとよい(図2-2)。箱の中にはすべての容器がギッシリと並んでおり、箱に投げ入れたファイルは均等な大きさに分割された後に、内部の容器に分散して格納されていく。

図2-2 HadoopのHDFSの概念
図2-2 HadoopのHDFSの概念
大容量ファイルを64MBごとのブロックに分割し、同一ブロックを3個のデータノードに保管する

通常、Hadoopではファイルを64MBごとのブロックに機械的に分割してデータノードに格納する。このサイズであれば、データノードが備えるディスク装置のデータ転送速度が毎秒100MB前後と遅かったとしても、短時間でブロックを読み書きできる。

当然だが、ファイルを細かいブロックに分割して分散させる仕組みには、リスクも存在する。64MBのサイズに刻んだブロックのうち1つでも失ったら、数テラバイトのファイル全体を喪失することになるのである。そうした事態を防ぐため、Hadoopでは同一のブロックを複数のデータノードに保管している。具体的には、個々のデータノードが相互に通信しながら、自身が保管しているブロックの複製を他の複数のデータノードに自動的に作成する。

HDFSの標準的な設定ではブロックの複製の数を3個に設定してある。このため同時に2つのデータノードに故障が発生してブロックを喪失したとしても、ファイルが消えることはない。

この記事の続きをお読みいただくには、
会員登録(無料)が必要です
  • 1
  • 2
関連キーワード

Hadoop / MapReduce

関連記事

トピックス

[Sponsored]

Hadoopの基本機能とエコシステム─構成・動作原理は意外とシンプル、難解さを解きほぐし全体像を把握するHadoopは構成や動作原理はシンプルなうえ、数多くの技術情報も公開されている。 国内でも一部のネット系サービス事業者が本格活用によって成果を上げ始めている。 Hadoopはどのように動作するのか、企業利用時にどういった周辺技術が有用なのか。 基本機能とそれを支える技術のエコシステムからHadoopの全体像を概説する。

PAGE TOP