记一次hadoop datanode进程问题分析

症状:datanode进程还在,但是在web ui接口发现该节点已经被置为dead节点。监测datanode进程日志,开始时一直狂刷很忙,后来停止刷新日志。

分析datanode进程日志,发现如下一些错误:

datanode.DataNode: PacketResponder java.io.IOException: Connection reset by peer

DataXceiver error processing WRITE_BLOCK operation java.io.IOException: Interrupted receiveBlock
java.io.EOFException: Premature EOF: no length prefix available

permanently terminating periodic scanner java.lang.OutOfMemoryError: Java heap space
Action: datanode process now is Xmx2048m 给datanode进程大一些 4G ? px集群现在是 xms3072m xmx8192m

transfering block BP-1538154135-172.17.254.17-1382076983184:blk_7146956383243812346_445834476 to mirror 172.17.254.102:50010: java.net.ConnectException: Connection timed out
DataXceiver error processing WRITE_BLOCK operation   java.net.ConnectException: Connection timed out
主要是网络相关,可以看到 读写block的时候超时之类的。有可能是网络带宽问题,之前听同事们反馈这批网卡带宽不行。
查看主配置文件hdfs-site.xml
<name>dfs.balance.bandwidthPerSec</name><value>104857600</value> 100M
dfs.socket.timeout --1800000  30min
 
dfs.namenode.handler.count  --20  
python -c 'import math ; print int(math.log(32) * 20)'  64
Action: 根据<hadoop operations>的计算公式,建议改为64 计算得出69.
可以减少datanode向namenode汇报心跳超时之类的问题

Action:
dfs.datanode.socket.write.timeout  480000   8m
建议增大时长至20分钟

Action:
dfs.datanode.max.xcievers  4096
建议修改为8192 可以打开的文件数量更多,减少读写块时出错的机率

posted on 2015-11-24 16:52  tneduts  阅读(2600)  评论(0编辑  收藏  举报

导航