目录大纲
Part01-基础概念与理论知识
1.1 冷热数据概念
1.2 HDFS存储策略
1.3 异构存储原理
Part02-生产环境规划与建议
2.1 存储介质规划
2.2 数据生命周期规划
2.3 存储成本规划
Part03-生产环境项目实施方案
3.1 异构存储配置
3.2 存储策略设置
3.3 数据迁移实施
3.4 冷数据归档
Part04-生产案例与实战讲解
4.1 日志数据分层存储案例
4.2 历史数据归档案例
4.3 存储成本优化案例
Part05-风哥经验总结与分享
5.1 冷热分离最佳实践
5.2 存储优化经验总结
Part01-基础概念与理论知识
1.1 冷热数据概念
冷热数据是根据访问频率划分的数据类型。更多视频教程www.fgedu.net.cn 热数据是频繁访问的数据,冷数据是很少访问的数据。合理区分冷热数据可以优化存储成本和访问性能。
1.2 HDFS存储策略
HDFS提供了多种存储策略,支持将数据存储在不同类型的介质上。学习交流加群风哥微信: itpux-com
– Hot:热数据,使用RAM_DISK或SSD
– Warm:温数据,使用SSD或DISK
– Cold:冷数据,使用ARCHIVE
– All_SSD:全部使用SSD
– One_SSD:一个副本在SSD,其他在DISK
– Lazy_Persist:单副本在RAM_DISK
1.3 异构存储原理
HDFS异构存储允许DataNode配置不同类型的存储介质。from bigdata视频:www.itpux.com 每个DataNode可以配置多种存储类型,HDFS根据存储策略自动将数据块放置到合适的存储介质上。
hdfs storagepolicies -listPolicies
BlockStoragePolicy{HOT:6, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}
BlockStoragePolicy{WARM:5, storageTypes=[DISK, ARCHIVE], creationFallbacks=[DISK, ARCHIVE], replicationFallbacks=[DISK, ARCHIVE]}
BlockStoragePolicy{COLD:2, storageTypes=[ARCHIVE], creationFallbacks=[], replicationFallbacks=[]}
BlockStoragePolicy{ALL_SSD:12, storageTypes=[SSD], creationFallbacks=[DISK], replicationFallbacks=[DISK]}
BlockStoragePolicy{ONE_SSD:10, storageTypes=[SSD, DISK], creationFallbacks=[SSD, DISK], replicationFallbacks=[SSD, DISK]}
BlockStoragePolicy{LAZY_PERSIST:15, storageTypes=[RAM_DISK, DISK], creationFallbacks=[DISK], replicationFallbacks=[DISK]}
Part02-生产环境规划与建议
2.1 存储介质规划
存储介质规划需要考虑性能、成本和容量。更多学习教程公众号风哥教程itpux_com
– 热数据层:SSD或NVMe,容量约占总存储10%
– 温数据层:高性能HDD,容量约占30%
– 冷数据层:大容量HDD或归档存储,约占60%
2.2 数据生命周期规划
数据生命周期规划定义了数据从产生到归档的全过程。学习交流加群风哥QQ113257174
hdfs dfs -du -h /bigdata/warehouse/fgedu
20.0 G 60.0 G /bigdata/warehouse/fgedu/ods # 最近7天数据
30.0 G 90.0 G /bigdata/warehouse/fgedu/dwd # 最近30天数据
50.0 G 150.0 G /bigdata/warehouse/fgedu/dws # 最近90天数据
100.0 G 300.0 G /bigdata/warehouse/fgedu/ads # 历史数据
2.3 存储成本规划
存储成本规划需要平衡性能需求和成本控制。风哥提示:合理使用冷热分离可以显著降低存储成本。
– SSD存储:约2元/GB/月
– 高性能HDD:约0.5元/GB/月
– 归档存储:约0.1元/GB/月
– 通过冷热分离可节省50%以上存储成本
Part03-生产环境项目实施方案
3.1 异构存储配置
3.1.1 配置DataNode存储类型
cat /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml | grep -A10 “dfs.datanode.data.dir”
<property>
<name>dfs.datanode.data.dir</name>
<value>[SSD]file:///bigdata/fgdata/ssd,
[DISK]file:///bigdata/fgdata/disk,
[ARCHIVE]file:///bigdata/fgdata/archive</value>
</property>
<!– 存储策略生效 –>
<property>
<name>dfs.storage.policy.enabled</name>
<value>true</value>
</property>
3.1.2 验证存储类型配置
hdfs dfsadmin -report | grep -A10 “Storage information”
Storage information:
Datanode storage types: [SSD, DISK, ARCHIVE]
Datanode storage capacities: [500GB, 2TB, 10TB]
Datanode storage used: [100GB, 500GB, 2TB]
Datanode storage remaining: [400GB, 1.5TB, 8TB]
3.2 存储策略设置
3.2.1 设置目录存储策略
hdfs storagepolicies -setStoragePolicy -path /bigdata/warehouse/fgedu/ods -policy HOT
# 设置温数据目录策略
hdfs storagepolicies -setStoragePolicy -path /bigdata/warehouse/fgedu/dwd -policy WARM
# 设置冷数据目录策略
hdfs storagepolicies -setStoragePolicy -path /bigdata/warehouse/fgedu/archive -policy COLD
Set storage policy HOT on /bigdata/warehouse/fgedu/ods
Set storage policy WARM on /bigdata/warehouse/fgedu/dwd
Set storage policy COLD on /bigdata/warehouse/fgedu/archive
3.2.2 查看存储策略
hdfs storagepolicies -getStoragePolicy -path /bigdata/warehouse/fgedu/ods
hdfs storagepolicies -getStoragePolicy -path /bigdata/warehouse/fgedu/dwd
hdfs storagepolicies -getStoragePolicy -path /bigdata/warehouse/fgedu/archive
BlockStoragePolicy{HOT:6, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}
BlockStoragePolicy{WARM:5, storageTypes=[DISK, ARCHIVE], creationFallbacks=[DISK, ARCHIVE], replicationFallbacks=[DISK, ARCHIVE]}
BlockStoragePolicy{COLD:2, storageTypes=[ARCHIVE], creationFallbacks=[], replicationFallbacks=[]}
3.3 数据迁移实施
3.3.1 执行数据迁移
hdfs mover -p /bigdata/warehouse/fgedu/archive
# 查看迁移进度
hdfs mover -p /bigdata/warehouse/fgedu/archive 2>&1 | grep “Mover”
2024-01-16 16:00:00,000 INFO mover.Mover: Mover is running
2024-01-16 16:00:05,123 INFO mover.Mover: Processing /bigdata/warehouse/fgedu/archive/data_2023.parquet
2024-01-16 16:00:10,456 INFO mover.Mover: Moving block blk_1073741825 from DISK to ARCHIVE
2024-01-16 16:30:00,000 INFO mover.Mover: Mover completed successfully
# 迁移统计
Total files: 1000
Total blocks: 3000
Blocks moved: 3000
Time taken: 30 minutes
3.3.2 验证迁移结果
hdfs fsck /bigdata/warehouse/fgedu/archive/data_2023.parquet -files -blocks -locations | grep “StorageType”
StorageType: ARCHIVE
StorageType: ARCHIVE
StorageType: ARCHIVE
# 所有副本已迁移到ARCHIVE存储
3.4 冷数据归档
3.4.1 创建归档目录
hdfs dfs -mkdir -p /bigdata/archive/fgedu/2023
hdfs dfs -mkdir -p /bigdata/archive/fgedu/2022
# 设置归档策略
hdfs storagepolicies -setStoragePolicy -path /bigdata/archive/fgedu -policy COLD
# 策略设置成功
Set storage policy COLD on /bigdata/archive/fgedu
3.4.2 执行数据归档
# archive_data.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
YEAR=$(date -d “1 year ago” +%Y)
SRC_DIR=”/bigdata/warehouse/fgedu/ads”
DST_DIR=”/bigdata/archive/fgedu/${YEAR}”
# 移动历史数据到归档目录
hdfs dfs -mkdir -p ${DST_DIR}
hdfs dfs -mv ${SRC_DIR}/data_${YEAR}* ${DST_DIR}/
# 执行存储迁移
hdfs mover -p ${DST_DIR}
# 降低副本数节省空间
hdfs dfs -setrep 2 ${DST_DIR}
echo “Archive completed for year ${YEAR}”
./archive_data.sh
Archive completed for year 2023
# 验证归档结果
hdfs dfs -ls /bigdata/archive/fgedu/2023/
Found 12 items
-rw-r–r– 2 fgedu fgedu 1073741824 2024-01-16 16:45 /bigdata/archive/fgedu/2023/data_202301.parquet
-rw-r–r– 2 fgedu fgedu 1073741824 2024-01-16 16:45 /bigdata/archive/fgedu/2023/data_202302.parquet
…
Part04-生产案例与实战讲解
4.1 日志数据分层存储案例
日志数据是典型的冷热数据分离场景。更多视频教程www.fgedu.net.cn
# log_data_tiering.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
LOG_DIR=”/bigdata/logs”
# 创建分层目录
hdfs dfs -mkdir -p ${LOG_DIR}/hot
hdfs dfs -mkdir -p ${LOG_DIR}/warm
hdfs dfs -mkdir -p ${LOG_DIR}/cold
# 设置存储策略
hdfs storagepolicies -setStoragePolicy -path ${LOG_DIR}/hot -policy HOT
hdfs storagepolicies -setStoragePolicy -path ${LOG_DIR}/warm -policy WARM
hdfs storagepolicies -setStoragePolicy -path ${LOG_DIR}/cold -policy COLD
# 数据分层规则
# 最近3天:热数据
# 3-30天:温数据
# 30天以上:冷数据
TODAY=$(date +%Y%m%d)
HOT_DATE=$(date -d “3 days ago” +%Y%m%d)
WARM_DATE=$(date -d “30 days ago” +%Y%m%d)
# 移动数据到对应层级
for dir in $(hdfs dfs -ls ${LOG_DIR} | grep “^d” | awk ‘{print $NF}’); do
DIR_DATE=$(basename ${dir} | grep -o “[0-9]\{8\}”)
if [ -n “${DIR_DATE}” ]; then
if [ “${DIR_DATE}” -ge “${HOT_DATE}” ]; then
hdfs dfs -mv ${dir} ${LOG_DIR}/hot/
elif [ “${DIR_DATE}” -ge “${WARM_DATE}” ]; then
hdfs dfs -mv ${dir} ${LOG_DIR}/warm/
else
hdfs dfs -mv ${dir} ${LOG_DIR}/cold/
fi
fi
done
./log_data_tiering.sh
# 验证分层结果
hdfs dfs -ls ${LOG_DIR}/hot/
Found 3 items
drwxr-xr-x – hdfs hdfs 0 2024-01-16 17:00 /bigdata/logs/hot/20240116
drwxr-xr-x – hdfs hdfs 0 2024-01-16 17:00 /bigdata/logs/hot/20240115
drwxr-xr-x – hdfs hdfs 0 2024-01-16 17:00 /bigdata/logs/hot/20240114
hdfs dfs -ls ${LOG_DIR}/cold/ | head -5
Found 50 items
drwxr-xr-x – hdfs hdfs 0 2024-01-16 17:00 /bigdata/logs/cold/20231201
drwxr-xr-x – hdfs hdfs 0 2024-01-16 17:00 /bigdata/logs/cold/20231202
…
4.2 历史数据归档案例
历史数据归档是数据治理的重要环节。学习交流加群风哥微信: itpux-com
# 1. 识别需要归档的数据
hdfs dfs -ls -R /bigdata/warehouse/fgedu/ads/ | grep “2022”
# 2. 创建归档目录
hdfs dfs -mkdir -p /bigdata/archive/fgedu/2022
# 3. 移动数据
hdfs dfs -mv /bigdata/warehouse/fgedu/ads/data_2022* /bigdata/archive/fgedu/2022/
# 4. 设置存储策略
hdfs storagepolicies -setStoragePolicy -path /bigdata/archive/fgedu/2022 -policy COLD
# 5. 执行迁移
hdfs mover -p /bigdata/archive/fgedu/2022
# 6. 降低副本数
hdfs dfs -setrep -R 2 /bigdata/archive/fgedu/2022
# 数据识别
-rw-r–r– 3 fgedu fgedu 1073741824 2022-01-01 10:00 /bigdata/warehouse/fgedu/ads/data_202201.parquet
-rw-r–r– 3 fgedu fgedu 1073741824 2022-02-01 10:00 /bigdata/warehouse/fgedu/ads/data_202202.parquet
…
# 归档完成
Mover completed successfully
# 存储空间节省
# 原来:3副本 * 12个月 * 1GB = 36GB
# 归档后:2副本 * 12个月 * 1GB = 24GB
# 节省:12GB(33%)
4.3 存储成本优化案例
4.3.1 存储成本分析
#!/bin/bash
# storage_cost_analysis.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
echo “=== HDFS Storage Cost Analysis ===”
# SSD存储成本(2元/GB/月)
SSD_COST=2
# DISK存储成本(0.5元/GB/月)
DISK_COST=0.5
# ARCHIVE存储成本(0.1元/GB/月)
ARCHIVE_COST=0.1
# 获取存储使用情况
SSD_USED=$(hdfs dfsadmin -report | grep “SSD” | awk ‘{sum+=$3} END {print sum/1024/1024/1024}’)
DISK_USED=$(hdfs dfsadmin -report | grep “DISK” | awk ‘{sum+=$3} END {print sum/1024/1024/1024}’)
ARCHIVE_USED=$(hdfs dfsadmin -report | grep “ARCHIVE” | awk ‘{sum+=$3} END {print sum/1024/1024/1024}’)
echo “SSD Storage: ${SSD_USED}GB, Cost: $(echo “${SSD_USED} * ${SSD_COST}” | bc)元/月”
echo “DISK Storage: ${DISK_USED}GB, Cost: $(echo “${DISK_USED} * ${DISK_COST}” | bc)元/月”
echo “ARCHIVE Storage: ${ARCHIVE_USED}GB, Cost: $(echo “${ARCHIVE_USED} * ${ARCHIVE_COST}” | bc)元/月”
TOTAL_COST=$(echo “${SSD_USED}*${SSD_COST} + ${DISK_USED}*${DISK_COST} + ${ARCHIVE_USED}*${ARCHIVE_COST}” | bc)
echo “Total Monthly Cost: ${TOTAL_COST}元”
=== HDFS Storage Cost Analysis ===
SSD Storage: 100GB, Cost: 200元/月
DISK Storage: 500GB, Cost: 250元/月
ARCHIVE Storage: 2000GB, Cost: 200元/月
Total Monthly Cost: 650元/月
# 对比优化前(全部DISK存储)
# 优化前:2600GB * 0.5 = 1300元/月
# 优化后:650元/月
# 节省:650元/月(50%)
Part05-风哥经验总结与分享
5.1 冷热分离最佳实践
在实际生产环境中,冷热数据分离需要注意以下几点:from bigdata视频:www.itpux.com
1. 根据数据访问频率制定分层策略
2. 合理配置各层存储容量比例
3. 建立自动化数据迁移机制
4. 定期审查存储策略效果
5. 监控存储成本变化
5.2 存储优化经验总结
5.2.1 存储优化建议
– 避免过度分层,增加管理复杂度
– 迁移操作避开业务高峰期
– 监控迁移过程对集群性能的影响
– 保留足够的热数据存储容量
– 定期验证冷数据可访问性
5.2.2 自动化运维脚本
# auto_tiering.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# 自动化数据分层脚本
# 每天执行一次
LOG_FILE=”/bigdata/logs/auto_tiering_$(date +%Y%m%d).log”
echo “$(date): Starting auto tiering process” >> ${LOG_FILE}
# 1. 热数据到温数据(3天后)
HOT_TO_WARM_DAYS=3
find /bigdata/warehouse/fgedu/ods -mtime +${HOT_TO_WARM_DAYS} -exec hdfs dfs -mv {} /bigdata/warehouse/fgedu/dwd/ \;
# 2. 温数据到冷数据(30天后)
WARM_TO_COLD_DAYS=30
find /bigdata/warehouse/fgedu/dwd -mtime +${WARM_TO_COLD_DAYS} -exec hdfs dfs -mv {} /bigdata/archive/fgedu/ \;
# 3. 执行存储迁移
hdfs mover -p /bigdata/archive/fgedu >> ${LOG_FILE} 2>&1
# 4. 降低冷数据副本数
hdfs dfs -setrep -R 2 /bigdata/archive/fgedu >> ${LOG_FILE} 2>&1
echo “$(date): Auto tiering completed” >> ${LOG_FILE}
Wed Jan 17 02:00:00 CST 2024: Starting auto tiering process
Wed Jan 17 02:00:05 CST 2024: Moving data from hot to warm
Wed Jan 17 02:00:10 CST 2024: Moving data from warm to cold
Wed Jan 17 02:30:00 CST 2024: Mover completed
Wed Jan 17 02:35:00 CST 2024: Auto tiering completed
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
