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ではコンテナのトランザクションを実装したり、整合性のある障害回復を達成するために特許技術が利用されている。
ファイルシステムに含まれるその他の技術には次のようなものがある: