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