Debian上制定HDFS存储策略的实操指南
一 规划与原则
二 环境与介质配置
<property>
<name>dfs.datanode.data.dir</name>
<value>
[SSD]/data/ssd0,[SSD]/data/ssd1,
[DISK]/data/hdd0,[DISK]/data/hdd1,
[ARCHIVE]/data/archive
</value>
</property>
sudo mount -t tmpfs -o size=32G tmpfs /mnt/dn-tmpfs
# /etc/fstab 追加:tmpfs /mnt/dn-tmpfs tmpfs defaults,size=32G 0 0
并在hdfs-site.xml增加:<property>
<name>dfs.datanode.data.dir</name>
<value>/data/ssd0,[RAM_DISK]/mnt/dn-tmpfs,/data/hdd0,[ARCHIVE]/data/archive</value>
</property>
<property>
<name>dfs.datanode.fsdataset.volume.choosing.policy</name>
<value>org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy</value>
</property>
<property>
<name>dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold</name>
<value>10737418240</value> <!-- 10GB -->
</property>
<property>
<name>dfs.datanode.available-space-volume-choosing-policy.balanced-space-preference-fraction</name>
<value>0.75</value> <!-- 高可用空间卷选择概率 -->
</property>
<property>
<name>dfs.datanode.max.locked.memory</name>
<value>34359738368</value> <!-- 32GB -->
</property>
同时在操作系统层面放开memlock限制(如ulimit -l不小于上述值)。完成后滚动重启DataNode并核对目录类型与容量上报。三 策略选择与映射
| 策略 | 放置规则 | 典型场景 | 关键注意 |
|---|---|---|---|
| HOT | 全部副本在DISK | 频繁访问/计算 | 默认策略 |
| WARM | 1个副本在DISK,其余在ARCHIVE | 近期可能访问 | 兼顾成本与可用性 |
| COLD | 全部副本在ARCHIVE | 归档/极少访问 | 计算能力有限 |
| ALL_SSD | 全部副本在SSD | 高IOPS/低时延 | 成本高 |
| ONE_SSD | 1个副本在SSD,其余在DISK | 加速关键子集 | 需SSD容量支撑 |
| LAZY_PERSIST | 单副本在RAM_DISK,后落DISK | 短任务/低延迟写 | 仅单副本有效,重启有极小数据丢失风险 |
hadoop fs -mkdir -p /data/{hot,warm,cold,ssd,archive}
hdfs storagepolicies -setStoragePolicy -path /data/hot -policy HOT
hdfs storagepolicies -setStoragePolicy -path /data/warm -policy WARM
hdfs storagepolicies -setStoragePolicy -path /data/cold -policy COLD
hdfs storagepolicies -setStoragePolicy -path /data/ssd -policy ALL_SSD
hdfs storagepolicies -setStoragePolicy -path /data/archive -policy COLD
hdfs storagepolicies -listPolicies
hdfs storagepolicies -getStoragePolicy -path /data/hot
hdfs mover -p /data/warm
hdfs mover -p /data/cold
提示:擦除编码文件的策略支持有限,优先使用ALL_SSD/HOT/WARM等;LAZY_PERSIST仅对单副本有意义。四 运维与优化要点
hdfs storagepolicies -getStoragePolicy -path <path>。ulimit -l配置。