Bad connect ack with firstBadLink as x.x.x.x:50010异常

本文介绍了解决Hadoop集群在添加新节点后遇到的问题,特别是与datanode连接失败的情况。通过调整iptables配置而非简单关闭,确保了系统的安全性和稳定性。

问题:

由于Hadoop集群处理作业的需要,为已有的Hadoop集群添加了两个新的节点,但在运行Hadoop作业时,出现了如下问题:

[org.apache.hadoop.hdfs.DFSClient]-[INFO] Exception in createBlockOutputStream x.x.x.x:50010java.io.IOException: Bad connect ack with firstBadLink as x.x.x.x:50010

[org.apache.hadoop.hdfs.DFSClient]-[INFO] Abandoning block blk_-5854021773381781788_14313

[org.apache.hadoop.hdfs.DFSClient]-[INFO] Excluding datanode x.x.x.x:50010

[org.apache.hadoop.hdfs.DFSClient]-[INFO] Exception in createBlockOutputStream  x.x.x.x:50010java.io.IOException: Bad connect ack with firstBadLink as x.x.x.x:50010

[org.apache.hadoop.hdfs.DFSClient]-[INFO] Abandoning block blk_-1750664886280243638_14313

[org.apache.hadoop.hdfs.DFSClient]-[INFO] Excluding datanode x.x.x.x:50010

只有新增加的两个节点是有问题,而且都是说关于datanode,端口号50010,访问不了可能就是有阻止访问的设置。

运行的操作系统是:centos6.7

解决方案:

关闭iptables

命令:service iptables stop

虽然这样可以解决,关闭iptables也就意味着所有的端口开放了,更建议通过在iptables中配置端口的方式来解决,也更加安全。


2025-09-18 04:59:25,118 WARN hdfs.DataStreamer: Exception in createBlockOutputStream blk_1073741825_1001 java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 192.168.88.103:9866 at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:128) at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:104) at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1921) at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1822) at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:751) 2025-09-18 04:59:25,123 WARN hdfs.DataStreamer: Abandoning BP-1974876939-192.168.88.101-1758071567220:blk_1073741825_1001 2025-09-18 04:59:25,134 WARN hdfs.DataStreamer: Excluding datanode DatanodeInfoWithStorage[192.168.88.103:9866,DS-0b8b77f5-a0b1-4abd-ab70-f1077efa388f,DISK] 2025-09-18 04:59:25,181 WARN hdfs.DataStreamer: Exception in createBlockOutputStream blk_1073741826_1002 java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 192.168.88.102:9866 at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:128) at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:104) at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1921) at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1822) at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:751) 2025-09-18 04:59:25,182 WARN hdfs.DataStreamer: Abandoning BP-1974876939-192.168.88.101-1758071567220:blk_1073741826_1002 2025-09-18 04:59:25,198 WARN hdfs.DataStreamer: Excluding datanode DatanodeInfoWithStorage[192.168.88.102:9866,DS-578bea83-9e25-4c1a-aa2b-2be244f85f34,DISK]
最新发布
09-19
在Hadoop HDFS中,DataStreamer创建块输出流时出现 `IOException` 错误(`Got error, status=ERROR`),从提供的引用中可推测可能与网络连接有关。若报错 `Unable to connect to remote host: No route to host` 或者执行原程序时观察hadoop产生的日志出现 `java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as ip:端口`,可参考 `Unable to connect to remote host: No route to host` 的解决方法来处理 [^4]。 不过,仅从现有引用无法明确具体的解决方案内容。通常来说,针对这类问题,可从以下几个常见方向排查解决: 1. **网络连通性**:检查 `firstBadLink` 中给出的 `ip:端口` 是否可达,可通过 `ping` 命令检查IP连通性,使用 `telnet` 命令检查端口是否开放。 2. **数据节点状态**:确保对应的DataNode节点正常运行,可查看DataNode的日志文件,排查是否有异常信息。 3. **配置检查**:检查Hadoop集群的配置文件,如 `hdfs-site.xml` 等,确认相关配置是否正确。 ```python # 示例代码,检查网络连通性 import subprocess def check_network_connectivity(ip): try: result = subprocess.run(['ping', '-c', '3', ip], stdout=subprocess.PIPE, stderr=subprocess.PIPE) if result.returncode == 0: print(f"{ip} 网络连通") else: print(f"{ip} 网络不连通") except Exception as e: print(f"检查网络连通性时出错: {e}") # 示例调用 check_network_connectivity('120.78.239.136') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值