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