hadoop文件系统操作java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink问题解决
hadoop集群搭建好之后,迫不及待的想用一下,就把一个文件上传至hdfs中吧,没想到中间报了一个问题,如下:
[root@hadoop01 bin]# ./hadoop fs -ls /
[root@hadoop01 bin]# ./hadoop fs -mkdir /csdn
[root@hadoop01 bin]# ./hadoop fs -put container-executor /csdn/
2020-12-08 09:57:36,314 WARN hdfs.DataStreamer: Exception in createBlockOutputStream blk_1073741825_1001
java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 172.16.1.154:9866
at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:134)
at org.apache.hadoop.hdfs.protocol.datatransfer.DataTransferProtoUtil.checkBlockOpStatus(DataTransferProtoUtil.java:110)
at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1779)
at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1680)
at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:715)
2020-12-08 09:57:36,316 WARN hdfs.DataStreamer: Abandoning BP-621408057-172.16.1.153-1607390999715:blk_1073741825_1001
2020-12-08 09:57:36,329 WARN hdfs.DataStreamer: Excluding datanode DatanodeInfoWithStorage[172.16.1.154:9866,DS-2d6ccbf0-086c-44fd-b225-8d97117493bb,DISK]
[root@hadoop01 bin]#
错误中的关键信息
java.io.IOException: Got error, status=ERROR, status message , ack with firstBadLink as 172.16.1.154:9866
这个问题一般是对应的节点服务器忘记关闭防火墙导致的。如果是CentOS 6以上版本可以通过
firewall-cmd --state
查看防火墙状态
使用一下命令关闭防火墙
systemctl stop firewalld.service
可以删除原来的文件重新上传,如下操作
[root@hadoop01 bin]# ./hadoop fs -ls /csdn/
Found 1 items
-rw-r--r-- 3 root supergroup 802832 2020-12-08 09:57 /csdn/container-executor
[root@hadoop01 bin]# ./hadoop fs -rm -f /csdn/container-executor
Deleted /csdn/container-executor
[root@hadoop01 bin]# ./hadoop fs -ls /csdn/
[root@hadoop01 bin]# ./hadoop fs -put container-executor /csdn/
[root@hadoop01 bin]#
从以下图形界面中可以看到,现在此文件有1个block,对应3个节点副本。