产品特色
编辑推荐
本书目的是让读者看了不会睡着的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月于硅谷
HBase不睡觉书 电子书 下载 mobi epub pdf txt