目 錄
第1章 初識(shí)HBase 1
1.1 HBase的發(fā)展歷程 1
1.2 HBase的特征 2
1.3 HBase的優(yōu)缺點(diǎn) 2
1.3.1 HBase的優(yōu)點(diǎn) 2
1.3.2 HBase的缺點(diǎn) 3
1.4 HBase與關(guān)系數(shù)據(jù)庫(kù)的區(qū)別 3
1.5 使用HBase的時(shí)機(jī) 4
1.6 HBase的應(yīng)用場(chǎng)景 5
1.7 HBase的數(shù)據(jù)模型 7
1.8 HBase的邏輯視圖 10
1.9 本章練習(xí) 11
第2章 讓HBase運(yùn)行起來(lái) 12
2.1 HBase基本架構(gòu) 12
2.2 HBase分布式環(huán)境搭建 15
2.2.1 設(shè)置服務(wù)器名稱(chēng) 15
2.2.2 Hadoop單機(jī)安裝 16
2.2.3 Hadoop集群安裝 21
2.2.4 ZooKeeper集群安裝 29
2.2.5 HBase集群安裝 32
2.3 使用容器化技術(shù)搭建HBase 35
2.3.1 在CentOS環(huán)境下安裝Docker 35
2.3.2 在Windows 10環(huán)境下安裝Docker 37
2.3.3 利用Docker安裝HBase 38
2.4 HBase快速入門(mén) 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 本章練習(xí) 45
第3章 HBase基礎(chǔ)操作 46
3.1 help命令 46
3.2 常規(guī)命令 49
3.2.1 查詢(xún)集群狀態(tài)信息(status命令) 49
3.2.2 查看如何操作表(table_help命令) 51
3.2.3 查詢(xún)HBase的版本信息(version命令) 52
3.2.4 查看當(dāng)前用戶(hù)(whoami命令) 52
3.2.5 查看進(jìn)程列表(processlist命令) 52
3.3 DDL命令 53
3.3.1 創(chuàng)建表(create命令) 53
3.3.2 修改表信息(alter命令) 54
3.3.3 異步修改表信息(alter_async命令) 57
3.3.4 獲取表的詳細(xì)信息(describe命令) 58
3.3.5 獲取HBase中所有的表(list命令) 59
3.3.6 判斷表是否存在(exists命令) 60
3.3.7 以對(duì)象的方式操作表(get_table命令) 60
3.3.8 啟用表(enable命令) 61
3.3.9 啟用所有滿(mǎn)足正則表達(dá)式的表(enable_all命令) 62
3.3.10 判斷表是否被啟用(is_enabled命令) 63
3.3.11 禁用表(disable命令) 63
3.3.12 禁用所有滿(mǎn)足正則表達(dá)式的表(disable_all命令) 63
3.3.13 判斷表是否被禁用(is_disabled命令) 64
3.3.14 刪除表(drop命令) 65
3.3.15 刪除所有滿(mǎn)足正則表達(dá)式的表(drop_all命令) 65
3.3.16 獲取RowKey所在的區(qū)域(locate_region命令) 66
3.3.17 顯示HBase支持的過(guò)濾器(show_filters命令) 67
3.4 命名空間 68
3.4.1 創(chuàng)建命名空間(create_namespace命令) 68
3.4.2 修改命名空間(alter_namespace命令) 69
3.4.3 獲取命名空間詳情(describe_namespace命令) 69
3.4.4 獲取命名空間下所有表的名稱(chēng)(list_namespace_tables命令) 70
3.4.5 獲取所有的命名空間(list_namespace命令) 70
3.4.6 刪除命名空間(drop_namespace命令) 70
3.5 DML命令 71
3.5.1 新增或者修改數(shù)據(jù)(put命令) 71
3.5.2 全表掃描數(shù)據(jù)(scan命令) 72
3.5.3 獲取表中數(shù)據(jù)的總行數(shù)(count命令) 76
3.5.4 獲取表中的數(shù)據(jù)(get命令) 77
3.5.5 刪除列族中的某個(gè)列(delete命令) 80
3.5.6 刪除整行數(shù)據(jù)(delete命令) 80
3.5.7 列值自增(incr命令) 81
3.5.8 獲取自增后的列值(get_counter命令) 82
3.5.9 獲取表所對(duì)應(yīng)的Region數(shù)量(get_splits命令) 83
3.5.10 清空整個(gè)表數(shù)據(jù),不保留分區(qū)(truncat命令) 84
3.5.11 清空整個(gè)表數(shù)據(jù),保留分區(qū)(truncat_ preserve命令) 84
3.6 本章練習(xí) 85
第4章 使用Java操作HBase 86
4.1 從HelloWorld開(kāi)始 86
4.2 創(chuàng)建表 91
4.3 添加數(shù)據(jù) 97
4.4 批量添加數(shù)據(jù) 101
4.5 內(nèi)容追加 107
4.6 修改數(shù)據(jù) 108
4.7 刪除數(shù)據(jù) 109
4.8 批量刪除 112
4.9 原子性操作 113
4.10 批量操作 115
4.11 自增 117
4.12 判斷數(shù)據(jù)是否存在 118
4.13 代碼封裝 119
4.14 本章練習(xí) 134
第5章 客戶(hù)端API高階用法 135
5.1 數(shù)據(jù)查詢(xún) 135
5.2 數(shù)據(jù)掃描 141
5.3 過(guò)濾器快速實(shí)戰(zhàn) 148
5.4 RowKey過(guò)濾器 150
5.5 RowKey前綴過(guò)濾器 152
5.6 RowKey模糊過(guò)濾器 154
5.7 列族過(guò)濾器 155
5.8 列過(guò)濾器 157
5.9 多列前綴過(guò)濾器 158
5.10 首次列鍵過(guò)濾器 159
5.11 列鍵過(guò)濾器 160
5.12 列值過(guò)濾器 161
5.13 單列值過(guò)濾器 163
5.14 列值排除過(guò)濾器 168
5.15 隨機(jī)行過(guò)濾器 169
5.16 分頁(yè)過(guò)濾器 171
5.17 多個(gè)過(guò)濾器綜合查詢(xún) 173
5.18 本章練習(xí) 174
第6章 HBase數(shù)據(jù)批量加載 175
6.1 HBase批量加載簡(jiǎn)介 175
6.2 海量交易記錄數(shù)據(jù)存儲(chǔ)案例 176
6.2.1 案例開(kāi)發(fā)準(zhǔn)備工作 176
6.2.2 編寫(xiě)實(shí)體類(lèi) 177
6.2.3 創(chuàng)建讀取數(shù)據(jù)的Mapper類(lèi) 181
6.2.4 編寫(xiě)驅(qū)動(dòng)類(lèi) 183
6.2.5 上傳數(shù)據(jù)到HDFS 184
6.2.6 將導(dǎo)入的HDFS數(shù)據(jù)與HBase進(jìn)行關(guān)聯(lián) 184
6.3 本章練習(xí) 185
第7章 協(xié)處理器 186
7.1 協(xié)處理器簡(jiǎn)介 186
7.2 協(xié)處理器分類(lèi) 187
7.3 Coprocessor接口 187
7.4 協(xié)處理器的加載 189
7.4.1 使用配置文件加載 189
7.4.2 從表描述器中加載 190
7.5 RegionObserver類(lèi) 192
7.5.1 Region狀態(tài) 199
7.5.2 處理客戶(hù)端API事件 201
7.6 自定義Observer案例 202
7.7 本章練習(xí) 204
第8章 Phoenix在HBase中的整合應(yīng)用 205
8.1 Phoenix簡(jiǎn)介 205
8.2 安裝Phoenix 206
8.2.1 下載 206
8.2.2 安裝 206
8.3 連接Phoenix 207
8.4 Phoenix快速入門(mén) 209
8.4.1 創(chuàng)建表 209
8.4.2 刪除表 211
8.4.3 插入數(shù)據(jù) 211
8.4.4 分頁(yè)查詢(xún) 211
8.5 本章練習(xí) 212
第9章 HBase架構(gòu)深入剖析 213
9.1 HBase架構(gòu)原理 213
9.1.1 RegionServer流程解析 214
9.1.2 StoreFile和HFile結(jié)構(gòu) 215
9.1.3 MemStore和StoreFile 215
9.2 HBase的寫(xiě)流程 216
9.3 HBase的讀流程 217
9.4 HBase如何進(jìn)行增、刪、改、查 218
9.5 數(shù)據(jù)刷寫(xiě) 218
9.5.1 刷寫(xiě)操作的觸發(fā)時(shí)機(jī) 219
9.5.2 刷寫(xiě)流程 220
9.6 數(shù)據(jù)合并 220
9.7 數(shù)據(jù)拆分 221
9.8 本章練習(xí) 223
第10章 HBase的性能優(yōu)化 224
10.1 表設(shè)計(jì)優(yōu)化 224
10.1.1 預(yù)分區(qū) 224
10.1.2 RowKey設(shè)計(jì)優(yōu)化 226
10.1.3 列族數(shù)量?jī)?yōu)化 228
10.1.4 版本優(yōu)化 228
10.2 HBase提升寫(xiě)效率 228
10.3 MemStore調(diào)優(yōu) 229
10.4 合并調(diào)優(yōu) 230
10.5 WAL調(diào)優(yōu) 231
10.6 HBase讀取優(yōu)化 232
10.7 本章練習(xí) 233
第11章 HBase數(shù)據(jù)操作實(shí)戰(zhàn) 234
11.1 創(chuàng)建表并添加表數(shù)據(jù) 234
11.2 修改和刪除表數(shù)據(jù) 237
11.3 批量操作表數(shù)據(jù) 238
11.4 查詢(xún)數(shù)據(jù) 240
11.5 使用過(guò)濾器進(jìn)行數(shù)據(jù)查詢(xún) 246