1. 首页 > Hadoop教程 > 正文

大数据教程FG179-Hadoop网络隔离故障演练实战

本文详细介绍Hadoop网络隔离故障演练实战,包括故障模拟、故障处理、故障恢复、网络分区脑裂等内容,适合大数据运维工程师使用。学习交流加群风哥微信: itpux-com

Part01-基础概念与理论知识

1.1 网络隔离概述

网络隔离是指节点之间网络不通,但节点本身还在运行。更多视频教程www.fgedu.net.cn

常见场景:

  • 交换机故障
  • 网线故障
  • 防火墙规则变更
  • 网络配置错误
  • 网络分区

1.2 故障影响

故障影响:

# 故障影响
1. DataNode网络隔离
– 该DataNode被标记为Dead
– 副本不足
– 触发复制
– 影响:可用,性能下降

2. NameNode网络隔离
– 如果是Active,触发脑裂
– 如果是Standby,可能选主
– 影响:严重,可能数据不一致

3. ZooKeeper网络隔离
– 无法选主
– 无法更新状态
– 影响:严重

4. 网络分区
– 脑裂风险
– 数据不一致
– 影响:非常严重

1.3 检测机制

检测机制:

风哥提示:Hadoop通过心跳机制检测节点存活。网络隔离会导致心跳超时,节点被标记为Dead。更多学习教程公众号风哥教程itpux_com

Part02-生产环境规划与建议

2.1 网络架构设计

网络架构设计:

# 网络架构
1. 网络冗余
– 双网卡
– 双交换机
– bonding
– 多路径

2. 网络分区
– VLAN划分
– 安全隔离
– 流量控制

3. 网络质量
– 低延迟
– 高带宽
– 低丢包

2.2 网络监控

网络监控:

监控指标:

  • 连通性:ping、telnet
  • 带宽:流量统计
  • 延迟:ping延迟
  • 丢包:丢包率

from bigdata视频:www.itpux.com

2.3 高可用设计

高可用设计:

# 高可用设计
1. 节点HA
– NameNode HA
– ResourceManager HA
– HBase Master HA

2. 网络HA
– 双网卡
– 双交换机
– 冗余路由

3. 数据HA
– 多副本
– 跨机架
– 异地备份

Part03-生产环境项目实施方案

3.1 故障模拟

3.1.1 iptables模拟网络隔离

# 模拟网络隔离 – iptables
# 警告:仅在测试环境执行!

# 1. 模拟DataNode网络隔离
# 在NameNode上执行,阻断与某DataNode的通信
ssh fgedu-nn01 “iptables -A INPUT -s 192.168.1.11 -j DROP”
ssh fgedu-nn01 “iptables -A OUTPUT -d 192.168.1.11 -j DROP”

# 2. 验证网络隔离
ping 192.168.1.11
# 应该ping不通

# 3. 观察HDFS状态
sleep 60
hdfs dfsadmin -report
# 该DataNode应该被标记为Dead

# 4. 恢复网络
ssh fgedu-nn01 “iptables -D INPUT -s 192.168.1.11 -j DROP”
ssh fgedu-nn01 “iptables -D OUTPUT -d 192.168.1.11 -j DROP”

# 5. 验证恢复
ping 192.168.1.11
sleep 60
hdfs dfsadmin -report

3.1.2 ifdown模拟网络隔离

# 模拟网络隔离 – ifdown
# 警告:仅在测试环境执行!

# 1. 在目标节点上禁用网卡
ssh fgedu-dn01 “ifdown eth0”

# 2. 验证
ping fgedu-dn01
# 应该ping不通

# 3. 观察HDFS
sleep 60
hdfs dfsadmin -report

# 4. 恢复
ssh fgedu-dn01 “ifup eth0”

# 5. 验证
ping fgedu-dn01
sleep 60
hdfs dfsadmin -report

3.2 故障处理

3.2.1 DataNode网络隔离处理

# DataNode网络隔离处理
# 1. 发现问题
hdfs dfsadmin -report

