Hadoop と Ceph のファイル システムの比較

完了

ここでは、HDFS と Ceph の主な相違点をまとめます1

  • アーキテクチャの違い:HDFS は、コンピューティングとストレージを併置するモデルに従います。 HDFS DataNode は通常、MapReduce ノードに共存します。モデル全体の背後にある主要な考え方は、データに計算をもたらすことです。 Ceph は、スタンドアロンのストレージ サービスとして設計されています。ただし、Ceph にデータを格納する OSD は MapReduce ノードと併置される可能性があります。
  • 互換性:HDFS クライアントは、いずれかの API を使用して実装する必要があります。 HDFS は POSIX ファイル システムとして設計されていないため、POSIX セマンティクスの一部をサポートしていません (たとえば、既存のファイルを書き込み用に開く)。 FUSE ドライバーなど、HDFS をマウントできるようにする回避策が存在します。 ただし、この回避策がまだサポートされていない場合は、ほとんどのアプリケーションが HDFS クライアントで再実装される必要があります。 一方、Ceph は、POSIX 準拠の Ceph FS ドライバーを含む複数の API を公開します。これにより、HDFS と比較した場合に、既存のアプリケーションとの統合がはるかに簡単になります。
  • データ レイアウト:HDFS NameNode では、ブロックの物理的な場所がクライアント アプリケーションに公開されます。クライアント アプリケーションでは、この情報を使用してデータ アクセスのローカリティを向上させることができます。 Ceph も同様ですが、データの要求が行われると、メタデータ サーバーでは常にデータ オブジェクトの場所がクライアントに公開されます。
  • 小さいファイルのサポート:HDFS は大きなブロック サイズ (既定では 64 MB) 用に最適化されているため、小さなファイルはサポートされません。 Ceph では、通常、ストライプの幅がキロバイトの単位であるため、HDFS よりも汎用的になります。
  • 同時書き込み:HDFS は、一度に 1 つのファイルだけがファイルへの書き込みを許可される Write-Once モデルです。 Ceph では複数の同時実行ライターがサポートされるため、2 つのファイル システムのうち、より柔軟です。
  • 整合性モデル:HDFS では、書き込みを 1 つのクライアントに制限し、ファイルの更新を許可しないことによって整合性を保証します。一方 Ceph では、一部の OSD のネットワーク分断に関連するまれな状況を除き、逐次一貫性を保証できます。
  • キャッシュ: HDFS では、ストリーミング モデルを通じてクライアント側での先読みキャッシュがサポートされます。 Ceph 内のクライアントでは、クライアントが MDS によりリースを提供されている (クライアントがファイルへの排他的アクセス権を持つ) 場合にのみ、読み取りキャッシュと書き込みバッファーを保持できます。 複数のクライアントが Ceph 内の同じファイルにアクセスすると、これらのリースは失効し、整合性を管理するために I/O が強制的に同期されます。
  • フォールト トレランス:HDFS は、ブロック レベルでのレプリケーションの組み込みサポートによりフォールト トレランスを考慮して構築されており、ラック対応になっています。ただし、Namenode が HDFS 内の単一障害点となります。 一方、Ceph は、複雑なピアツーピア プロトコルを使用して、かなりフォールト トレラントになっているため、かなり堅牢です。 ノードを期待どおりの速さで起動するために再生できる書き込みログが存在するため、Ceph では障害復旧もかなり高速に実行されます。

リファレンス

  1. Maltzahn, C.、Molina-Estolano, E.、Khurana, A.、Nelson, A. J.、Brandt, S. A.、および Weil, S.(2010)。 「Hadoop 分散ファイル システムのスケーラブルな代替としての Ceph」 The USENIX Magazine vol.35