HDFS存储空间如何分配
导读:HDFS存储空间分配机制 一 总体架构与关键参数 存储以块 Block为基本单位(常见大小为128MB/256MB),文件被切分为多个块并分布到不同节点;每个块的副本数由副本因子决定,默认值为3。NameNode维护命名空间与块到Data...
HDFS存储空间分配机制
一 总体架构与关键参数
- 存储以块 Block为基本单位(常见大小为128MB/256MB),文件被切分为多个块并分布到不同节点;每个块的副本数由副本因子决定,默认值为3。NameNode维护命名空间与块到DataNode的映射,DataNode负责实际存储与上报心跳与块报告。
- 在单个DataNode上,可通过dfs.datanode.data.dir配置多个本地目录(卷,volumes),通常映射到不同磁盘/设备,实现容量扩展与并发写入。
- 写入时由DataNode的卷选择策略决定块写入哪个本地卷,常用策略包括轮询(RoundRobinVolumeChoosingPolicy)与可用空间优先(AvailableSpaceVolumeChoosingPolicy);后者自**Hadoop 2.1.0(HDFS-1804)**引入,默认启用。关键参数:
- dfs.datanode.fsdataset.volume.choosing.policy:卷选择策略类。
- dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold:卷间可用空间“均衡阈值”,默认10GB;当各卷可用空间差距在该阈值内时退化为轮询。
- dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction:写入高可用空间卷的概率,默认0.75(建议0.5–1.0)。
二 节点内卷分配策略
- 轮询策略(RoundRobin)
- 按配置的卷顺序循环选择;若当前卷可用空间不足以容纳一个块,则继续轮询,直至找到可用卷;若遍历完仍无可用卷,抛出DiskOutOfSpaceException。优点是简单、各卷被均匀使用;缺点是删除/写入不均可能导致卷间数据不均衡。
- 可用空间优先策略(AvailableSpaceVolumeChoosingPolicy)
- 计算各卷可用空间的最大值与最小值,若差值 ≤ balanced-space-threshold(10GB),使用轮询;否则将卷分为highAvailableVolumes与lowAvailableVolumes两组(阈值=最小可用空间+10GB)。
- 分配逻辑:
- 若当前块大小 > low组的最大可用空间,则从high组轮询选择卷;
- 否则以概率balanced-space-preference-fraction(默认0.75)从high组选择,以1−该概率从low组选择,从而在避免“小块撑满小盘”的同时,倾向写入剩余空间更大的卷。
三 节点间副本放置与容量利用
- 副本放置(默认策略)
- 若客户端运行在DataNode上:副本1写入本机;副本2写入不同机架;副本3写入与副本2同机架的另一节点;其余副本随机挑选。
- 若客户端不在DataNode上:副本1随机选一节点;副本2写入不同机架;副本3写入与副本2同机架的另一节点;其余副本随机挑选。
- 默认副本因子=3,兼顾容错与读取就近性。
- 容量与空间放大
- 逻辑文件大小记为L,块大小B,副本因子R,则占用存储≈L × R;同时需考虑副本放置约束与机架感知带来的额外跨节点写入与网络开销。
- 例如:文件1TB、块256MB、副本3,理论占用≈3TB(实际因块对齐、元数据与副本重建略有差异)。
四 不均衡治理与运维要点
- 节点内卷不均衡
- 即使使用“可用空间优先”,长期运行或新增/更换磁盘仍可能导致卷间数据不均,进而引发I/O热点。Hadoop 3.0+提供HDFS Intra-DataNode磁盘平衡器(Disk Balancer),可在DataNode在线状态下按指标在卷间迁移块,缓解热点与不均衡。
- 节点间容量不均衡
- 使用HDFS Balancer在节点间迁移块,均衡集群容量使用率,与磁盘平衡器互补(前者是inter-DataNode,后者是intra-DataNode)。
- 配置与变更建议
- 多盘部署时,将dfs.datanode.data.dir指向不同磁盘;根据磁盘容量与负载选择卷选择策略与阈值;新增/更换磁盘后优先运行磁盘平衡器,再观察容量与I/O分布。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: HDFS存储空间如何分配
本文地址: https://pptw.com/jishu/751181.html
