HDFS均衡操作快速参考

快速判断是否需要均衡 # 计算当前均衡度(标准差) hdfs dfsadmin -report | python3 -c " import sys, re used_percents = [] for line in sys.stdin: if 'DFS Used%:' in line: percent = float(re.search(r'(\d+\.?\d*)%', line).group(1)) used_percents.append(percent) if used_percents: avg = sum(used_percents) / len(used_percents) variance = sum((x - avg) ** 2 for x in used_percents) / len(used_percents) std_dev = variance ** 0.5 print(f'标准差: {std_dev:.2f}%') if std_dev > 15: print('⚠️ 需要立即均衡') elif std_dev > 10: print('⚠️ 建议进行均衡') else: print('✅ 集群已均衡') " 常用均衡命令 基本均衡 # 标准均衡(推荐) nohup hdfs balancer -threshold 10 -policy datanode > /tmp/balancer.log 2>&1 & # 严格均衡 nohup hdfs balancer -threshold 5 -policy datanode > /tmp/balancer.log 2>&1 & # 宽松均衡 nohup hdfs balancer -threshold 15 -policy datanode > /tmp/balancer.log 2>&1 & 高级均衡 # 排除特定节点 nohup hdfs balancer -threshold 10 -exclude 192.168.1.100,192.168.1.101 > /tmp/balancer.log 2>&1 & # 只均衡特定节点 nohup hdfs balancer -threshold 10 -include 192.168.1.102,192.168.1.103 > /tmp/balancer.log 2>&1 & # 指定源节点 nohup hdfs balancer -threshold 10 -source 192.168.1.100,192.168.1.101 > /tmp/balancer.log 2>&1 & 参数说明 参数 用途 默认值 推荐值 -threshold 均衡阈值(%) 10 5-15 -policy 均衡策略 datanode datanode -exclude 排除节点 - 维护节点 -include 包含节点 - 特定节点 -source 源节点 - 高负载节点 -idleiterations 空闲迭代次数 5 3-5 监控命令 检查均衡状态 # 检查均衡进程 ps aux | grep balancer # 查看均衡日志 tail -f /tmp/balancer.log # 实时监控均衡进度 python3 /tmp/monitor_hdfs_balancer.py 停止均衡 # 查找并停止均衡进程 pkill -f "hdfs.*balancer" # 或者通过PID停止 kill $(cat /tmp/balancer.pid) 性能优化 调整均衡带宽 <!-- 在hdfs-site.xml中添加 --> <property> <name>dfs.datanode.balance.bandwidthPerSec</name> <value>52428800</value> <!-- 50MB/s --> </property> 系统优化 # 网络优化 echo 'net.core.rmem_max = 134217728' >> /etc/sysctl.conf echo 'net.core.wmem_max = 134217728' >> /etc/sysctl.conf sysctl -p # 磁盘优化 echo noop > /sys/block/sda/queue/scheduler 故障排除 常见问题 均衡进程无法启动 检查HDFS服务状态:hdfs dfsadmin -report 检查权限:whoami 查看日志:tail -f $HADOOP_LOG_DIR/hadoop-*-balancer-*.log ...

2024-05-01 · 3 分钟 · 431 字 · heyaohua