目 录
第1章 初识HBase 1
1.1 HBase的发展历程 1
1.2 HBase的特征 2
1.3 HBase的优缺点 2
1.3.1 HBase的优点 2
1.3.2 HBase的缺点 3
1.4 HBase与关系数据库的区别 3
1.5 使用HBase的时机 4
1.6 HBase的应用场景 5
1.7 HBase的数据模型 7
1.8 HBase的逻辑视图 10
1.9 本章练习 11
第2章 让HBase运行起来 12
2.1 HBase基本架构 12
2.2 HBase分布式环境搭建 15
2.2.1 设置服务器名称 15
2.2.2 Hadoop单机安装 16
2.2.3 Hadoop集群安装 21
2.2.4 ZooKeeper集群安装 29
2.2.5 HBase集群安装 32
2.3 使用容器化技术搭建HBase 35
2.3.1 在CentOS环境下安装Docker 35
2.3.2 在Windows 10环境下安装Docker 37
2.3.3 利用Docker安装HBase 38
2.4 HBase快速入门 40
2.4.1 使用HBase Shell 40
2.4.2 使用create命令 41
2.4.3 使用alter命令 41
2.4.4 使用list命令 41
2.4.5 使用describe命令 42
2.4.6 使用put命令 43
2.4.7 使用get命令 43
2.4.8 使用scan命令 44
2.4.9 使用deleteall命令 44
2.5 本章练习 45
第3章 HBase基础操作 46
3.1 help命令 46
3.2 常规命令 49
3.2.1 查询集群状态信息(status命令) 49
3.2.2 查看如何操作表(table_help命令) 51
3.2.3 查询HBase的版本信息(version命令) 52
3.2.4 查看当前用户(whoami命令) 52
3.2.5 查看进程列表(processlist命令) 52
3.3 DDL命令 53
3.3.1 创建表(create命令) 53
3.3.2 修改表信息(alter命令) 54
3.3.3 异步修改表信息(alter_async命令) 57
3.3.4 获取表的详细信息(describe命令) 58
3.3.5 获取HBase中所有的表(list命令) 59
3.3.6 判断表是否存在(exists命令) 60
3.3.7 以对象的方式操作表(get_table命令) 60
3.3.8 启用表(enable命令) 61
3.3.9 启用所有满足正则表达式的表(enable_all命令) 62
3.3.10 判断表是否被启用(is_enabled命令) 63
3.3.11 禁用表(disable命令) 63
3.3.12 禁用所有满足正则表达式的表(disable_all命令) 63
3.3.13 判断表是否被禁用(is_disabled命令) 64
3.3.14 删除表(drop命令) 65
3.3.15 删除所有满足正则表达式的表(drop_all命令) 65
3.3.16 获取RowKey所在的区域(locate_region命令) 66
3.3.17 显示HBase支持的过滤器(show_filters命令) 67
3.4 命名空间 68
3.4.1 创建命名空间(create_namespace命令) 68
3.4.2 修改命名空间(alter_namespace命令) 69
3.4.3 获取命名空间详情(describe_namespace命令) 69
3.4.4 获取命名空间下所有表的名称(list_namespace_tables命令) 70
3.4.5 获取所有的命名空间(list_namespace命令) 70
3.4.6 删除命名空间(drop_namespace命令) 70
3.5 DML命令 71
3.5.1 新增或者修改数据(put命令) 71
3.5.2 全表扫描数据(scan命令) 72
3.5.3 获取表中数据的总行数(count命令) 76
3.5.4 获取表中的数据(get命令) 77
3.5.5 删除列族中的某个列(delete命令) 80
3.5.6 删除整行数据(delete命令) 80
3.5.7 列值自增(incr命令) 81
3.5.8 获取自增后的列值(get_counter命令) 82
3.5.9 获取表所对应的Region数量(get_splits命令) 83
3.5.10 清空整个表数据,不保留分区(truncat命令) 84
3.5.11 清空整个表数据,保留分区(truncat_ preserve命令) 84
3.6 本章练习 85
第4章 使用Java操作HBase 86
4.1 从HelloWorld开始 86
4.2 创建表 91
4.3 添加数据 97
4.4 批量添加数据 101
4.5 内容追加 107
4.6 修改数据 108
4.7 删除数据 109
4.8 批量删除 112
4.9 原子性操作 113
4.10 批量操作 115
4.11 自增 117
4.12 判断数据是否存在 118
4.13 代码封装 119
4.14 本章练习 134
第5章 客户端API高阶用法 135
5.1 数据查询 135
5.2 数据扫描 141
5.3 过滤器快速实战 148
5.4 RowKey过滤器 150
5.5 RowKey前缀过滤器 152
5.6 RowKey模糊过滤器 154
5.7 列族过滤器 155
5.8 列过滤器 157
5.9 多列前缀过滤器 158
5.10 首次列键过滤器 159
5.11 列键过滤器 160
5.12 列值过滤器 161
5.13 单列值过滤器 163
5.14 列值排除过滤器 168
5.15 随机行过滤器 169
5.16 分页过滤器 171
5.17 多个过滤器综合查询 173
5.18 本章练习 174
第6章 HBase数据批量加载 175
6.1 HBase批量加载简介 175
6.2 海量交易记录数据存储案例 176
6.2.1 案例开发准备工作 176
6.2.2 编写实体类 177
6.2.3 创建读取数据的Mapper类 181
6.2.4 编写驱动类 183
6.2.5 上传数据到HDFS 184
6.2.6 将导入的HDFS数据与HBase进行关联 184
6.3 本章练习 185
第7章 协处理器 186
7.1 协处理器简介 186
7.2 协处理器分类 187
7.3 Coprocessor接口 187
7.4 协处理器的加载 189
7.4.1 使用配置文件加载 189
7.4.2 从表描述器中加载 190
7.5 RegionObserver类 192
7.5.1 Region状态 199
7.5.2 处理客户端API事件 201
7.6 自定义Observer案例 202
7.7 本章练习 204
第8章 Phoenix在HBase中的整合应用 205
8.1 Phoenix简介 205
8.2 安装Phoenix 206
8.2.1 下载 206
8.2.2 安装 206
8.3 连接Phoenix 207
8.4 Phoenix快速入门 209
8.4.1 创建表 209
8.4.2 删除表 211
8.4.3 插入数据 211
8.4.4 分页查询 211
8.5 本章练习 212
第9章 HBase架构深入剖析 213
9.1 HBase架构原理 213
9.1.1 RegionServer流程解析 214
9.1.2 StoreFile和HFile结构 215
9.1.3 MemStore和StoreFile 215
9.2 HBase的写流程 216
9.3 HBase的读流程 217
9.4 HBase如何进行增、删、改、查 218
9.5 数据刷写 218
9.5.1 刷写操作的触发时机 219
9.5.2 刷写流程 220
9.6 数据合并 220
9.7 数据拆分 221
9.8 本章练习 223
第10章 HBase的性能优化 224
10.1 表设计优化 224
10.1.1 预分区 224
10.1.2 RowKey设计优化 226
10.1.3 列族数量优化 228
10.1.4 版本优化 228
10.2 HBase提升写效率 228
10.3 MemStore调优 229
10.4 合并调优 230
10.5 WAL调优 231
10.6 HBase读取优化 232
10.7 本章练习 233
第11章 HBase数据操作实战 234
11.1 创建表并添加表数据 234
11.2 修改和删除表数据 237
11.3 批量操作表数据 238
11.4 查询数据 240
11.5 使用过滤器进行数据查询 246