HBase troubleshooting的一般思路
1.如何发现问题
在我们的集群中,HBase的错误是通过splunk和nagio的报警机制报告的。当service出现异常,如退出,crash,master/regionserver抛出异常等,管理员都会收到消息。
2.问题跟踪方法
在http://hbase.apache.org/book.html#trouble.general中,HBase给出了处理问题的一般思路。
1.将exception直接到Google或者search-hadoop.com搜索。Google是工程师离不开的工具啊。
2.HBase的问题往往不会是独立的。在日志中可以发现很多exception,最直接的方法就是找到第一个exception。Java的问题一般都是这么解决。但是不要只是grepError信息,因为HBase的loglevel定义的有些混乱。有时候一些严重的错误却标成INFO。建议还grep一下“Dump”,因为Regionserver可能会打印一些metric出来。
3.一定能够要注意设置ulimit和xcievers.Regionserver可能会因为Zookeepersessiontimout而自动退出,这个在之前的blog也讨论过。
3.Log的位置
NameNode:$HADOOP_HOME/logs/hadoop-<user>-namenode-<hostname>.log
DataNode:$HADOOP_HOME/logs/hadoop-<user>-datanode-<hostname>.log
JobTracker:$HADOOP_HOME/logs/hadoop-<user>-jobtracker-<hostname>.log
TaskTracker:$HADOOP_HOME/logs/hadoop-<user>-jobtracker-<hostname>.log
HMaster:$HBASE_HOME/logs/hbase-<user>-master-<hostname>.log
RegionServer:$HBASE_HOME/logs/hbase-<user>-regionserver-<hostname>.log
4.一些重要的工具
a)search-hadoop.com
b)tail
c)top
d)jps
e)jstack
f)OpenTSDB。没有用过。有用过的评论下啊。
g)clusterssh+top。这个是一个好思路。可以用ssh$hosttop收集集群中其他机器的信息。这样就成了一个monitor工具了。
h)$./bin/hbasehbck
返回OK或者INCONSISTENCY。如果是INCONSISTENCY,可以多运行几次,因为有可能cluster还没有完全启动好或者有Region在splitting。-fix可能可以修复不一致。(没有试过,有机会可以看看到底好不好用。文档上写的那么不肯定)