MapR FS

MapR File System (MapR FS) は非常に大規模で高い性能が求められる用途をサポートする分散ファイルシステムである。MapR FSは多様なインタフェースに対応しており、これにはNFSやFUSEインタフェースを経由した従来型のRead/Writeファイルアクセスに加えて、Apache HadoopやApache Sparkといった多くのシステムで使われているHDFSインタフェースも含まれる。またファイル志向のアクセスだけではなく、MapR FSはApache HBase APIおよびApache Kafka API、さらにはドキュメントデータベースインタフェースを利用したテーブルやメッセージストリームへのアクセスにも対応している。

MapR FSは2010年に最初のリリースが行われたが、テーブルおよびメッセージングインタフェースの追加に伴い現在ではMapR Converged Data Platformと称されることが多い。しかしながら、これらすべての形式の永続データストレージを実装するために同じコア技術が使われており、すべてのインタフェースは最終的に同一のサーバプロセスが処理を担っている。データ基盤全体の個々の機能を区別するために、MapR FSの名称は特にファイル志向インタフェースを指すときに使われる。同様に、MapR DBもしくはMapR JSON DBはテーブル型インタフェースを指すときに使われ、MapR Streamsはメッセージストリーミング機能の説明のために使われる。

MapR FSはクラスタファイルシステムにおいて、クライアントからユニバーサルな名前空間を使用して、ファイルだけでなくテーブルなどの他のオブジェクトに対してもアクセスできるようにしている。ファイル、テーブル、ストリームに対してはアクセス制御表現を使用したアクセス制御も提供されている。アクセス制御表現は、一般に利用されている（限定的な）アクセス制御リストの機能拡張版で、許可されたユーザーやグループの単なるリストではなく、ユーザーおよびグループのブール表現による組み合わせによりパーミッションを構成することを可能にしている。

歴史
MapR FSは、より高性能で安定した基盤を提供することでApache Hadoopの能力をさらに引き出すことを目指し、2009年にMapR Technologiesにより開発が開始された。MapR FSの設計はAndrew File System (AFS) のような様々な他のシステムの影響を受けている。特にAFSにおけるボリュームの概念は、MapR FSにおける実装は全く異なるものの、ユーザーからの見え方の観点では非常に似ている部分がある。AFSとMapR FSの間の大きな違いの一つは、MapR FSは強い整合性モデルを採用する一方で、AFSは弱い整合性のみを提供している点である。

Hadoopプログラムをサポートするという当初の目標を達成するため、MapR FSはHDFSの関数呼び出しを専用の遠隔手続き呼出し (RPC) メカニズムに基づく内部APIに変換することでHDFS APIに対応している。通常のHDFSのWrite-Onceモデルは、MapR FSでは（たとえHDFS API利用時でも）書き換え可能なファイルシステムで置き換えられている。ファイルの変更に対応する能力を備えたことにより、NFS操作を内部MapR RPC呼び出しに変換するNFSサーバの実装が可能になった。Filesystem in Userspace (FUSE) インタフェースやApache HBase APIの近似エミュレーションでも同様の仕組みが使われている。

アーキテクチャ
MapR FSにおけるファイルは、通常各256MBのサイズ（ただし各ファイルで指定可能）のチャンクに分割するように内部で実装されている。各チャンクは、クラスタ内における複製の基本単位であるコンテナに書き込まれる。コンテナの複製は、各複製が書き込み操作を次の複製に一列で転送していく直線型の方法か、マスターとなる複製が書き込み操作を他のすべての複製に同時に転送していくスター型の方法のいずれかで行われる。すべての複製への書き込みが完了した時点で、マスターとなる複製により書き込み完了の応答が返される。内部ではコンテナはB木を実装しており、ファイルオフセットをファイル内部のチャンクにマッピングしたり、ファイルオフセットをチャンク内部の正しい8kBブロックにマッピングしたりするなど、様々なレベルで使われている。

これらのB木はディレクトリの実装にも使われている。ディレクトリに含まれる各ファイル・ディレクトリ名の長いハッシュが、子ファイルやディレクトリテーブルの検索に使用されている。

ボリュームはディレクトリと多くの似た点を持つ特別なデータ構造であるが、追加のアクセス制御と運用管理操作を提供しているのが特徴である。ボリュームの重要な機能の一つに、あるボリュームがデータを格納するクラスタ内のノードを制限するための機能がある。この機能は、幅広いタイプの負荷を処理しており、激しい競合が発生しているマルチテナントシステムにおいて性能を制御するために使われる。

MapR FSではコンテナのトランザクションを実装したり、整合性のある障害回復を達成するために特許技術が利用されている。

ファイルシステムに含まれるその他の技術には次のようなものがある:
 すべてのコンテナ配置と複製チェーンの配列を格納している分散クラスタメタデータ。
 ディレクトリツリーを格納する分散メタデータ。すべてのディレクトリは完全に複製され、単一ノードがクラスタのすべてのメタデータを持つことはない。
 大量のディレクトリを作成した場合でも高い性能を達成可能な効率的なB木の利用。
 分断耐性。可用性を妥協する場合はあるが、整合性を失うことなくクラスタの分断に耐性を持つ。ボリュームのミラー機能、テーブル・ストリームの準リアルタイムレプリケーション機能を利用した、複数クラスタ間の制限付きデータ整合レプリケーションもサポートしている。
 整合性のあるマルチスレッド更新。グローバルなロック構造を必要とすることなく、非常に多数のスレッドから同時にファイルの更新や参照を行うことが可能。
 ローリングアップグレードとオンラインメンテナンス。ほぼ完全な性能でクラスタの運用を維持したまま、メジャーバージョンアップグレードを含むほとんどの運用管理を実施することが可能。

関連項目
 Google File System
 GFS2
 OCFS2
 ZFS
 QFS
 Lustre (ファイルシステム)
 GlusterFS

脚注・出典

外部リンク
 MapRホームページ

OSのファイルシステム