# 输出示例:
# Dead datanodes (1):
# fgedu-dn01

# 2. 检查网络
ping fgedu-dn01
telnet fgedu-dn01 9866

# 3. 检查节点
ssh fgedu-dn01
# 如果能ssh,说明网络部分通
jps
# 检查DataNode进程

# 4. 检查日志
tail -n 100 /bigdata/app/hadoop/logs/hadoop-hdfs-datanode-*.log
tail -n 100 /bigdata/app/hadoop/logs/hadoop-hdfs-namenode-*.log

# 5. 恢复网络
# 根据原因修复
# 修复网线
# 修复交换机
# 修复防火墙
# 修复路由

# 6. 恢复服务
# 如果DataNode进程还在,等待自动重连
# 如果不在,启动DataNode
hdfs –daemon start datanode

3.3 故障恢复

3.3.1 恢复验证

# 恢复验证
# 1. 网络验证
ping fgedu-dn01
telnet fgedu-dn01 9866
telnet fgedu-dn01 8040

# 2. 服务验证
jps
hdfs dfsadmin -report
yarn node -list

# 3. 数据验证
hdfs fsck /
hdfs dfs -ls /
hdfs dfs -put /etc/hosts /test/

# 4. 功能验证
hadoop jar /bigdata/app/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar pi 2 100

风哥提示:网络隔离故障处理的关键是快速定位网络问题。要从物理层、链路层、网络层、传输层逐层排查。学习交流加群风哥QQ113257174

Part04-生产案例与实战讲解

4.1 DataNode网络隔离

4.1.1 实战案例

# DataNode网络隔离实战
# 场景:DataNode网络隔离

# 1. 模拟故障
echo “=== Simulating Network Isolation ===”
# 在NameNode上阻断DataNode
ssh fgedu-nn01 “iptables -A INPUT -s 192.168.1.11 -j DROP”
ssh fgedu-nn01 “iptables -A OUTPUT -d 192.168.1.11 -j DROP”

# 2. 等待超时
echo “Waiting for heartbeat timeout…”
sleep 600

# 3. 检查状态
echo “=== Checking HDFS Status ===”
hdfs dfsadmin -report

# 输出示例:
# Live datanodes (2):
# …
# Dead datanodes (1):
# fgedu-dn01

# 4. 检查块复制
hdfs fsck /
# 应该看到Under-replicated blocks

# 5. 恢复网络
echo “=== Recovering Network ===”
ssh fgedu-nn01 “iptables -D INPUT -s 192.168.1.11 -j DROP”
ssh fgedu-nn01 “iptables -D OUTPUT -d 192.168.1.11 -j DROP”

# 6. 观察恢复
echo “=== Watching Recovery ===”
sleep 300
hdfs dfsadmin -report
hdfs fsck /

4.2 NameNode网络隔离

4.2.1 实战案例

# NameNode网络隔离实战
# 场景:Active NameNode网络隔离

# 1. 初始状态
echo “=== Initial State ===”
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

# 输出示例:
# nn1: active
# nn2: standby

# 2. 模拟网络隔离
echo “=== Simulating Network Isolation for nn1 ===”
# 阻断nn1与ZK、JN、其他NN的通信
ssh fgedu-nn01 “iptables -A INPUT -s 192.168.1.12 -j DROP”
ssh fgedu-nn01 “iptables -A OUTPUT -d 192.168.1.12 -j DROP”
for zk in fgedu-zk01 fgedu-zk02 fgedu-zk03; do
ssh fgedu-nn01 “iptables -A INPUT -s $zk -j DROP”
ssh fgedu-nn01 “iptables -A OUTPUT -d $zk -j DROP”
done

# 3. 等待故障转移
echo “Waiting for failover…”
sleep 120

# 4. 检查新状态
echo “=== New State ===”
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

# 输出示例(如果成功):
# nn1: standby
# nn2: active

# 5. 验证
echo “=== Verifying HDFS ===”
hdfs dfs -ls /

# 6. 恢复网络
echo “=== Recovering Network ===”
ssh fgedu-nn01 “iptables -F”

