- Authors

- Name
- Youngju Kim
- @fjvbn20031
ファイルとブロック
一般的に使用するコンピュータでは、1つのファイルは複数のブロックに分割して保存され、ブロックサイズはほとんどの場合(OSや設定によって異なる場合がありますが)512バイトです。例えば、1MBのファイルを保存する場合、約20個の512バイトのブロックに分割して保存されることになります。
このブロックサイズが小さすぎると、ブロック数が増加してメタデータのオーバーヘッドが増大します。逆にブロックサイズが大きすぎると、空間の無駄が増加するリスクがあります。例えば、ブロックサイズが128MBの場合、1MBのファイルを保存しても5MBのファイルを保存しても128MBのブロックを割り当てなければならないため、そのファイルを保存した領域以外の空間は使用できません。
ブロックファイルシステムの利点
簡潔なメタデータ: 各ブロックのサイズが固定されているため、ファイルメタデータに各ブロックの位置とサイズを明示的に保存する必要がありません。これにより、メタデータの複雑さが軽減されます。
効率的なディスク使用: ブロックを固定サイズに分割することで、ディスクの空間配置を最適化し、ディスクの空き領域を最小化できます。これにより、ディスクの使用率が向上します。
高速なランダムアクセス: ブロックベースのアクセス方式は、任意の位置からデータにアクセスすることを容易にします。特定のブロックを見つけるための計算が単純であるため、ランダムアクセスの性能が向上します。
強力な耐障害性: 一部のブロックファイルシステムでは、ブロックレベルで追加のエラー検出および復旧メカニズムが提供されます。これらのメカニズムは各ブロックの整合性を確保し、エラーが発生した場合に該当ブロックのみを復旧できるようにします。
効率的なキャッシュおよびバッファ管理: ブロックを固定サイズで管理することで、システムのキャッシュとバッファ管理を最適化できます。これにより、データの読み書き操作の性能が向上します。
ファイルサイズの動的拡張: ブロックベースのファイルシステムは、必要に応じて追加のブロックを割り当てたり返却したりして、ファイルサイズを動的に拡張または縮小できます。
データフラグメンテーションの最小化: ファイルを一定サイズのブロックに分割することで、ディスク上のファイルのフラグメンテーションを減らすことができます。そのため、連続したディスク領域にデータを保存・読み取りでき、性能が向上します。
HDFSブロックサイズ:128MB
HDFS(Hadoop File System)はデフォルトで128MBというはるかに大きなブロックサイズを持っています。これは、Hadoopが本質的に大容量データを処理するために設計されており、ランダム処理よりもストリーミング処理に最適化されているためです。また、ブロックサイズが大きくなると、それだけメタデータのサイズも小さくなり、NameNodeのオーバーヘッドが減少するため、管理面で有利です。
Hadoop NameNodeの場合、一般的に100万個のブロックを保存するのに1GBのヒープメモリを使用すると言われています。
