産品特色
編輯推薦
本書目的是讓讀者看瞭不會睡著的HBase技術書。因為我們堅信看一本非常重要,但是一看就想睡的書是一次痛苦的經曆。
我們希望這本書能夠給讀者帶來一次愉快而輕鬆的閱讀經曆,並在其中順便學會HBase的安裝部署、主要功能、架構設計、性能優化與周邊項目。
本書適閤HBase的初學者,欲深入瞭解HBase配置、部署、優化和二次開發的軟件工程師,以及任何對雲計算或者NoSQL相關技術感興趣的讀者。
內容簡介
HBase是Apache旗下一個高可靠性、高性能、麵嚮列、可伸縮的分布式存儲係統。利用HBase技術可在廉價的PC服務器上搭建大規模的存儲化集群,使用HBase可以對數十億級彆的大數據進行實時性的高性能讀寫,在滿足高性能的同時還保證瞭數據存取的原子性。
本書共分為9章,由淺入深地講解HBase概念、安裝、配置、部署,讓讀者對HBase先有一個感性認識,再從應用角度介紹瞭高級用法、監控和性能調優。既兼顧瞭初學者,也適用於想要深入學習HBase的讀者。
本書適閤於以前沒有接觸過HBase,或者瞭解HBase,並希望能夠深入掌握的讀者,適閤HBase應用開發人員和係統管理人員學習使用。
作者簡介
楊曦,就職於矽榖某上市公司,對大數據、雲計算等技術有較深研究以及豐富的項目實踐經驗。熱衷編寫開源項目、撰寫技術博客以及摺騰各種技術項目。
目錄
目 錄
第1章 初識HBase 1
1.1 海量數據與NoSQL 1
1.1.1 關係型數據庫的極限 1
1.1.2 CAP理論 1
1.1.3 NoSQL 2
1.2 HBase是怎麼來的 3
1.3 為什麼要用HBase 3
1.4 你必須懂的基本概念 4
1.4.1 部署架構 4
1.4.2 存儲架構 7
1.4.3 跟關係型數據庫的對比 9
第2章 讓HBase跑起來 11
2.1 本書測試環境 12
2.2 配置服務器名 12
2.3 配置SSH免密登錄 13
2.4 安裝Hadoop 15
2.4.1 安裝Hadoop單機模式 15
2.4.2 安裝Hadoop集群模式 20
2.4.3 ZooKeeper 23
2.4.4 配置Hadoop HA 27
2.4.5 讓Hadoop可以開機自啓動 35
2.4.6 最終配置文件 41
2.5 安裝HBase 43
2.5.1 單機模式 45
2.5.2 僞分布式模式 47
2.5.3 關於ZooKeeper不得不說的事 51
2.5.4 完全分布式模式 52
2.5.5 HBase Web控製颱(UI) 58
2.5.6 讓HBase可以開機自啓動 58
2.5.7 啓用數據塊編碼(可選) 60
2.5.8 啓用壓縮器(可選) 65
2.5.9 數據塊編碼還是壓縮器(可選) 70
第3章 HBase基本操作 71
3.1 hbase shell的使用 71
3.1.1 用create命令建錶 72
3.1.2 用list命令來查看庫中有哪些錶 73
3.1.3 用describe命令來查看錶屬性 73
3.1.4 用put命令來插入數據 74
3.1.5 用scan來查看錶數據 76
3.1.6 用get來獲取單元格數據 77
3.1.7 用delete來刪除數據 77
3.1.8 用deleteall刪除整行記錄 79
3.1.9 用disable來停用錶 80
3.1.10 用drop來刪除錶 80
3.1.11 shell命令列錶 81
3.2 使用Hue來查看HBase數據 121
3.2.1 準備工作 121
3.2.2 安裝Hue 124
3.2.3 配置Hue 127
3.2.4 使用Hue來查看HBase 132
第4章 客戶端API入門 134
4.1 10分鍾教程 134
4.2 30分鍾教程 141
4.3 CRUD一個也不能少 147
4.3.1 HTable類和Table接口 147
4.3.2 put方法 148
4.3.3 append方法 155
4.3.4 increment方法 157
4.3.5 get方法 158
4.3.6 exists 方法 162
4.3.7 delete方法 162
4.3.8 mutation方法 164
4.4 批量操作 166
4.4.1 批量put操作 167
4.4.2 批量get操作 167
4.4.3 批量delete操作 168
4.5 BufferedMutator(可選) 168
4.6 Scan掃描 170
4.6.1 用法 170
4.6.2 緩存 173
4.7 HBase支持什麼數據格式 174
4.8 總結 175
第5章 HBase內部探險 176
5.1 數據模型 176
5.2 HBase是怎麼存儲數據的 178
5.2.1 宏觀架構 178
5.2.2 預寫日誌 181
5.2.3 MemStore 183
5.2.4 HFile 184
5.2.5 KeyValue類 186
5.2.6 增刪查改的真正麵目 186
5.2.7 數據單元層次圖 187
5.3 一個KeyValue的曆險 187
5.3.1 寫入 188
5.3.2 讀齣 188
5.4 Region的定位 189
第6章 客戶端API的高階用法 193
6.1 過濾器 193
6.1.1 過濾器快速入門 194
6.1.2 比較運算快速入門 198
6.1.3 分頁過濾器 201
6.1.4 過濾器列錶 203
6.1.5 行鍵過濾器 208
6.1.6 列過濾器 214
6.1.7 單元格過濾器 227
6.1.8 裝飾過濾器 228
6.1.9 自定義過濾器 231
6.1.10 如何在hbase shell中使用過濾器 248
6.2 協處理器 249
6.2.1 協處理器傢族 249
6.2.2 快速入門 251
6.2.3 如何加載 254
6.2.4 協處理器核心類 256
6.2.5 觀察者 259
6.2.6 終端程序 276
第7章 客戶端API的管理功能 290
7.1 列族管理 290
7.2 錶管理 296
7.3 Region管理 299
7.4 快照管理 304
7.5 維護工具管理 307
7.5.1 均衡器 307
7.5.2 規整器 308
7.5.3 目錄管理器 310
7.6 集群狀態以及負載(ClusterStatus & ServerLoad) 311
7.7 Admin的其他方法 315
7.8 可見性標簽管理 319
7.8.1 快速入門 321
7.8.2 可用標簽 328
7.8.3 用戶標簽 329
7.8.4 單元格標簽 329
第8章 再快一點 331
8.1 Master和RegionServer的JVM調優 331
8.1.1 先調大堆內存 331
8.1.2 可怕的Full GC 333
8.1.3 Memstore的專屬JVM策略MSLAB 335
8.2 Region的拆分 340
8.2.1 Region的自動拆分 341
8.2.2 Region的預拆分 345
8.2.3 Region的強製拆分 347
8.2.4 推薦方案 347
8.2.5 總結 347
8.3 Region的閤並 348
8.3.1 通過Merge類閤並Region 348
8.3.2 熱閤並 348
8.4 WAL的優化 349
8.5 BlockCache的優化 351
8.5.1 LRUBlockCache 352
8.5.2 SlabCache 353
8.5.3 BucketCache 354
8.5.4 組閤模式 356
8.5.5 總結 357
8.6 Memstore的優化 357
8.6.1 讀寫中的Memstore 358
8.6.2 Memstore的刷寫 358
8.6.3 總結 361
8.7 HFile的閤並 361
8.7.1 閤並的策略 361
8.7.2 compaction的吞吐量限製參數 374
8.7.3 閤並的時候HBase做瞭什麼 377
8.7.4 Major Compaction 378
8.7.5 總結 380
8.8 診斷手冊 380
8.8.1 阻塞急救 380
8.8.2 硃麗葉暫停 381
8.8.3 讀取性能調優 384
8.8.4 案例分析 385
第9章 當HBase遇上MapReduce 389
9.1 為什麼要用MapReduce 389
9.2 快速入門 389
9.3 慢速入門:編寫自己的MapReduce 391
9.3.1 準備數據 391
9.3.2 新建項目 392
9.3.3 建立MapReduce類 393
9.3.4 建立驅動類 396
9.3.5 打包、部署、運行 400
9.4 相關類介紹 402
9.4.1 TableMapper 402
9.4.2 TableReducer 403
9.4.3 TableMapReduceUtil 403
前言/序言
前 言
為什麼要叫不睡覺書呢?因為我們發現阻礙人們學習新技術最大的障礙不是技術的難度或者條件的限製,而是學習技術時難以抵擋的睏意,所以我們的目標就是寫一本讓人看瞭不會睡著的HBase技術書籍。希望大傢可以通過這本書成功地入門HBase技術。
為什麼要寫這本書?
? 目前網上關於HBase的知識比較零碎,缺乏係統性。翻譯的作品,語言的組織又不符閤國人的習慣。
? 目前的資料都很舊。連英文的資料很多都過時瞭,比如現在很多的書籍和網上的資料都還在介紹三層查詢架構,可是HBase早已經改成二層查詢架構瞭。實際操作到的跟書上的操作不一樣,這很讓人沮喪。
如何纔能不睡著地看本書
作為本書的作者我強烈不建議大傢從頭按順序地讀到尾,這不是一種好的讀書方式,而且極容易睡著。看書應該是非綫性的,先掃一遍目錄,然後隻看適閤自己的,最後再發散式地補看彆的章節。
? 如果你手頭沒有閤適的環境,或者你想快速瞭解HBase能乾什麼,或者你是公司的運維,想知道怎麼搭建HBase,“第2章 讓HBase跑起來”適閤你。
? 如果公司的運維幫你搭好瞭環境,老闆催著你趕緊做齣項目,那麼請直接看“第4章 客戶端API入門”。
? 如果你更關心HBase是如何實現它的數據結構的,建議你直接看“第5章 HBase內部探險”。
? 如果你想知道HBase如何提升性能,建議你直接看“第8章 再快一點”。
如果你還是覺得睏,那肯定不是這本書的關係,是你的確缺乏睡眠,請馬上去睡覺,有精神瞭再來看書。看得慢,看得少都沒有關係,韆萬彆睏著看!
如何纔能不睡著地看所有書
為什麼我們看技術書籍總是犯睏呢?
因為技術書籍必須把方法和知識點都寫全麵,否則容易誤導讀者,你可以把技術書籍看成是一本電話黃頁。我們總是錯誤地以為既然要學習,那麼每一個知識點、每一個方法都不能錯過,所以認真地精讀每一本技術書籍。你想象一下,如果你精讀一本電話黃頁,會不會感到疲勞?會不會忍不住睡去?
其實不光是讀本書,學習所有的技術書籍都應該掌握正確的方法。那就是:跳著看,具體地說就是不要針對每一個API方法都精讀,這樣很容易迷失在一長串的API方法列錶中,感到疲勞,導緻無法堅持下去;而是針對某個知識點精細地掌握某一個方法,親自實踐這一個方法,然後彆的方法快速略讀過去,等迴頭需要用的時候再迴來查閱。我們需要把每一本技術書籍都看成入門教程+技術手冊,第一遍閱讀的時候把每個知識點挑齣一個方法作為入門,把其他方法當作技術手冊來查閱,你總不會想細讀一本電話黃頁吧。
本書在很多地方都給齣瞭閱讀提示,提醒大傢不要精讀,該略過的部分就要勇敢地略過。
這本書不是HBase知識大全
這本書的目的隻是讓你學會HBase。有些知識點並沒有涉及,比如集群備份、ACL權限控製、REST客戶端等,所以想學習這些知識的同學們可能要失望瞭。我隻能讓你們愉快地入門,更深層次的知識就看你們自己的努力瞭!
技術支持與緻謝
如果你在看本書的時候發現瞭一些問題或者不足之處,請發郵件給alexyang11@qq.com告訴我。
部分彩色圖片可以到下麵網址(注意數字與字母大小寫)下載:
https://pan.baidu.com/s/1slqjJnZ
最後感謝我的傢人、朋友、同事對我編寫本書的幫助,感謝清華大學齣版社的夏毓彥編輯,感謝HBase Team的Ted Yu,沒有他們的幫助,我不可能完成本書!
著者
2017年11月於矽榖
《星河織夢》 內容簡介 在遙遠的未來,人類的足跡早已超越瞭太陽係的邊界,廣袤的宇宙成為瞭我們探索與生存的舞颱。然而,這片璀璨的星海並非寜靜的樂土,古老的傳說、未知的文明以及潛藏的危機,如同織錦般交織在這浩瀚的時空中,構成瞭《星河織夢》所描繪的宏大畫捲。 故事的主角,是年輕而天賦異稟的星際拓荒者——艾莉亞。她齣生在一個名為“晨曦”的邊陲殖民星球,那裏生活著一群勤勞而堅韌的人們,他們依靠著世代相傳的技藝,在貧瘠的土地上辛勤耕耘,與嚴酷的宇宙環境抗爭。艾莉亞自幼便對星空充滿瞭好奇,常常在夜晚仰望那片閃爍的星辰,幻想著探索未知世界的奧秘。她的內心深處,埋藏著一個更加宏大的夢想——尋找傳說中失落的“伊甸星團”,那裏據說蘊藏著能夠淨化被汙染星係的強大力量,也是她故鄉人民賴以生存的希望。 然而,艾莉亞的旅程並非一帆風順。在她踏上徵途的那一刻,便捲入瞭一係列波瀾壯闊的事件之中。首先,她遇到瞭神秘的“星語者”——一個古老種族的後裔,他們擁有能夠與宇宙中能量場溝通的獨特能力。這位星語者,名叫澤菲爾,他看中瞭艾莉亞身上潛藏的特殊潛力,並決定引導她去理解宇宙的深層規律,掌握那些超越凡人理解的力量。 與此同時,一股名為“吞噬者”的暗影勢力也開始在宇宙中蔓延。吞噬者並非血肉之軀,而是一種能夠汲取星球生命力,將其轉化為自身能量的奇特存在。他們的齣現,使得原本就脆弱的星際生態係統雪上加霜,無數文明因此滅亡,隻留下荒蕪的星體和絕望的哭泣。吞噬者的首領,被尊稱為“寂滅”,他是一個古老而強大的個體,他的目標似乎是吞噬整個宇宙,將一切化為虛無。 艾莉亞的冒險,就這樣在尋找“伊甸星團”的使命、澤菲爾的教導以及對抗“吞噬者”的戰爭中展開。她乘坐著一艘由她父親親手打造的,名為“星塵號”的飛船,穿越瞭色彩斑斕的星雲,潛入瞭黑暗的蟲洞,拜訪瞭古老而神秘的異星文明。 在她的旅途中,她結識瞭形形色色的夥伴。有身經百戰的雇傭兵,他們刀口舔血,卻有著一顆俠義之心;有來自高度發達文明的學者,他們帶來瞭先進的科技知識,幫助艾莉亞理解宇宙的奧秘;甚至還有一些奇特的生命形式,它們以我們無法想象的方式存在,卻給予瞭艾莉亞意想不到的幫助。 艾莉亞的探索,不僅僅是地理上的跨越,更是心靈上的成長。她需要學會如何信任他人,如何與不同的文明建立聯係,如何在絕望中尋找希望,如何在力量與責任之間找到平衡。她逐漸認識到,宇宙的和諧並非自然而然,而是需要無數生靈共同守護。 在尋找“伊甸星團”的過程中,艾莉亞和她的夥伴們逐漸揭開瞭宇宙深處的秘密。他們發現,“吞噬者”並非單純的毀滅者,它們的齣現,是宇宙自身能量失衡的體現。而“伊甸星團”,也並非一個簡單的避難所,它是一種能夠引導宇宙能量流動,重塑星際生態的古老智慧。 故事的高潮,發生在“寂滅”集結其力量,準備對宇宙心髒——“創世核心”發起最後攻擊之時。這個核心是整個宇宙能量的源頭,一旦被摧毀,整個宇宙將陷入永恒的黑暗。艾莉亞和她的同伴們,必須在最後的時刻,趕往“創世核心”,阻止“寂滅”的陰謀。 這是一場關乎宇宙存亡的終極之戰。艾莉亞將運用她所學到的一切,包括星語者的教導,以及她從不同文明那裏獲得的智慧,去對抗“寂滅”那壓倒性的力量。這場戰鬥,不僅僅是力量的較量,更是意誌的對抗,是希望與絕望的碰撞。 《星河織夢》描繪瞭一幅波瀾壯闊的星際史詩。它不僅僅是一個關於冒險和戰鬥的故事,更是一個關於成長、關於希望、關於文明之間聯係的深刻寓言。在浩瀚的星辰之下,人類以及其他種族,都在為生存與繁榮而努力,他們用智慧、勇氣和愛,在這片無垠的宇宙中,編織著屬於自己的壯麗夢想。 故事的結局,並非簡單的勝利或失敗,而是一種對未來的展望。艾莉亞最終能否成功阻止“寂滅”?“伊甸星團”的力量是否能夠拯救瀕臨滅亡的宇宙?這些問題的答案,將由讀者在閱讀過程中,隨著艾莉亞的腳步,一同去探索和感受。 《星河織夢》將帶領讀者進入一個充滿想象力的宇宙,感受宇宙的壯麗與神秘,體味生命的脆弱與堅韌,理解個體在宏大命運中的意義。這是一個獻給所有仰望星空,心懷夢想的探索者的故事。