HBase應用實戰與性能調優
內容描述
HBase是一個高可靠、高性能、面向列、可伸縮的分佈式存儲系統。
利用HBase技術可以在廉價的PC服務器上搭建大規模的存儲化集群,
可以對數十億級別的大數據進行實時性的高性能讀寫,在滿足高性能的同時還保證了數據存取的原子性。
本書由淺入深地講解HBase的概念、安裝、配置、部署、高級用法、
性能調優,內容既兼顧了初學者,也適用於想要深入學習HBase的讀者。
本書適用於以前沒有接觸過HBase,或者對HBase有所了解並希望深入學習的讀者,
同時適用於HBase應用開發人員和系統管理人員。
不管你是HBase新手還是HBase專家,相信都能從本書中有所收穫。
目錄大綱
前言
第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的應用場景 4
1.7 HBase的數據模型 7
1.8 HBase的邏輯視圖10
第2章HBase基本架構與快速入門11
2.1 HBase基本架構11
2.2 HBase分佈式環境搭建14
2.2.1 設置服務器名稱14
2.2.2 Hadoop單機安裝15
2.2.3 Hadoop集群安裝20
2.2.4 ZooKeeper集群安裝28
2.2.5 HBase集群安裝31
2.3 HBase容器化技術搭建34
2.3.1 CentOS環境下安裝Docker 34
2.3.2 Windows 10環境下安裝Docker 35
2.3.3 利用Docker安裝HBase 37
2.4 HBase快速入門39
2.4.1 使用HBase Shell 39
2.4.2 使用create命令40
2.4.3 使用alter命令40
2.4.4 使用list命令40
2.4.5 使用describe命令41
2.4.6 使用put命令42
2.4.7 使用get命令42
2.4.8 使用scan命令43
2.4.9 使用deleteall命令43
第3章HBase基本操作44
3.1 help命令44
3.2 常規命令47
3.2.1 查詢集群狀態信息(status命令) 47
3.2.2 查看如何操作表(table_help命令) 48
3.2.3 查詢HBase版本信息(version命令) 49
3.2.4 查看當前用戶(whoami命令) 50
3.2.5 查看進程列表(processlist命令) 50
3.3 DDL命令50
3.3.1 創建表(create命令) 51
3.3.2 修改表信息(alter命令) 52
3.3.3 異步修改表信息(alter_async命令) 55
3.3.4 獲取表的詳細信息(describe命令) 56
3.3.5 獲取HBase中所有的表(list命令) 57
3.3.6 判斷表是否存在(exists命令) 57
3.3.7 以對象的方式操作表(get_table命令) 58
3.3.8 啟用表(enable命令) 58
3.3.9 啟用所有滿足正則表達式的表(enable_all命令) 59
3.3.10 判斷表是否被啟用(is_enabled命令) 60
3.3.11 禁用表(disable命令) 60
3.3.12 禁用所有滿足正則表達式的表(disable_all命令) 60
3.3.13 判斷表是否被禁用(is_disabled命令) 61
3.3.14 刪除表(drop命令) 62
3.3.15 刪除所有滿足正則表達式的表(drop_all命令) 62
3.3.16 獲取RowKey所在的區域(locate_region命令) 63
3.3.17 顯示HBase支持的過濾器(show_filters命令) 64
3.4 命名空間65
3.4.1 創建命名空間(create_namespace命令) 65
3.4.2 修改命名空間(alter_namespace命令) 65
3.4.3 獲取命名空間詳情(describe_namespace命令) 66
3.4.4 獲取命名空間下所有表的名稱(list_namespace_tables命令) 66
3.4.5 獲取所有的命名空間(list_namespace命令) 66
3.4.6 刪除命名空間(drop_namespace命令) 67
3.5 DML命令67
3.5.1 新增或者修改數據(put命令) 68
3.5.2 全表掃描數據(scan命令) 68
3.5.3 獲取表中數據的總行數(count命令) 72
3.5.4 獲取表中的數據(get命令) 73
3.5.5 刪除列族中的某個列(delete命令) 75
3.5.6 刪除整行數據(delete命令) 76
3.5.7 列值自增(incr命令) 77
3.5.8 獲取自增後的列值(get_counter命令) 78
3.5.9 獲取表所對應的Region數量(getsplits命令) 79
3.5.10 清空整個表數據,不保留分區(truncat命令) 79
3.5.11 清空整個表數據,保留分區(truncat preserve命令) 80
第4章Java對接HBase 81
4.1 從“HelloWorld”開始81
4.2 創建表86
4.3 添加數據91
4.4 批量添加數據96
4.5 內容追加101
4.6 修改數據102
4.7 刪除數據103
4.8 批量刪除106
4.9 原子性操作107
4.10 批量操作109
4.11 自增111
4.12 判斷數據是否存在112
4.13 代碼封裝112
第5章客戶端API進階127
5.1 數據查詢127
5.2 數據掃描133
5.3 過濾器快速實戰139
5.4 RowKey過濾器141
5.5 RowKey前綴過濾器143
5.6 RowKey模糊過濾器145
5.7 列族過濾器146
5.8 列過濾器147
5.9 多列前綴過濾器149
5.10 首次列鍵過濾器150
5.11 列鍵過濾器150
5.12 列值過濾器152
5.13 單列值過濾器153
5.14 列值排除過濾器157
5.15 隨機行過濾器159
5.16 分頁過濾器160
5.17 多個過濾器綜合查詢162
第6章HBase批量加載164
6.1 HBase批量加載簡介164
6.2 海量交易記錄數據存儲案例165
6.2.1 案例開發準備工作165
6.2.2 編寫實體類166
6.2.3 創建讀取數據的Mapper類169
6.2.4 編寫驅動類171
6.2.5 上傳數據到HDFS 172
6.2.6 將導入的HDFS數據與HBase進行關聯172
第7章協處理器173
7.1 協處理器簡介173
7.2 協處理器分類174
7.3 Coprocessor接口174
7.4 協處理器的加載176
7.4.1 使用配置文件加載176
7.4.2 從表描述器中加載177
7.5 RegionObserver類178
7.5.1 Region狀態186
7.5.2 處理客戶端API事件187
7.6 自定義Observer案例188
第8章Phoenix在HBase中的整合應用190
8.1 Phoenix簡介190
8.2 安裝Phoenix 191
8.2.1 下載191
8.2.2 安裝191
8.3 連接Phoenix 192
8.4 Phoenix快速入門194
8.4.1 創建表194
8.4.2 刪除表196
8.4.3 插入數據196
8.4.4 分頁查詢196
第9章HBase架構原理解析197
9.1 HBase架構原理197
9.1.1 RegionServer流程解析198
9.1.2 StoreFile和HFile結構199
9.1.3 MemStore和StoreFile 199
9.2 HBase寫流程200
9.3 HBase讀流程201
9.4 HBase如何進行增刪改查202
9.5 數據刷寫202
9.5.1 刷寫操作的觸發時機202
9.5.2 刷寫流程203
9.6 數據合併204
9.7 數據拆分205
第10章HBase性能優化207
10.1 表設計優化207
10.1.1 預分區207
10.1.2 RowKey設計優化209
10.1.3 列族數量優化210
10.1.4 版本優化210
10.2 HBase提升寫效率211
10.3 MemStore調優211
10.4 合併調優212
10.5 WAL調優213
10.6 HBase讀取優化214