本書以精練的語言介紹HBase的基礎知識,讓初學者能夠快速上手使用HBase,對HBase的核心思想(如數據讀取、數據備份等)和HBase架構(如LSM樹、WAL)有深入的分析,并且讓有經驗的HBase開發(fā)人員也能夠循序漸進地深入理解HBase源碼,以便更好地去調試和解決線上遇到的各種問題。本書更加專注于HBase在線實時系統的調優(yōu),使HBase集群響應延遲更低。本書結合企業(yè)必備的“用戶行為分析系統”,讓讀者能夠快速上手的同時,也不乏企業(yè)HBase實際應用場景,理論不脫離實際,真正做到從入門到精通。
本書適合有一定Java基礎的程序員作為HBase入門教程,HBase運維人員可以將本書作為參考手冊來部署和監(jiān)控HBase,正在將HBase應用到在線生產環(huán)境中的軟件開發(fā)人員也可以參考本書來調優(yōu)HBase在線集群性能。
大數據作為人工智能的基石,當前正站在計算機技術發(fā)展的風口, 而作為Apache頂級項目的HBase的優(yōu)勢是高性能讀寫、彈性伸縮、面向列族存儲,能夠輕松應對數據存儲的爆發(fā),提供對千萬級QPS低延時需求支持,毫無疑問是企業(yè)搭建大數據在線實時應用的首選。
Hadoop生態(tài)系統的HDFS和MapReduce分別為大數據提供了存儲和分析處理能力,但是對在線實時的數據存取則愛莫能助,而HBase彌補了Hadoop的這一缺陷,滿足了在線實時系統低延時的需求。
本書以精煉的語言介紹HBase基礎知識,讓初學者能夠快速上手使用HBase,對HBase 的核心架構思想(如數據讀取、數據備份等)有深入的了解,并且剖析HBase源碼,介紹HBase 1.X 以及2.0帶來的新特性,讓有經驗的HBase開發(fā)人員也能夠循序漸進地深入理解HBase源碼,以便更好地去調試和解決線上遇到的各種問題。
本書更加專注于HBase在線實時系統的調優(yōu),同時不乏企業(yè)HBase實際應用場景,理論聯系實際,非常適合大數據開發(fā)人員、大數據運維人員和Hadoop生態(tài)開發(fā)人員參考和閱讀。
彭旭,2009 年畢業(yè)于武漢大學軟件工程專業(yè),近十年國內頂尖互聯網企業(yè)工作經驗,曾任阿里巴巴天貓技術部資深軟件工程師、珠海市魅族科技有限公司架構師,現在在創(chuàng)業(yè)公司珠海市卓軒科技有限公司任合伙人。精通Java 生態(tài)系統相關技術,對大數據存儲、HBase 系統調優(yōu)有深刻理解,帶領團隊將云服務存儲系統從MySQL 遷移到HBase,每年為公司節(jié)省成本數百萬元。
目錄
第1章 HBase簡介 1
1.1 背景 1
1.2 NoSQL與傳統RDBMS 2
1.3 應用場景 3
1.3.1 Facebook用戶交互數據 3
1.3.2 淘寶TLog等 3
1.3.3 小米云服務 4
1.3.4 用戶行為數據存儲 4
第2章 HBase安裝 5
2.1 單機部署 5
2.1.1 前置條件 5
2.1.2 下載HBase 6
2.1.3 配置HBase 6
2.1.4 啟動HBase 6
2.1.5 HBase初體驗 7
2.2 分布式部署 8
2.2.1 環(huán)境準備 9
2.2.2 ZooKeeper安裝 11
2.2.3 Hadoop安裝 12
2.2.4 HBase安裝 23
2.2.5 啟動集群 28
2.3 集群增刪節(jié)點 29
2.3.1 增加節(jié)點 29
2.3.2 刪除節(jié)點 30
第3章 HBase數據模型 33
3.1 邏輯模型 33
3.2 物理模型 35
第4章 HBase shell 39
4.1 數據定義語言 39
4.1.1 創(chuàng)建表 39
4.1.2 查看所有表 40
4.1.3 查看建表 40
4.1.4 修改表 41
4.2 數據操縱語言 41
4.2.1 Put 41
4.2.2 Get 42
4.2.3 Scan 43
4.2.4 刪除數據 45
4.3 其他常用shell 46
4.3.1 復制狀態(tài)查看 46
4.3.2 分區(qū)拆分 47
4.3.3 分區(qū)主壓縮 47
4.3.4 負載均衡開關 48
4.3.5 分區(qū)手動遷移 48
第5章 模式設計 49
5.1 行鍵設計 50
5.2 規(guī)避熱點區(qū)間 52
5.3 高表與寬表 54
5.4 微信朋友圈設計 55
5.4.1 需求定義 55
5.4.2 問題建!55
第6章 客戶端API 61
6.1 Java客戶端使用 61
6.2 數據定義語言 64
6.2.1 表管理 64
6.2.2 分區(qū)管理 66
6.3 數據操縱語言 68
6.3.1 Put 68
6.3.2 Get 70
6.3.3 Scan 72
6.3.4 Delete 74
6.3.5 Increment 76
6.4 過濾器 78
6.4.1 過濾器簡介 78
6.4.2 過濾器使用 81
6.5 事務 94
6.5.1 原子性 95
6.5.2 隔離性 95
第7章 架構實現 101
7.1 存儲 101
7.1.1 B+樹 101
7.1.2 LSM樹 102
7.1.3 WAL 104
7.2 數據寫入讀取 107
7.2.1 定位分區(qū)服務器 107
7.2.2 數據修改流程 108
7.2.3 數據查詢流程 113
第8章 協處理器 115
8.1 觀察者類型協處理器 115
8.2 端點類型協處理器 132
8.3 裝載/卸載協處理器 136
8.3.1 靜態(tài)裝載/卸載 136
8.3.2 動態(tài)裝載/卸載 137
第9章 HBase性能調優(yōu) 141
9.1 客戶端調優(yōu) 141
9.1.1 設置客戶端寫入緩存 141
9.1.2 設置合適的掃描緩存 143
9.1.3 跳過WAL寫入 143
9.1.4 設置重試次數與間隔 144
9.1.5 選用合適的過濾器 144
9.2 服務端調優(yōu) 145
9.2.1 建表DDL優(yōu)化 145
9.2.2 禁止分區(qū)自動拆分與壓縮 150
9.2.3 開啟機柜感知 151
9.2.4 開啟Short Circuit Local Reads 153
9.2.5 開啟補償重試讀 154
9.2.6 JVM內存調優(yōu) 155
第10章 集群間數據復制 163
10.1 復制 164
10.1.1 集群拓撲 165
10.1.2 配置集群復制 166
10.1.3 驗證復制數據 169
10.1.4 復制詳解 171
10.2 快照 175
10.2.1 配置快照 176
10.2.2 管理快照 176
10.3 導出和導入 178
10.3.1 導出 178
10.3.2 導入 180
10.4 復制表 180
第11章 監(jiān)控 183
11.1 Hadoop監(jiān)控 183
11.1.1 Web監(jiān)控頁面 184
11.1.2 JMX監(jiān)控 185
11.2 HBase監(jiān)控 188
11.2.1 Web監(jiān)控頁面 188
11.2.2 JMX監(jiān)控 190
11.2.3 API監(jiān)控 192
后記 195
附錄 常見問題 197