# 7. 最终检查
sleep 60
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

4.3 网络分区脑裂

4.3.1 实战案例

# 网络分区脑裂实战
# 警告:有风险,仅在测试环境执行!

# 1. 初始状态
echo “=== Initial State ===”
/bigdata/app/zookeeper/bin/zkServer.sh status
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

# 2. 模拟网络分区
echo “=== Simulating Network Partition ===”
# 将集群分成两部分
# 假设:
# Zone A: fgedu-zk01, fgedu-nn01
# Zone B: fgedu-zk02, fgedu-zk03, fgedu-nn02

# 在Zone A阻断Zone B
ssh fgedu-zk01 “iptables -A INPUT -s 192.168.1.22 -j DROP”
ssh fgedu-zk01 “iptables -A INPUT -s 192.168.1.23 -j DROP”
ssh fgedu-zk01 “iptables -A OUTPUT -d 192.168.1.22 -j DROP”
ssh fgedu-zk01 “iptables -A OUTPUT -d 192.168.1.23 -j DROP”

# 在Zone B阻断Zone A
ssh fgedu-zk02 “iptables -A INPUT -s 192.168.1.21 -j DROP”
ssh fgedu-zk02 “iptables -A OUTPUT -d 192.168.1.21 -j DROP”

# 3. 观察结果
echo “=== Observing ===”
sleep 120

# 检查各分区
echo “=== Zone A ===”
ssh fgedu-zk01 “/bigdata/app/zookeeper/bin/zkServer.sh status”

echo “=== Zone B ===”
ssh fgedu-zk02 “/bigdata/app/zookeeper/bin/zkServer.sh status”
ssh fgedu-zk03 “/bigdata/app/zookeeper/bin/zkServer.sh status”

# Zone B应该能选出Leader(因为有2个节点,超过半数)
# Zone A应该不能选出Leader(只有1个节点,不满足半数)

# 4. 恢复网络
echo “=== Recovering Network ===”
ssh fgedu-zk01 “iptables -F”
ssh fgedu-zk02 “iptables -F”

# 5. 最终检查
sleep 60
/bigdata/app/zookeeper/bin/zkServer.sh status
hdfs haadmin -getServiceState nn1
hdfs haadmin -getServiceState nn2

生产环境建议:网络分区脑裂是严重故障。要确保ZK有奇数个节点,且超过半数才能选出Leader。更多视频教程www.fgedu.net.cn

Part05-风哥经验总结与分享

5.1 最佳实践

最佳实践:

  • 网络冗余:双网卡、双交换机
  • ZK部署:奇数个节点,跨机架
  • 网络监控:全面监控网络状态
  • 快速发现:及时发现网络故障
  • 快速恢复:快速定位和恢复

5.2 经验教训

# 经验教训
1. 忽视网络冗余
– 教训:单交换机故障导致全集群不可用
– 改进:双交换机、网卡bonding

2. ZK节点太少
– 教训:网络分区导致无法选主
– 改进:至少3个ZK节点

3. 网络监控不足
– 教训:故障发现晚
– 改进:完善网络监控

5.3 检查清单

# 检查清单
## 网络检查
– [ ] 网络冗余配置
– [ ] 网络连通性正常
– [ ] 网络延迟正常
– [ ] 网络丢包率低
– [ ] 网络带宽充足

## ZK检查
– [ ] ZK节点数量(奇数)
– [ ] ZK状态正常
– [ ] ZK跨机架部署

## 监控检查
– [ ] 网络监控配置
– [ ] 连通性监控
– [ ] 流量监控
– [ ] 告警配置

风哥提示:网络是Hadoop的基础,网络故障会严重影响集群。要做好网络冗余、监控、预案,确保网络稳定。学习交流加群风哥微信: itpux-com

本文由风哥教程整理发布,仅用于学习测试使用,转载注明出处:http://www.fgedu.net.cn/10327.html

联系我们

在线咨询:点击这里给我发消息

微信号:itpux-com

工作日:9:30-18:30,节假日休息