HBase實戰 HBase in Action

[美]Nick Dimiduk Amandeep Khurana 著

  • HBase實戰-preview-1
HBase實戰-preview-1

商品描述

  HBase是一種NoSQL存儲系統,專門設計用來快速隨機讀寫大規模數據。HBase運行在普通商用服務器上,可以平滑擴展,以支持從中等規模到數十億行、數百萬列的數據集。

  《HBase實戰》是一本基於經驗提煉而成的指南,它教給讀者如何運用HBase設計、搭建及運行大數據應用系統。全書共分為4個部分。前兩個部分分別介紹了分佈式系統和大規模數據處理的發展歷史,講解HBase的基本原理模式設計以及如何使用HBase的高 級特性;第三部分通過真實的應用和代碼示例以及支持這些實踐技巧的理論知識,進一步探索HBase的一些實用技術;第四部分講解如何把原型開發系統升級為羽翼豐滿的生產系統。

  《HBase實戰》適合所有對雲計算、大數據處理技術和NoSQL數據庫感興趣的技術人員閱讀,尤其適合對Hadoop及HBase感興趣的技術人員參考。閱讀《HBase實戰》不要求之前具備HBase、Hadoop或者MapReduce方面的知識。

作者簡介

作者介绍

 

Nick Dimiduk 数据架构师。他2008年开始使用HBase,当时解决了夜间ETL数据作业需要20多个小时才可以完成的问题。之后他把Hadoop和HBase应用到了各种应用场景中,如社交媒体、社交游戏、点击流分析、气候预测和地理信息系统等。Nick还帮助建立了西雅图Scalability Meetup,以支持创业。现在他把主要精力投入在分布式、可扩展的科学数据在线访问系统上。

 

Amandeep Khurana Cloudera公司方案架构师。在这家公司,他帮助用户使用Hadoop和HBase,提供从规划到构建和部署的全程服务。加入Cloudera之前,Amandeep在Amazon的Elastic MapReduce团队工作,提供Amazon Web Services云服务。Amandeep的专业背景在于大规模分布式系统和信息管理。

 

译者介绍

 

谢磊 ChinaHadoop技术社区发起人。毕业于清华大学电机工程系,获工学硕士学位。资 深IT人士,从事软件行业十多年,先后服务于HP、BMC Software、北京小象科技等多家公司,历任HP 软件部和咨询事业部高 级顾问、BMC Software中国区技术总监、北京小象科技有限公司执行董事。对企业级数据中心的建设、运维、管理方面有着深刻的理解。现在从事企业级大数据解决方案的工作,致力于大数据技术的普及和推广。

 

目錄大綱

目 錄

 

第 一部分 HBase基礎

 

第 1章 HBase介紹 3

1.1 數據管理系統:速成 4

1.1.1 你好,大數據 5

1.1.2 數據創新 6

1.1.3 HBase的崛起 7

1.2 HBase使用場景和成功案例 8

1.2.1 典型互聯網搜索問題:BigTable發明的原因 8

1.2.2 抓取增量數據 9

1.2.3 內容服務 12

1.2.4 信息交換 13

1.3 你好HBase 14

1.3.1 快速安裝 14

1.3.2 HBase Shell命令行交互 16

1.3.3 存儲數據 17

1.4 小結 18

 

第 2章 入門 20

2.1 從頭開始 21

2.1.1 創建表 21

2.1.2 檢查表模式 22

2.1.3 建立連接 22

2.1.4 連接管理 23

2.2 數據操作 23

2.2.1 存儲數據 24

2.2.2 修改數據 25

2.2.3 工作機制:HBase寫路徑 25

2.2.4 讀數據 26

2.2.5 工作機制:HBase讀路徑 27

2.2.6 刪除數據 28

2.2.7 合並:HBase的後台工作 28

2.2.8 有時間版本的數據 29

2.2.9 數據模型概括 30

2.3 數據坐標 31

2.4 小結 33

2.5 數據模型 37

2.5.1 邏輯模型:有序映射的映射集合 37

2.5.2 物理模型:面向列族 39

2.6 表掃描 40

2.6.1 設計用於掃描的表 41

2.6.2 執行掃描 42

2.6.3 掃描器緩存 43

2.6.4 使用過濾器 43

2.7 原子操作 44

2.8 ACID語義 45

2.9 小結 46

 

第3章 分佈式的HBase、HDFS和MapReduce 48

3.1 一個MapReduce的例子 49

3.1.1 延遲與吞吐量 49

3.1.2 串行計算吞吐量有限 50

3.1.3 並行計算提高吞吐量 50

3.1.4 MapReduce:用布式計算**大化吞吐量 51

3.2 Hadoop MapReduce概覽 52

3.2.1 MapReduce數據流介紹 53

3.2.2 MapReduce內部機制 57

3.3 分佈式模式的HBase 58

3.3.1 切分和分配大表 58

3.3.2 如何找到region 61

3.3.3 如何找到–ROOT–表 62

3.4 HBase和MapReduce 64

3.4.1 使用HBase作為數據源 64

3.4.2 使用HBase接收數據 66

3.4.3 使用HBase共享資源 67

3.5 信息匯總 71

3.5.1 編寫MapReduce應用 72

3.5.2 運行MapReduce應用 73

3.6 大規模條件下的可用性和可靠性 74

3.6.1 HDFS作為底層存儲 75

3.7 小結 77

 

第 二部分 高 級概念

 

第4章 HBase表設計 81

4.1 如何開始模式設計 82

4.1.1 問題建模 82

4.1.2 需求定義:提前多做準備工作總是有好處的 84

4.1.3 均衡分佈數據和負載的建模方法 87

4.1.4 目標數據訪問 93

4.2 反規範化是HBase世界里的詞語 95

