大数据存储HDFS 数据块
Block 是什么?
文件被切成固定大小的块(默认 128MB),是 HDFS 存储和计算的最小单位
类比:把一本厚书拆成若干册,每册单独存放、单独借阅
为什么要切块
一个文件必须能放进单台机器的硬盘才能整存,切块之后就突破了单机容量上限。同时块可以分散到不同机器,读一个大文件时几百台机器一起传,吞吐自然就上去了。
块也是容错的单位:副本、校验、坏块修复都以块为粒度,坏一块只补一块,不用重传整个文件。
为什么是 128MB
HDFS 的块比普通文件系统(4KB)大得多,目的是让磁盘寻址时间只占传输时间的一小部分。经验值是寻址约 10ms,传输 128MB 约 1 秒,寻址开销只占 1%。
块太小 → NameNode 要记的元数据爆炸;块太大 → 并行度不够,最后一个块可能只有几 MB,仍然占一个 slot。所以大文件多、机器多时可以调到 256MB。
常见误区
块大小是“切分粒度”,不是“实际占用”。一个 1KB 的文件在 HDFS 里只占 1KB 数据,但会占掉 NameNode 一条元数据(约 150 字节)——这就是小文件问题的根源。