Chapter 1. Troubleshooting and Debugging Apache HBase

Table of Contents

1.1. General Guidelines
1.2. Logs
1.2.1. Log Locations
1.2.2. Log Levels
1.2.3. JVM Garbage Collection Logs
1.3. Resources
1.3.2. Mailing Lists
1.3.3. IRC
1.3.4. JIRA
1.4. Tools
1.4.1. Builtin Tools
1.4.2. External Tools
1.5. Client
1.5.1. ScannerTimeoutException or UnknownScannerException
1.5.2. LeaseException when calling
1.5.3. Shell or client application throws lots of scary exceptions during normal operation
1.5.4. Long Client Pauses With Compression
1.5.5. ZooKeeper Client Connection Errors
1.5.6. Client running out of memory though heap size seems to be stable (but the off-heap/direct heap keeps growing)
1.5.7. Client Slowdown When Calling Admin Methods (flush, compact, etc.)
1.5.8. Secure Client Cannot Connect ([Caused by GSSException: No valid credentials provided (Mechanism level: Failed to find any Kerberos tgt)])
1.6. MapReduce
1.6.1. You Think You're On The Cluster, But You're Actually Local
1.7. NameNode
1.7.1. HDFS Utilization of Tables and Regions
1.7.2. Browsing HDFS for HBase Objects
1.8. Network
1.8.1. Network Spikes
1.8.2. Loopback IP
1.8.3. Network Interfaces
1.9. RegionServer
1.9.1. Startup Errors
1.9.2. Runtime Errors
1.9.3. Shutdown Errors
1.10. Master
1.10.1. Startup Errors
1.10.2. Shutdown Errors
1.11. ZooKeeper
1.11.1. Startup Errors
1.11.2. ZooKeeper, The Cluster Canary
1.12. Amazon EC2
1.12.1. ZooKeeper does not seem to work on Amazon EC2
1.12.2. Instability on Amazon EC2
1.12.3. Remote Java Connection into EC2 Cluster Not Working
1.13. HBase and Hadoop version issues
1.13.1. NoClassDefFoundError when trying to run 0.90.x on hadoop-0.20.205.x (or hadoop-1.0.x)
1.13.2. ...cannot communicate with client version...
1.14. Running unit or integration tests
1.14.1. Runtime exceptions from MiniDFSCluster when running tests
1.15. Case Studies

1.1. General Guidelines

Always start with the master log (TODO: Which lines?). Normally it’s just printing the same lines over and over again. If not, then there’s an issue. Google or should return some hits for those exceptions you’re seeing.

An error rarely comes alone in Apache HBase, usually when something gets screwed up what will follow may be hundreds of exceptions and stack traces coming from all over the place. The best way to approach this type of problem is to walk the log up to where it all began, for example one trick with RegionServers is that they will print some metrics when aborting so grepping for Dump should get you around the start of the problem.

RegionServer suicides are “normal”, as this is what they do when something goes wrong. For example, if ulimit and xcievers (the two most important initial settings, see ???) aren’t changed, it will make it impossible at some point for DataNodes to create new threads that from the HBase point of view is seen as if HDFS was gone. Think about what would happen if your MySQL database was suddenly unable to access files on your local file system, well it’s the same with HBase and HDFS. Another very common reason to see RegionServers committing seppuku is when they enter prolonged garbage collection pauses that last longer than the default ZooKeeper session timeout. For more information on GC pauses, see the 3 part blog post by Todd Lipcon and ??? above.

comments powered by Disqus