HDF5 資料集 (.hdf5)
The 標準階層式資料格式 5(HDF5)是用於大量多維陣列的頂級科學資料管理架構,廣泛應用於超級運算、氣候建模、神經科學與機器學習中。
將 HDF5 轉換為 CSV
免費的瀏覽器端 HDF5 轉 CSV 轉換器。在您的裝置上即時轉換檔案。
檢查與中繼資料
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 HDF5 檔案:
位元組層級標頭簽章(檔案簽章)
作業系統與檔案分析工具透過檢查開頭的二進位位元組序列來識別 HDF5 檔案:
十六進位簽章(偏移量 0):
89 48 44 46 0D 0A 1A 0AASCII 表示法: \x89HDF\r\n\x1a\n
標準化: The HDF Group 開放標準規格
技術規格
| 容器架構 | 類似階層式檔案系統的二進位容器,將資料組織成具有屬性的群組(資料夾)與資料集(多維陣列) |
| 壓縮 | 基於區塊的壓縮過濾器:Gzip(Deflate)、SZIP、Zstandard、Blosc 與 LZF |
| 位元組序 | 宣告於超級區塊中(小端序或大端序) |
| 色彩空間 | 不適用(多維數值陣列) |
| 色版與結構 | 高維度科學陣列、複合資料型別與變動長度字串 |
| 最大尺寸 | 實際上不受限制(支援 64 位元座標與 PB 級資料集) |
| 透明度 | 無 |
| 串流與漸進式 | 分塊儲存可進行部分超矩形切片,無需將完整資料集載入記憶體 |
技術比較矩陣:HDF5 對比競爭格式
| 技術屬性 | HDF5 (目前) | NETCDF | FITS | ZARR |
|---|---|---|---|---|
| 階層結構 | 完整的 POSIX 風格檔案系統(群組與資料集) | NetCDF-4 底層使用 HDF5 | 固定區塊陣列與表格 | 雲端原生分塊目錄格式 |
| 資料集切片 | 超快速二進位超矩形讀取 | 快速超矩形讀取 | 直接區塊索引 | 雲端平行分塊擷取 |
| 機器學習用途 | 模型權重的標準(Keras .h5) | 在 AI 中很少使用 | 無 | 逐漸增加的 AI 訓練資料集用途 |
| 主要生態系統 | NCSA、超級運算、Python h5py | NOAA、氣象學、海洋學 | NASA、天文學、望遠鏡 | 雲端原生資料科學 |
常見損壞模式與十六進位修復指南
Python h5py 錯誤:「Unable to open file (file signature not found)」(無法開啟檔案,找不到檔案簽章)。
根本原因: 檔案開頭處的 8 位元組超級區塊損壞。
修復: 檢查超級區塊位移,或使用 File2File.app HDF5 工具復原資料集。
安全性分析與解析器攻擊向量
官方 libhdf5 函式庫會剖析複雜的 B 樹與堆積表格,其中損壞的位移曾導致堆積溢位弱點。
已知攻擊向量
- 在 B 樹節點索引走訪期間發生堆積緩衝區溢位(例如 CVE-2021-37501)。
- 自訂解壓縮過濾器管線外掛程式中發生越界寫入。
- 透過循環群組連結迴圈造成阻斷服務。
防禦最佳實務: 使用受記憶體限制且具有沙箱機制的 WebAssembly 引擎來處理不受信任的 HDF5 檔案。
歷史起源與里程碑
2020HDF5 v1.12 引入了用於雲端物件儲存(Amazon S3)的虛擬物件層(VOL)連接器。
2006The HDF Group 從伊利諾大學 NCSA 分拆出來,成為獨立的非營利基金會。
1998NCSA 發布 HDF5,徹底重新設計了原始的 HDF4,消除了 2 GB 檔案大小限制。
主要優勢與優點
- 單一檔案中的完整檔案系統:將複雜的多 PB 資料集組織成類似目錄的具名群組與資料集。
- 高效能超矩形切片:無需讀取整個檔案,就能從 100 GB 的 5D 矩陣中讀取小型 2D 切片。
- 與現代科學 Python(h5py)、MATLAB、R 以及高效能 MPI 平行超級電腦深度整合。
技術限制與缺點
- 高規格複雜度使得在官方 libhdf5 C 函式庫之外的獨立剖析器實作變得困難。
- 傳統 HDF5 中的單一寫入者鎖定限制,在歷史上讓並行寫入工作流程變得很複雜。
- 損毀的超級區塊可能會導致整個階層樹無法存取。
有趣的技術冷知識
- HDF5 檔案簽章(\x89HDF\r\n\x1a\n)衍生自 PNG 簽章。The HDF Group 表示,這個簽章可用來識別 HDF5 檔案,並有助於偵測常見的檔案傳輸問題。
- 美國太空總署(NASA)的地球觀測系統(EOS)將每日數 PB 的衛星氣候資料儲存於 HDF5 格式中。
- Keras 和 TensorFlow 等深度學習框架普及了用於儲存類神經網路權重的 HDF5(.h5)格式。
常見技術問題
什麼是 HDF5 檔案?
HDF5 檔案就像是儲存在單一檔案中的完整檔案系統,旨在有效率地儲存大量的科學陣列、表格和機器學習模型。
.h5 與 .hdf5 有什麼不同?
沒有不同;.h5 與 .hdf5 是完全相同的階層式資料格式 5(Hierarchical Data Format 5)的兩種副檔名。
我該如何檢視 HDF5 檔案的內容?
您可以使用 HDFView、Python h5py,或線上使用 File2File.app 來檢查任何 HDF5 檔案內的群組、資料集與中繼資料。