1.1. Data-management systems: a crash course
1.2. HBase use cases and success stories
1.2.1. The canonical web-search problem: the reason for Bigtable’s invention
2.2.3. Under the hood: the HBase write path
2.2.5. Under the hood: the HBase read path
Chapter 3. Distributed HBase, HDFS, and MapReduce
3.1.2. Serial execution has limited throughput
3.1.3. Improved throughput with parallel execution
3.1.4. MapReduce: maximum throughput with distributed parallelism
3.2. An overview of Hadoop MapReduce
3.3. HBase in distributed mode
3.3.1. Splitting and distributing big tables
3.6. Availability and reliability at scale
4.1. How to approach schema design
4.1.1. Modeling for the questions
4.1.2. Defining requirements: more work up front always pays
4.2. De-normalization is the word in HBase land
4.3. Heterogeneous data in the same table
4.6. From relational to non-relational
4.7. Advanced column family configurations
Chapter 5. Extending HBase with coprocessors
5.1. The two kinds of coprocessors
5.3.1. Defining an interface for the endpoint
5.3.2. Implementing the endpoint server
5.3.3. Implement the endpoint client
Chapter 6. Alternative HBase clients
6.1. Scripting the HBase shell from UNIX
6.2. Programming the HBase shell using JRuby
6.4. Using the HBase Thrift gateway from Python
6.4.1. Generating the HBase Thrift client library for Python
6.5. Asynchbase: an alternative Java HBase client
6.5.1. Creating an asynchbase project
Chapter 7. HBase by example: OpenTSDB
7.2. Designing an HBase application
7.3. Implementing an HBase application
Chapter 8. Scaling GIS on HBase
8.1. Working with geographic data
8.2. Designing a spatial index
8.2.1. Starting with a compound rowkey
8.3. Implementing the nearest-neighbors query
8.4.1. Creating a geohash scan from a query polygon
9.1.2. Small production cluster (10–20 servers)
9.1.3. Medium production cluster (up to ~50 servers)
9.1.4. Large production cluster (>~50 servers)
10.1.1. How HBase exposes metrics
10.1.2. Collecting and graphing the metrics
10.2. Performance of your HBase cluster
10.2.2. What impacts HBase’s performance?
10.3.1. Starting and stopping HBase
10.3.2. Graceful stop and decommissioning nodes
10.3.4. Rolling restarts and upgrading
10.3.5. bin/hbase and the HBase shell
10.3.6. Maintaining consistency—hbck
10.4.1. Inter-cluster replication
Appendix A. Exploring the HBase system
Appendix B. More about the workings of HDFS
B.2. Separating metadata and data: NameNode and DataNode