第1章 简介
1.1 海量数据的黎明
1.2 关系数据库系统的问题
1.3 非关系型数据库系统Not-Only-SQL(简称NoSQL)
1.3.1 维度
1.3.2 可扩展性
1.3.3 数据库的范式化和反范式化
1.4 结构
1.4.1 背景
1.4.2 表、行、列和单元格
1.4.3 自动分区
1.4.4 存储API
1.4.5 实现
1.4.6 小结
1.5 HBase:Hadoop数据库
1.5.1 历史
1.5.2 命名
1.5.3 小结
第2章 安装
2.1 快速启动指南
2.2 必备条件
2.2.1 硬件
2.2.2 软件
2.3 HBase使用的文件系统
2.3.1 本地模式
2.3.2 HDFS
2.3.3 S
2.3.4 其他文件系统
2.4 安装选项
2.4.1 Apache二进制发布包
2.4.2 编译源码
2.5 运行模式
2.5.1 单机模式
2.5.2 分布式模式
2.6 配置
2.6.1 hbase-site.xml与hbase-default.xml
2.6.2 hbase-env.sh
2.6.3 regionserver
2.6.4 log4j.properties
2.6.5 配置示例
2.6.6 客户端配置
2.7 部署
2.7.1 基于脚本
2.7.2 Apache Whirr
2.7.3 Puppet与Chef
2.8 操作集群
2.8.1 确定安装运行
2.8.2 Web UI介绍
2.8.3 Shell介绍
2.8.4 关闭集群
第3章 客户端API:基础知识
3.1 概述
3.2 CRUD操作
3.2.1 put方法
3.2.2 get方法
3.2.3 删除方法
3.3 批量处理操作
3.4 行锁
3.5 扫描
3.5.1 介绍
3.5.2 ResultScanner类
3.5.3 缓存与批量处理
3.6 各种特性
3.6.1 HTable的实用方法
3.6.2 Bytes类
第4章 客户端API:高级特性
4.1 过滤器
4.1.1 过滤器简介
4.1.2 比较过滤器
4.1.3 专用过滤器
4.1.4 附加过滤器
4.1.5 FilterList
4.1.6 自定义过滤器
4.1.7 过滤器总结
4.2 计数器
4.2.1 计数器简介
4.2.2 单计数器
4.2.3 多计数器
4.3 协处理器
4.3.1 协处理器简介
4.3.2 Coprocessor类
4.3.3 协处理器加载
4.3.4 RegionObserver类
4.3.5 MasterObserver类
4.3.6 endpoint
4.4 HTablePool
4.5 连接管理
第5章 客户端API:管理功能
5.1 模式定义
5.1.1 表
5.1.2 表属性
5.1.3 列族
5.2 HBaseAdmin
5.2.1 基本操作
5.2.2 表操作
5.2.3 模式操作
5.2.4 集群管理
5.2.5 集群状态信息
第6章 可用客户端
6.1 REST、Thrift和Avro的介绍
6.2 交互客户端
6.2.1 原生Java
6.2.2 REST
6.2.3 Thrift
6.2.4 Avro
6.2.5 其他客户端
6.3 批处理客户端
6.3.1 MapReduce
6.3.2 Hive
6.3.3 Pig
6.3.4 Cascading
6.4 Shell
6.4.1 基础
6.4.2 命令
6.4.3 脚本
6.5 基于Web的UI
6.5.1 master的UI
6.5.2 region服务器的UI
6.5.3 共享页面
第7章 与MapReduce集成
7.1 框架
7.1.1 MapReduce介绍
7.1.2 类
7.1.3 支撑类
7.1.4 MapReduce的执行地点
7.1.5 表拆分
7.2 在HBase之上的MapReduce
7.2.1 准备
7.2.2 数据流向
7.2.3 数据源
7.2.4 数据源与数据流向
7.2.5 自定义处理
第8章 架构
8.1 数据查找和传输
8.1.1 B+树
8.1.2 LSM树
8.2 存储
8.2.1 概览
8.2.2 写路径
8.2.3 文件
8.2.4 HFile格式
8.2.5 KeyValue格式
8.3 WAL
8.3.1 概述
8.3.2 HLog类
8.3.3 HLogKey类
8.3.4 WALEdit类
8.3.5 LogSyncer类
8.3.6 LogRoller类
8.3.7 回放
8.3.8 持久性
8.4 读路径
8.5 region查找
8.6 region生命周期
8.7 ZooKeeper
8.8 复制
8.8.1 Log Edit的生命周期
8.8.2 内部机制
第9章 高级用法
9.1 行键设计
9.1.1 概念
9.1.2 高表与宽表
9.1.3 部分键扫描
9.1.4 分页
9.1.5 时间序列
9.1.6 时间顺序关系
9.2 高级模式
9.3 辅助索引
9.4 搜索集成
9.5 事务
9.6 布隆过滤器
9.7 版本管理
9.7.1 隐式版本控制
9.7.2 自定义版本控制
第10章 集群监控
10.1 介绍
10.2 监控框架
10.2.1 上下文、记录和监控指标
10.2.2 master监控指标
10.2.3 region服务器监控指标
10.2.4 RPC监控指标
10.2.5 JVM监控指标
10.2.6 info监控指标
10.3 Ganglia
10.3.1 安装
10.3.2 用法
10.4 JMX
10.4.1 JConsole
10.4.2 JMX远程API
10.5 Nagios
第11章 性能优化
11.1 垃圾回收优化
11.2 本地memstore分配缓冲区
11.3 压缩
11.3.1 可用的编解码器
11.3.2 验证安装
11.3.3 启用压缩
11.4 优化拆分和合并
11.4.1 管理拆分
11.4.2 region热点
11.4.3 预拆分region
11.5 负载均衡
11.6 合并region
11.7 客户端API:最佳实践
11.8 配置
11.9 负载测试
11.9.1 性能评价
11.9.2 YCSB
第12章 集群管理
12.1 运维任务
12.1.1 减少节点
12.1.2 滚动重启
12.1.3 新增服务器
12.2 数据任务
12.2.1 导入/导出
12.2.2 CopyTable工具
12.2.3 批量导入
12.2.4 复制
12.3 额外的任务
12.3.1 集群共存
12.3.2 端口要求
12.4 改变日志级别
12.5 故障处理
12.5.1 HBase Fsck
12.5.2 日志分析
12.5.3 常见问题
附录A HBase配置属性
附录B 计划
附录C 版本升级
附录D 分支
附录E Hush SQL Schema
附录F 对比HBase和BigTable