Skip to main content
QUICK REVIEW

[論文レビュー] A Comparison of HDF5, Zarr, and netCDF4 in Performing Common I/O Operations

Sriniket Ambatipudi, Suren Byna|arXiv (Cornell University)|Jul 19, 2022
Advanced Data Storage Technologies被引用数 4
ひとこと要約

本研究では、Python を用いて合成データセットを用いて、HDF5、netCDF4、Zarr の I/O 操作(作成、オープン、書き込み、読み込み、クローズ)の一般的なパフォーマンスをベンチマークした。結果として、HDF5 は読み込み/書き込み操作で最も速く、netCDF4 は作成/オープン時間で優れている。Zarr はほとんどの操作で HDF5 よりわずかに遅く、パフォーマンスは API オーバーヘッドと小規模データにおけるキャッシュ効果に強く影響を受けることが判明した。

ABSTRACT

Scientific data is often stored in files because of the simplicity they provide in managing, transferring, and sharing data. These files are typically structured in a specific arrangement and contain metadata to understand the structure the data is stored in. There are numerous file formats in use in various scientific domains that provide abstractions for storing and retrieving data. With the abundance of file formats aiming to store large amounts of scientific data quickly and easily, a question that arises is, "Which scientific file format is best suited for a general use case?" In this study, we compiled a set of benchmarks for common file operations, i.e., create, open, read, write, and close, and used the results of these benchmarks to compare three popular formats: HDF5, netCDF4, and Zarr.

研究の動機と目的

  • HDF5、netCDF4、Zarr の3つの汎用的な科学的ファイルフォーマットの I/O パフォーマンスを、共通の操作において客観的に比較すること。
  • データセットの作成、書き込み、オープン、読み込みを含む一般的な科学的データワークフローにおいて、どのフォーマットが最良のパフォーマンスを示すかを特定すること。
  • 多くの科学的応用に代表される小規模〜中規模のデータセットにおけるファイルフォーマット選択がパフォーマンスに与える影響を評価すること。
  • 研究者が制御された条件下でファイルフォーマットを比較できる再現可能なベンチマークフレームワークを提供すること。
  • Python API オーバーヘッドとキャッシュ効果が観察されるパフォーマンス差に与える影響を調査すること。

提案手法

  • Python で標準化されたベンチマークスイートを実装し、合成データセットの作成、オープン、書き込み、読み込み、クローズ操作の実行時間を測定した。
  • データセットは乱数で生成されたデータを用い、HDF5(h5py)、netCDF4(netCDF4-python)、Zarr(zarr-python)のネイティブ Python API を使用してファイルに格納した。
  • スケーラビリティと負荷の影響を評価するため、データセット数(1,024 から 8,192)と配列次元(1次元から 3次元)を変化させた。
  • 各操作を複数回実行し、システムレベルの変動によるノイズを低減するため平均化した。
  • パフォーマンスの相対的比較を可視化するため、バーチャートを用いて各操作におけるフォーマットごとのパフォーマンスを図示した。
  • ベンチマークはオープンソースであり、コミュニティによる利用、拡張、貢献を目的に GitHub にホスティングされている。

実験結果

リサーチクエスチョン

  • RQ1HDF5、netCDF4、Zarr のうち、どのファイルフォーマットが新しいデータセットを作成する際に最も速いか?
  • RQ2データをデータセットに書き込む際、3つのフォーマットはどのように書き込みパフォーマンスで比較されるか?
  • RQ3以前にクローズされたデータセットを開く際、各フォーマットの相対的パフォーマンスはどのようになるか?
  • RQ4データセットの値を取得する際、どのフォーマットが最も速いか?
  • RQ5データセット数を増加させると、各ファイルフォーマットのパフォーマンスにどのような影響が生じるか?

主な発見

  • HDF5 は最も速い書き込みパフォーマンスを示し、netCDF4 や Zarr よりも著しく短い時間でデータの書き込みを完了した。
  • netCDF4 は新しいデータセットの作成が最も速く、次に HDF5、その後に Zarr であった。
  • データセットのオープンにおいては、netCDF4 が平均時間で最も短く、次に Zarr、その後に HDF5 であった。
  • HDF5 は標準出力へのデータセット値の読み込みが最も速く、Zarr はそれに次いで近い性能を示したが、netCDF4 は著しく遅かった。
  • データセット数を 1,024 から 8,192 に増加させても、平均的な操作時間に顕著な影響はなく、このワークロードではスケーラビリティが主要なボトルネックではないことが示唆された。
  • パフォーマンスの差は、おそらく Python API オーバーヘッドとキャッシュ効果に起因しており、データサイズがギガバイトレベルに達するとその影響は小さくなる可能性がある。

より良い研究を、今すぐ始めましょう

論文の読解から最終レビューまで、研究時間を劇的に削減しましょう。

クレジットカード登録不要

このレビューはAIが作成し、人間の編集者が確認しました。