searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

hdfs卡死,无法使用命令行查询。

2024-09-27 09:20:49
5
0

某次故障发现hdfs本身无法提供服务,于是查询dn日志和nn日志:
dn日志:

2024-**-** 12:56:12,683 | WARN | org.apache.hadoop.hdfs.server.datanode.DataNode | ***********:1004:DataXceiverServer
java.io.IOException: Xceiver count 8193 exceeds the limit of concurrent xcievers: 8192
	at org.apache.hadoop.hdfs.server.datanode.DataXceiverServer.run(DataXceiverServer.java:234)
	at java.lang.Thread.run(Thread.java:750)

nn日志:

2024-**-** 13:01:49,043 | INFO | org.apache.hadoop.ipc.Server | IPC Server handler 51 on default port 54310, call Call#1803581 Retry#0 org.apache.hadoop.hdfs.protocol.ClientProtocol.addBlock from 10.62.40.159:15127
java.io.IOException: File /hbase/data/***/ct***_****/********/********/***.temp could only be written to 0 of the 1 minReplication nodes. There are 3 datanode(s) running and 3 node(s) are excluded in this operation.
	at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:2315)
	at org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.chooseTargetForNewBlock(FSDirWriteFileOp.java:294)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2994)
	at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:929)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:593)
	at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:614)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:582)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:566)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1116)
	at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:1060)
	at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:983)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1890)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2997)

这个错误信息表明在尝试写入 HDFS 文件时遇到了问题。具体来说,错误信息表明:

  1. 文件路径/hbase/data/***/ct***_****/********/********/***.temp 是一个正在尝试写入的临时文件。
  2. 副本数:文件应该被复制到至少 1 个节点上(minReplication nodes),但实际上只能写入到 0 个节点(could only be written to 0 of the 1)。
  3. 活动节点:当前有 3 个 DataNode 正在运行(There are 3 datanode(s) running)。
  4. 排除节点:在这次操作中有 3 个节点被排除在外(3 node(s) are excluded in this operation)。

这个错误通常意味着以下几种情况之一:

  1. 网络问题:某些 DataNode 可能无法正常连接到 NameNode 或其他 DataNodes。
  2. 磁盘问题:某些 DataNode 的磁盘可能出现故障或满载,导致无法写入数据。
  3. 配置问题:HDFS 的配置可能存在问题,比如 dfs.replication 设置不合理,或者某些节点被配置为排除列表(dfs.hosts.exclude)。
    1. 权限问题:可能有一些权限设置阻止了文件的写入。

最终操作:

查询dn的连接数,已经大于8192,于是将dfs.datanode.max.xcievers改为16384后,重启hdfs、hbase集群后,业务恢复正常

0条评论
0 / 1000
c****i
2文章数
0粉丝数
c****i
2 文章 | 0 粉丝
c****i
2文章数
0粉丝数
c****i
2 文章 | 0 粉丝
原创

hdfs卡死,无法使用命令行查询。

2024-09-27 09:20:49
5
0

某次故障发现hdfs本身无法提供服务,于是查询dn日志和nn日志:
dn日志:

2024-**-** 12:56:12,683 | WARN | org.apache.hadoop.hdfs.server.datanode.DataNode | ***********:1004:DataXceiverServer
java.io.IOException: Xceiver count 8193 exceeds the limit of concurrent xcievers: 8192
	at org.apache.hadoop.hdfs.server.datanode.DataXceiverServer.run(DataXceiverServer.java:234)
	at java.lang.Thread.run(Thread.java:750)

nn日志:

2024-**-** 13:01:49,043 | INFO | org.apache.hadoop.ipc.Server | IPC Server handler 51 on default port 54310, call Call#1803581 Retry#0 org.apache.hadoop.hdfs.protocol.ClientProtocol.addBlock from 10.62.40.159:15127
java.io.IOException: File /hbase/data/***/ct***_****/********/********/***.temp could only be written to 0 of the 1 minReplication nodes. There are 3 datanode(s) running and 3 node(s) are excluded in this operation.
	at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:2315)
	at org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.chooseTargetForNewBlock(FSDirWriteFileOp.java:294)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2994)
	at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:929)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:593)
	at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:614)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:582)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:566)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1116)
	at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:1060)
	at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:983)
	at java.security.AccessController.doPrivileged(Native Method)
	at javax.security.auth.Subject.doAs(Subject.java:422)
	at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1890)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2997)

这个错误信息表明在尝试写入 HDFS 文件时遇到了问题。具体来说,错误信息表明:

  1. 文件路径/hbase/data/***/ct***_****/********/********/***.temp 是一个正在尝试写入的临时文件。
  2. 副本数:文件应该被复制到至少 1 个节点上(minReplication nodes),但实际上只能写入到 0 个节点(could only be written to 0 of the 1)。
  3. 活动节点:当前有 3 个 DataNode 正在运行(There are 3 datanode(s) running)。
  4. 排除节点:在这次操作中有 3 个节点被排除在外(3 node(s) are excluded in this operation)。

这个错误通常意味着以下几种情况之一:

  1. 网络问题:某些 DataNode 可能无法正常连接到 NameNode 或其他 DataNodes。
  2. 磁盘问题:某些 DataNode 的磁盘可能出现故障或满载,导致无法写入数据。
  3. 配置问题:HDFS 的配置可能存在问题,比如 dfs.replication 设置不合理,或者某些节点被配置为排除列表(dfs.hosts.exclude)。
    1. 权限问题:可能有一些权限设置阻止了文件的写入。

最终操作:

查询dn的连接数,已经大于8192,于是将dfs.datanode.max.xcievers改为16384后,重启hdfs、hbase集群后,业务恢复正常

文章来自个人专栏
note
2 文章 | 1 订阅
0条评论
0 / 1000
请输入你的评论
0
0