4.3 相同表裡的混雜數據 97

4.4 行鍵設計策略 98

4.5 IO考慮 99

4.5.1 為寫優化 99

4.5.2 為讀優化 101

4.5.3 基數和行鍵結構 101

4.6 從關系型到非關系型 102

4.6.1 一些基本概念 103

4.6.2 嵌套實體 105

4.6.3 沒有映射到的一些東西 106

4.7 列族高 級配置 107

4.7.1 可配置的數據塊大小 107

4.7.2 數據塊緩存 108

4.7.3 激進緩存 108

4.7.4 布隆過濾器 108

4.7.5 生存時間(TTL) 109

4.7.6 壓縮 110

4.7.7 單元時間版本 110

4.8 過濾數據 111

4.8.1 實現一個過濾器 113

4.8.2 預裝過濾器 115

4.9 小結 118

 

第5章 使用協處理器擴展HBase 120

5.1 兩種協處理器 121

5.1.1 Observer協處理器 121

5.1.2 endpoint協處理器 123

5.2 實現一個observer 124

5.2.1 修改模式 124

5.2.2 從HBase開始 126

5.2.3 安裝observer 128

5.2.4 其他安裝選項 130

5.3 實現一個endpoint 131

5.3.1 為endpoint定義接口 131

5.3.2 實現endpoint服務器 132

5.3.3 實現endpoint客戶端 133

5.3.4 部署endpoint服務器 135

5.3.5 試運行 136

5.4 小結 136

 

第6章 其他的HBase客戶端選擇 137

6.1 在UNIX里使用HBase Shell腳本 138

6.1.1 準備HBase Shell 138

6.1.2 使用UNIX Shell腳本創建表模式 139

6.2 使用JRuby進行HBase Shell編程 141

6.2.1 準備HBase Shell 141

6.2.2 訪問TwitBase的users表 142

6.3 通過REST訪問HBase 144

6.3.1 啟動HBase REST服務 145

6.3.2 訪問TwitBase的users表 146

6.4 通過Python使用HBase Thrift網關 149

6.4.1 生成Python語言的HBase Thrift客戶端庫 151

6.4.2 啟動HBase Thrift服務 152

6.4.3 掃描TwitBaseuser表 153

6.5 asynchbase:另外一種HBase Java客戶端 156

6.5.1 創建一個asynchbase項目 157

6.5.2 改變TwitBase的密碼策略 159

6.5.3 試運行 171

6.6 小結 172

 

第三部分 應用系統實例

 

第7章 通過實例學習HBase:OpenTSDB 175

7.1 OpenTSDB概述 176

7.1.1 挑戰:基礎設施監控 177

7.1.2 數據:時間序列 178

7.1.3 存儲:HBase 179

7.2 設計一個HBase應用系統 180

7.2.1 模式設計 180

7.2.2 應用架構 184

7.3 實現一個HBase應用系統 187

7.3.1 存儲數據 187

7.3.2 查詢數據 192

7.4 小結 196

 

第8章 在HBase上查詢地理信息系統 197

8.1 運用地理數據 197

8.2 設計一個空間索引 199

8.2.1 從復合行鍵開始 201

8.2.2 介紹geohash 202

8.2.3 理解geohash 205

8.2.4 在有空間感知特性的行鍵里使用geohash 206

8.3 實現**近鄰居查詢 210

8.4 把計算工作推往服務器端 215

8.4.1 基於查詢多邊形創建一次geohash掃描 217

8.4.2 區域內查詢第 一幕:客戶端 222

8.4.3 區域內查詢第 二幕:WithinFilter 224

8.5 小結 228

 

第四部分 讓HBase運轉起來

 

第9章 部署HBase 233

9.1 規劃集群 234

9.1.1 原型集群 235

9.1.2 小型生產集群(10~20台服務器) 235

9.1.3 中型生產集群(50台以下服務器) 236

9.1.4 大型生產集群(超過50台服務器) 237

9.1.5 Hadoop Master節點 237

9.1.6 HBase Master 238

9.1.7 Hadoop DataNode和HBase RegionServer 238

9.1.8 ZooKeeper 239

9.1.9 採用雲服務怎麽樣? 240

9.2 部署軟件 242

9.2.1 Whirr:在雲端部署 242

9.3 發行版本 244

9.3.1 使用原生Apache發行版本 244

9.3.2 使用Cloudera的CDH發行版本 245

9.4 配置 246

9.4.1 HBase配置 246

9.4.2 與HBase有關的Hadoop配置參數 252

9.4.3 操作系統配置 253

9.5 管理守護進程 254

9.6 小結 255

 

第 10章 運維 256

10.1 監控你的集群 257

10.1.1 HBase如何輸出監控指標 257

10.1.2 收集監控指標和圖形展示 258

10.1.3 HBase輸出的監控指標 260

10.1.4 應用端監控 264

10.2 HBase集群的性能 265

10.2.1 性能測試 265

10.2.2 什麽影響了HBase的性能 268

10.2.3 優化支撐系統 269

10.2.4 優化HBase 270

10.3 集群管理 274

10.3.1 啟動和停止HBase 274

10.3.2 優雅停止和讓節點退役 275

10.3.3 增加節點 276

10.3.4 滾動重啟和升級 276

10.3.5 bin/hbase和HbaseShell 277

10.3.6 維護一致性——hbck 283

10.3.7 查看HFile和HLog 286

10.3.8 預先拆分表 288

10.4 備份和復制 290

10.4.1 集群間復制 290

10.4.2 使用MapReduce作業進行備份 294

10.4.3 備份根目錄 298

10.5 小結 299

 

附錄A 探索HBase系統 300

附錄B 更多關於HDFS的工作原理 307