目录大纲
Part01-基础概念与理论知识
1.1 HDFS副本机制概述
1.2 副本放置策略原理
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 HDFS副本机制概述
HDFS通过副本机制保证数据可靠性,每个数据块默认有3个副本。更多视频教程www.fgedu.net.cn 副本分布在不同的DataNode上,当某个DataNode故障时,可以从其他副本恢复数据。
1.2 副本放置策略原理
HDFS采用智能的副本放置策略,平衡数据可靠性和读写性能。学习交流加群风哥微信: itpux-com 默认策略考虑机架感知,将副本分布在不同机架上。
1. 第一个副本:选择写入客户端所在DataNode(同机架)
2. 第二个副本:选择不同机架的随机DataNode
3. 第三个副本:选择与第二个副本同机架的不同DataNode
1.3 数据校验机制
HDFS使用校验和(Checksum)机制检测数据损坏。from bigdata视频:www.itpux.com 每个数据块都有对应的校验和文件,读取时自动校验数据完整性。
hdfs getconf -confKey dfs.bytes-per-checksum
512
Part02-生产环境规划与建议
2.1 副本数规划建议
副本数设置需要平衡存储成本和数据可靠性。更多学习教程公众号风哥教程itpux_com
– 3副本:生产环境标准配置,允许1个节点故障
– 2副本:存储成本敏感场景,可靠性较低
– 5副本:核心数据,高可靠性要求
– 1副本:临时数据,可容忍丢失
2.2 数据安全策略规划
数据安全策略包括副本管理、校验机制、快照备份等。学习交流加群风哥QQ113257174
hdfs getconf -confKey dfs.replication
3
2.3 机架感知配置
机架感知是副本放置策略的基础。风哥提示:正确配置机架感知可以提高数据可靠性。
hdfs getconf -confKey net.topology.script.file.name
# 查看当前拓扑
hdfs dfsadmin -printTopology
/bigdata/app/hadoop/etc/hadoop/rack_topology.sh
# 当前拓扑结构
Rack: /rack1
192.168.1.101:9866 (fgedu01.net.cn)
192.168.1.102:9866 (fgedu02.net.cn)
Rack: /rack2
192.168.1.103:9866 (fgedu03.net.cn)
192.168.1.104:9866 (fgedu04.net.cn)
Part03-生产环境项目实施方案
3.1 副本系数配置与管理
3.1.1 全局副本配置
cat /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml | grep -A3 “dfs.replication”
<name>dfs.replication</name>
<value>3</value>
</property>
<!– 最小副本数 –>
<property>
<name>dfs.namenode.replication.min</name>
<value>1</value>
</property>
<!– 最大副本数 –>
<property>
<name>dfs.replication.max</name>
<value>512</value>
</property>
3.1.2 文件级副本设置
hdfs dfs -D dfs.replication=5 -put /bigdata/local_data/critical_data.parquet /bigdata/warehouse/fgedu/
# 修改已有文件副本数
hdfs dfs -setrep 5 /bigdata/warehouse/fgedu/critical_data.parquet
# 递归修改目录副本数
hdfs dfs -setrep -R 3 /bigdata/warehouse/fgedu/logs/
2024-01-16 08:00:00,000 INFO hdfs.DFSClient: Successfully put file with replication 5
# 副本数修改成功
Replication 5 set: /bigdata/warehouse/fgedu/critical_data.parquet
# 递归修改完成
Replication 3 set: /bigdata/warehouse/fgedu/logs/ (and 100 files under it)
3.1.3 查看文件副本信息
hdfs dfs -ls /bigdata/warehouse/fgedu/critical_data.parquet
# 查看详细副本信息
hdfs fsck /bigdata/warehouse/fgedu/critical_data.parquet -files -blocks -locations
-rw-r–r– 5 fgedu fgedu 1073741824 2024-01-16 08:05 /bigdata/warehouse/fgedu/critical_data.parquet
# 详细副本位置
/bigdata/warehouse/fgedu/critical_data.parquet 1073741824 bytes, 8 block(s):
0. BP-1234567890:blk_1073741825_1001 len=134217728 Live_repl=5
DatanodeInfoWithStorage[192.168.1.101:9866,DS-1]
DatanodeInfoWithStorage[192.168.1.102:9866,DS-2]
DatanodeInfoWithStorage[192.168.1.103:9866,DS-3]
DatanodeInfoWithStorage[192.168.1.104:9866,DS-4]
DatanodeInfoWithStorage[192.168.1.105:9866,DS-5]
3.2 副本放置策略配置
3.2.1 自定义放置策略
hdfs getconf -confKey dfs.block.replicator.classname
# 配置自定义放置策略
cat /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml | grep -A3 “replicator”
org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault
# 可选策略配置
<property>
<name>dfs.block.replicator.classname</name>
<value>org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicyDefault</value>
</property>
3.2.2 机架感知脚本配置
cat /bigdata/app/hadoop/etc/hadoop/rack_topology.sh
# rack_topology.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
# IP到机架的映射
while [ $# -gt 0 ] ; do
nodeIp=$1
case “$nodeIp” in
192.168.1.101|192.168.1.102)
echo “/rack1”;;
192.168.1.103|192.168.1.104)
echo “/rack2”;;
192.168.1.105|192.168.1.106)
echo “/rack3”;;
*)
echo “/default-rack”;;
esac
shift
done
3.3 数据校验与恢复
3.3.1 数据校验操作
hdfs fsck /bigdata/warehouse/fgedu/ -files -blocks
# 检查数据块损坏
hdfs fsck /bigdata/warehouse/fgedu/ -list-corruptfileblocks
Connecting to namenode via http://fgedu01.net.cn:9870
FSCK started by hdfs from /192.168.1.100
/bigdata/warehouse/fgedu/critical_data.parquet: OK
/bigdata/warehouse/fgedu/logs/app.log: OK
…
Status: HEALTHY
Total size: 10737418240 B
Total blocks: 80
Total files: 10
# 损坏文件列表
The filesystem under path ‘/bigdata/warehouse/fgedu/’ has 0 CORRUPT files
3.3.2 数据恢复操作
hdfs debug recoverLease -path /bigdata/warehouse/fgedu/data.parquet -retries 3
# 触发副本重新平衡
hdfs balancer -threshold 5
Recover lease successfully for /bigdata/warehouse/fgedu/data.parquet
# 平衡器执行
24/01/16 08:30:00 INFO balancer.Balancer: namenodes = [hdfs://fgeduns]
24/01/16 08:30:05 INFO balancer.Balancer: dispatching 1000 blocks to 5 nodes
24/01/16 08:45:00 INFO balancer.Balancer: Balancing took 15 minutes
Cluster is balanced.
3.4 数据安全加固
3.4.1 配置回收站
cat /bigdata/app/hadoop/etc/hadoop/core-site.xml | grep -A3 “trash”
<property>
<name>fs.trash.interval</name>
<value>1440</value>
</property>
<!– 回收站检查间隔 –>
<property>
<name>fs.trash.checkpoint.interval</name>
<value>60</value>
</property>
3.4.2 配置快照
hdfs dfsadmin -allowSnapshot /bigdata/warehouse/fgedu
# 创建快照
hdfs dfs -createSnapshot /bigdata/warehouse/fgedu backup_20240116
# 查看快照
hdfs dfs -ls /bigdata/warehouse/fgedu/.snapshot/
Allowing snaphot on /bigdata/warehouse/fgedu succeeded
# 快照创建成功
Created snapshot /bigdata/warehouse/fgedu/.snapshot/backup_20240116
# 快照列表
Found 1 items
drwxr-xr-x – hdfs hdfs 0 2024-01-16 08:40 /bigdata/warehouse/fgedu/.snapshot/backup_20240116
Part04-生产案例与实战讲解
4.1 副本不足修复案例
副本不足是生产环境常见问题。更多视频教程www.fgedu.net.cn 以下是副本不足修复的实战案例。
hdfs fsck /bigdata/warehouse/fgedu/ -files -blocks | grep “UNDER”
blk_1073741830_1005: UNDER_REPLICATED (replication=3, live=2)
blk_1073741835_1010: UNDER_REPLICATED (replication=3, live=1)
# 方法1:等待自动修复
# NameNode会自动检测并触发副本复制
# 方法2:手动触发修复
hdfs debug recoverLease -path /bigdata/warehouse/fgedu/data.parquet
# 方法3:调整副本位置
hdfs dfs -setrep 3 /bigdata/warehouse/fgedu/data.parquet
hdfs fsck /bigdata/warehouse/fgedu/data.parquet
Status: HEALTHY
Total blocks: 8
UNDER_REPLICATED blocks: 0
4.2 数据损坏恢复案例
数据损坏是严重问题,需要及时发现和恢复。学习交流加群风哥微信: itpux-com
hdfs fsck / -list-corruptfileblocks
# 查看损坏详情
hdfs fsck /bigdata/warehouse/fgedu/corrupt_data.parquet -files -blocks -locations
The filesystem under path ‘/’ has 2 CORRUPT files:
/bigdata/warehouse/fgedu/corrupt_data.parquet
/bigdata/warehouse/fgedu/logs/error.log
# 损坏详情
CORRUPT block BP-1234567890:blk_1073741840_1015 in /bigdata/warehouse/fgedu/corrupt_data.parquet
Missing replicas: 1
# 方法1:从其他副本恢复
hdfs debug recoverLease -path /bigdata/warehouse/fgedu/corrupt_data.parquet
# 方法2:删除损坏文件并从备份恢复
hdfs dfs -rm /bigdata/warehouse/fgedu/corrupt_data.parquet
hdfs dfs -cp /bigdata/backup/fgedu/corrupt_data.parquet /bigdata/warehouse/fgedu/
# 方法3:从快照恢复
hdfs dfs -cp /bigdata/warehouse/fgedu/.snapshot/backup_20240116/corrupt_data.parquet /bigdata/warehouse/fgedu/
Deleted /bigdata/warehouse/fgedu/corrupt_data.parquet
Copied /bigdata/backup/fgedu/corrupt_data.parquet to /bigdata/warehouse/fgedu/corrupt_data.parquet
# 验证恢复结果
hdfs fsck /bigdata/warehouse/fgedu/corrupt_data.parquet
Status: HEALTHY
4.3 数据安全审计案例
4.3.1 配置审计日志
cat /bigdata/app/hadoop/etc/hadoop/hdfs-site.xml | grep -A3 “audit”
<property>
<name>dfs.namenode.audit.log.enabled</name>
<value>true</value>
</property>
<!– 审计日志格式 –>
<property>
<name>dfs.namenode.audit.log.format</name>
<value>json</value>
</property>
4.3.2 查看审计日志
tail -100 /bigdata/app/hadoop/logs/hdfs-audit.log | grep “fgedu”
{“timestamp”:”2024-01-16T09:00:00,000″,”user”:”fgedu”,”ip”:”192.168.1.100″,”cmd”:”create”,”src”:”/bigdata/warehouse/fgedu/test.txt”,”dst”:null,”perm”:”fgedu:fgedu:rw-r–r–“}
{“timestamp”:”2024-01-16T09:00:05,000″,”user”:”fgedu”,”ip”:”192.168.1.100″,”cmd”:”setrep”,”src”:”/bigdata/warehouse/fgedu/critical_data.parquet”,”dst”:null,”replication”:5}
{“timestamp”:”2024-01-16T09:00:10,000″,”user”:”hdfs”,”ip”:”192.168.1.101″,”cmd”:”delete”,”src”:”/bigdata/warehouse/fgedu/temp”,”dst”:null}
Part05-风哥经验总结与分享
5.1 副本管理最佳实践
在实际生产环境中,副本管理需要注意以下几点:from bigdata视频:www.itpux.com
1. 生产环境默认使用3副本
2. 核心数据使用5副本或更高
3. 临时数据可使用1-2副本节省空间
4. 定期检查副本健康状态
5. 配置机架感知,提高数据可靠性
5.2 数据安全保障经验
5.2.1 数据备份策略
#!/bin/bash
# hdfs_backup.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
DATE=$(date +%Y%m%d)
BACKUP_DIR=”/bigdata/backup/hdfs/${DATE}”
# 创建快照
hdfs dfs -createSnapshot /bigdata/warehouse/fgedu daily_${DATE}
# 导出元数据
hdfs dfsadmin -metasave meta_${DATE}.txt
# 复制关键数据到备份集群
hadoop distcp -update /bigdata/warehouse/fgedu hdfs://backup-cluster/backup/fgedu_${DATE}
Created snapshot /bigdata/warehouse/fgedu/.snapshot/daily_20240116
Meta data saved to meta_20240116.txt
DistCp completed: 5000 files, 100GB
5.2.2 数据安全检查清单
– 每日检查副本健康状态
– 每周检查数据块损坏情况
– 每月执行数据恢复演练
– 定期更新机架感知配置
– 监控存储空间使用率
#!/bin/bash
# safety_check.sh
# from:www.itpux.com.qq113257174.wx:itpux-com
# web: http://www.fgedu.net.cn
echo “=== HDFS Data Safety Check ===”
echo “Date: $(date)”
# 检查集群健康状态
hdfs fsck / -files -blocks | tail -5
# 检查损坏文件
hdfs fsck / -list-corruptfileblocks
# 检查副本不足
hdfs dfsadmin -report | grep -A5 “Under replicated blocks”
=== HDFS Data Safety Check ===
Date: Mon Jan 16 09:30:00 CST 2024
Status: HEALTHY
Total size: 107374182400 B
Total blocks: 800
Total files: 100
The filesystem has 0 CORRUPT files.
Under replicated blocks: 0
本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html
