第1章 簡介 1
1.1 海量數據的黎明 1
1.2 關係數據庫係統的問題 5
1.3 非關係型數據庫係統Not-Only-SQL(簡稱NoSQL) 7
1.3.1 維度 9
1.3.2 可擴展性 12
1.3.3 數據庫的範式化和反範式化 12
1.4 結構 15
1.4.1 背景 15
1.4.2 錶、行、列和單元格 16
1.4.3 自動分區 20
1.4.4 存儲API 21
1.4.5 實現 22
1.4.6 小結 25
1.5 HBase:Hadoop數據庫 25
1.5.1 曆史 26
1.5.2 命名 27
1.5.3 小結 27
第2章 安裝 28
2.1 快速啓動指南 28
2.2 必備條件 31
2.2.1 硬件 31
2.2.2 軟件 37
2.3 HBase使用的文件係統 47
2.3.1 本地模式 48
2.3.2 HDFS 49
2.3.3 S3 49
2.3.4 其他文件係統 50
2.4 安裝選項 50
2.4.1 Apache二進製發布包 50
2.4.2 編譯源碼 52
2.5 運行模式 53
2.5.1 單機模式 53
2.5.2 分布式模式 53
2.6 配置 57
2.6.1 hbase-site.xml與hbase-default.xml 58
2.6.2 hbase-env.sh 59
2.6.3 regionserver 59
2.6.4 log4j.properties 59
2.6.5 配置示例 59
2.6.6 客戶端配置 61
2.7 部署 61
2.7.1 基於腳本 62
2.7.2 Apache Whirr 63
2.7.3 Puppet與Chef 63
2.8 操作集群 64
2.8.1 確定安裝運行 64
2.8.2 Web UI介紹 65
2.8.3 Shell介紹 66
2.8.4 關閉集群 66
第3章 客戶端API:基礎知識 68
3.1 概述 68
3.2 CRUD操作 69
3.2.1 put方法 69
3.2.2 get方法 87
3.2.3 刪除方法 97
3.3 批量處理操作 107
3.4 行鎖 110
3.5 掃描 114
3.5.1 介紹 114
3.5.2 ResultScanner類 117
3.5.3 緩存與批量處理 119
3.6 各種特性 125
3.6.1 HTable的實用方法 125
3.6.2 Bytes類 127
第4章 客戶端API:高級特性 129
4.1 過濾器 129
4.1.1 過濾器簡介 129
4.1.2 比較過濾器 132
4.1.3 專用過濾器 139
4.1.4 附加過濾器 147
4.1.5 FilterList 151
4.1.6 自定義過濾器 153
4.1.7 過濾器總結 159
4.2 計數器 160
4.2.1 計數器簡介 160
4.2.2 單計數器 163
4.2.3 多計數器 164
4.3 協處理器 166
4.3.1 協處理器簡介 167
4.3.2 Coprocessor類 168
4.3.3 協處理器加載 171
4.3.4 RegionObserver類 174
4.3.5 MasterObserver類 180
4.3.6 endpoint 184
4.4 HTablePool 190
4.5 連接管理 194
第5章 客戶端API:管理功能 197
5.1 模式定義 197
5.1.1 錶 197
5.1.2 錶屬性 199
5.1.3 列族 202
5.2 HBaseAdmin 207
5.2.1 基本操作 208
5.2.2 錶操作 209
5.2.3 模式操作 217
5.2.4 集群管理 219
5.2.5 集群狀態信息 222
第6章 可用客戶端 230
6.1 REST、Thrift和Avro的介紹 230
6.2 交互客戶端 233
6.2.1 原生Java 233
6.2.2 REST 233
6.2.3 Thrift 240
6.2.4 Avro 244
6.2.5 其他客戶端 245
6.3 批處理客戶端 246
6.3.1 MapReduce 246
6.3.2 Hive 246
6.3.3 Pig 252
6.3.4 Cascading 256
6.4 Shell 257
6.4.1 基礎 257
6.4.2 命令 259
6.4.3 腳本 263
6.5 基於Web的UI 265
6.5.1 master的UI 265
6.5.2 region服務器的UI 270
6.5.3 共享頁麵 272
第7章 與MapReduce集成 275
7.1 框架 275
7.1.1 MapReduce介紹 275
7.1.2 類 276
7.1.3 支撐類 279
7.1.4 MapReduce的執行地點 279
7.1.5 錶拆分 280
7.2 在HBase之上的MapReduce 281
7.2.1 準備 281
7.2.2 數據流嚮 286
7.2.3 數據源 291
7.2.4 數據源與數據流嚮 293
7.2.5 自定義處理 296
第8章 架構 299
8.1 數據查找和傳輸 299
8.1.1 B+樹 299
8.1.2 LSM樹 300
8.2 存儲 302
8.2.1 概覽 303
8.2.2 寫路徑 304
8.2.3 文件 305
8.2.4 HFile格式 313
8.2.5 KeyValue格式 316
8.3 WAL 316
8.3.1 概述 317
8.3.2 HLog類 318
8.3.3 HLogKey類 319
8.3.4 WALEdit類 319
8.3.5 LogSyncer類 319
8.3.6 LogRoller類 320
8.3.7 迴放 321
8.3.8 持久性 324
8.4 讀路徑 325
8.5 region查找 328
8.6 region生命周期 330
8.7 ZooKeeper 330
8.8 復製 333
8.8.1 Log Edit的生命周期 334
8.8.2 內部機製 335
第9章 高級用法 339
9.1 行鍵設計 339
9.1.1 概念 339
9.1.2 高錶與寬錶 341
9.1.3 部分鍵掃描 342
9.1.4 分頁 343
9.1.5 時間序列 344
9.1.6 時間順序關係 348
9.2 高級模式 350
9.3 輔助索引 350
9.4 搜索集成 354
9.5 事務 357
9.6 布隆過濾器 358
9.7 版本管理 361
9.7.1 隱式版本控製 361
9.7.2 自定義版本控製 364
第10章 集群監控 366
10.1 介紹 366
10.2 監控框架 367
10.2.1 上下文、記錄和監控指標 367
10.2.2 master監控指標 372
10.2.3 region服務器監控指標 373
10.2.4 RPC監控指標 375
10.2.5 JVM監控指標 376
10.2.6 info監控指標 377
10.3 Ganglia 378
10.3.1 安裝 379
10.3.2 用法 383
10.4 JMX 386
10.4.1 JConsole 388
10.4.2 JMX遠程API 390
10.5 Nagios 394
第11章 性能優化 395
11.1 垃圾迴收優化 395
11.2 本地memstore分配緩衝區 398
11.3 壓縮 399
11.3.1 可用的編解碼器 400
11.3.2 驗證安裝 401
11.3.3 啓用壓縮 403
11.4 優化拆分和閤並 404
11.4.1 管理拆分 404
11.4.2 region熱點 405
11.4.3 預拆分region 406
11.5 負載均衡 407
11.6 閤並region 408
11.7 客戶端API:最佳實踐 409
11.8 配置 411
11.9 負載測試 414
11.9.1 性能評價 414
11.9.2 YCSB 416
第12章 集群管理 421
12.1 運維任務 421
12.1.1 減少節點 421
12.1.2 滾動重啓 423
12.1.3 新增服務器 424
12.2 數據任務 428
12.2.1 導入/導齣 428
12.2.2 CopyTable工具 433
12.2.3 批量導入 435
12.2.4 復製 438
12.3 額外的任務 440
12.3.1 集群共存 440
12.3.2 端口要求 442
12.4 改變日誌級彆 442
12.5 故障處理 443
12.5.1 HBase Fsck 443
12.5.2 日誌分析 445
12.5.3 常見問題 447
附錄A HBase配置屬性 451
附錄B 計劃 467
附錄C 版本升級 469
附錄D 分支 471
附錄E Hush SQL Schema 473
附錄F 對比HBase和BigTable 475
· · · · · · (
收起)