HBase+HDFS出现的SocketTimeoutException错误

来源:互联网 发布:网络电视如何看翡翠台 编辑:程序博客网 时间:2024/05/16 15:29

      HBase的SocketTimeoutException错误,这个是在HBase子节点中时常报的错误,如图:


       但是却没有影响集群运行,在网上搜集了很多资料,一直觉得这也是hdfs端错误造成的,查看hadoop中datanode子节点日志,意外发现这里面时常也会出现:


       查看了网上很多说明,最终都归结到dfs.socket.timeout这个配置项中来了,都说要同时在hdfs和hbase的配置文件中设置这个项,据说设180秒,可是设置完了发现还是不行,4800000毫秒秒这个错误还是未改变,按理再报错误应该是1800000毫秒超时了。一次偶然情况下,终于发现这两个问题的根源。

     第一个是HBase中的错误,配置调大hbase.rpc.timeout这个值即可避免,HBase默认的是60秒。而第二个,一直以来都考量不出480秒是从哪里来的,后来发现这个配置超时时间是由dfs.datanode.socket.write.timeout这个配置项决定的,默认是8分钟,已经够大了,但是面对hbase高速的数据插入感觉还是不行啊,所以可以适当调大。同时还可以配置dfs.datanode.handler.count,默认为10,调大这个datanode处理线程数,应该就可以缓解这个问题了。这也是HBase性能调优的一点内容吧。

     至于这个dfs.socket.timeout我目前为止,还是不了解,待后期更新吧,之所以一开始会想到更改它是出自这篇博客,见如下:http://heipark.iteye.com/blog/1485323唯一的不同大概它是ready for read,而我这边是ready for write吧。后期再继续阅读源码吧,解决了再来更新。

0 0