具体描述
HBase是Apache旗下一个高可靠性、高性能、面向列、可伸缩的分布式存储系统。利用HBase技术可在廉价PC 服务器上搭建起大规模的存储化集群。使用HBase可以对数十亿级别的大数据进行实时性的高性能读写,在满足高性能的同时还保证了数据存取的原子性。
本书共分为10章,由浅入深的讲解HBase概念、安装、配置、部署。让读者对HBase先有一个感性认识,再从应用角度,介绍了高级用法、监控和性能调优。既兼顾了初学者也适用于想要深入学习HBase的读者。
本书适合于以前没有接触过HBase,或者了解HBase并希望能够深入掌握的读者,适合HBase应用开发人员和系统管理人员学习使用。
作者简介
杨曦,就职于硅谷某上市公司,对大数据、云计算等技术有较深研究以及项目实践经验。热衷创业、编写开源项目、撰写技术博客。
目录信息
1.1 Node是什么 1
1.1.1 Node与JavaScript 1
1.1.2 Runtime 和 VM 2
第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可以开机自启动 36
2.4.6 最终配置文件 42
2.5 安装HBase 44
2.5.1 单机模式 46
2.5.2 伪分布式模式 48
2.5.3 关于ZooKeeper不得不说的事 53
2.5.4 完全分布式模式 54
2.5.5 HBase Web控制台(UI) 59
2.5.6 让HBase可以开机自启动 60
2.5.7 启用数据块编码(可选) 62
2.5.8 启用压缩器 67
2.5.9 数据块编码还是压缩器?(可选) 71
第3章 HBase基本操作 72
3.1 HBase Shell的使用 72
3.1.1 用create命令建表 73
3.1.2 用list命令来查看库中有哪些表 74
3.1.3 用describe命令来查看表属性 74
3.1.4 用put命令来插入数据 76
3.1.5 用scan来查看表数据 77
3.1.6 用get来获取单元格数据 78
3.1.7 用delete来删除数据 78
3.1.8 deleteall来删除整行记录 80
3.1.9 用disable来停用表 81
3.1.10 用drop来删除表 81
3.1.11 Shell命令列表 82
3.2 使用Hue来查看HBase数据 123
3.2.1 准备工作 123
3.2.2 安装Hue 126
3.2.3 配置Hue 129
3.2.4 使用Hue来查看HBase 134
第4章 客户端API入门 136
4.1. 10分钟教程 136
4.2 30分钟教程 143
4.3 CRUD一个也不能少 149
4.3.1 HTable类和Table接口 149
4.3.2 put方法 150
4.3.3 append方法 157
4.3.4 increment方法 159
4.3.5 get方法 160
4.3.6 exists 方法 164
4.3.7 delete方法 164
4.3.8 mutation方法 166
4.4 批量操作 168
4.4.1 批量put操作 169
4.4.2 批量get操作 169
4.4.3 批量delete操作 170
4.5 BufferedMutator(可选) 170
4.6 Scan扫描 172
4.6.1 用法 172
4.6.2 缓存 175
4.7 HBase支持什么数据格式? 176
4.8 总结 177
第5章 HBase内部探险 178
5.1 数据模型 178
5.2 HBase是怎么存储数据的 180
5.2.1 宏观架构 180
5.2.2 预写日志 WAL 183
5.2.3 MemStore 186
5.2.4 HFile( StoreFile) 186
5.2.5 KeyValue类 188
5.2.6 增删查改的真正面目 188
5.2.7 数据单元层次图 189
5.3 一个KeyValue的历险 190
5.3.1 写入 190
5.3.2 读出 191
5.4 Region的定位 192
第6章 客户端API的高阶用法 195
6.1 过滤器 195
6.1.1 过滤器快速入门 196
6.1.2 比较运算快速入门 201
6.1.3 分页过滤器(PageFilter) 204
6.1.4 过滤器列表(FilterList) 206
6.1.5 行键过滤器 211
6.1.6 列过滤器 216
6.1.7 单元格过滤器 230
6.1.8 装饰过滤器(decorating filter) 232
6.1.9 自定义过滤器 235
6.1.10 如何在hbase shell中使用过滤器 252
6.2 协处理器(coprocessor) 252
6.2.1 协处理器家族 253
6.2.2 快速入门 255
6.2.3 如何加载 258
6.2.4 协处理器核心类 260
6.2.5 观察者(Observers) 262
6.2.6 终端程序(EndPoint) 279
第7章 客户端API的管理功能 293
7.1 列族管理 293
7.2 表管理 299
7.3 Region管理 302
7.4 快照(snapshot)管理 307
7.5 维护工具管理 311
7.5.1 均衡器(Balancer) 311
7.5.2 规整器(Normalizer) 312
7.5.3 目录管理器(catalog janitor) 313
7.6 集群状态以及负载(ClusterStatus & ServerLoad) 314
7.7 Admin的其他方法 318
7.8 可见性标签管理 322
7.8.1 快速入门 324
7.8.2 系统标签 331
7.8.3 用户标签 332
7.8.4 单元格标签 332
第8章 再快一点! 334
8.1 Master和RegionServer的JVM调优 334
8.1.1 先调大堆内存 334
8.1.2 可怕的Full GC 336
8.1.3 Memstore的专属JVM策略MSLAB 338
8.2 Region的拆分 343
8.2.1 Region的自动拆分 344
8.2.2 Region的预拆分(pre-splitting) 348
8.2.3 Region的强制拆分(forced splits) 349
8.2.4 推荐方案 350
8.2.5 总结 350
8.3 Region的合并(merge) 350
8.3.1 通过Merge类合并(merge)Region 351
8.3.2 热合并(online_merge) 351
8.4 WAL的优化 352
8.5 BlockCache的优化 354
8.5.1 LRUBlockCache 355
8.5.2 SlabCache 356
8.5.3 BucketCache 357
8.5.4 组合模式(CombinedBlockCache) 359
8.5.5 总结 360
8.6 Memstore的优化 360
8.6.1 读写中的Memstore 360
8.6.2 Memstore的刷写(flush) 361
8.6.3 总结 363
8.7 HFile(StoreFile)的合并(Compaction) 364
8.7.1 合并的策略 364
8.7.2 Compaction的吞吐量限制参数 377
8.7.3 合并的时候HBase做了什么? 380
8.7.4 Major Compaction 381
8.7.5 总结 383
8.8 诊断手册 383
8.8.1 阻塞急救 383
8.8.2 朱丽叶暂停(Juliet Pause) 384
8.8.3 读取性能调优 387
8.8.4 案例分析 388
第9章 当HBase遇上MapReduce 392
9.1 为什么要用MapReduce 392
9.2 快速入门 392
9.3 慢速入门:编写自己的MapReduce 394
9.3.1 准备数据 394
9.3.2 新建项目 395
9.3.3 建立MapReduce类 396
9.3.4 建立驱动类 399
9.3.5 打包、部署、运行 403
9.4 相关类介绍 405
9.4.1 TableMapper 405
9.4.2 TableReducer 406
9.4.3 TableMapReduceUtil 406
· · · · · · (收起)
读后感
用户评价
这本书的行文节奏把握得相当到位,从宏观的架构演进到微观的参数调优,过渡得自然流畅,丝毫没有那种技术书籍常见的晦涩和枯燥。我个人对底层数据存储的持久化机制特别感兴趣,虽然我不是每天都在和HBase打交道,但那种将数据安全放在首位的理念,是所有信息系统都需要恪守的铁律。作者在描述某些关键模块的实现时,那种深入浅出的表达方式,即便是非专业人士也能大致领会其精妙之处。它就像是给所有痴迷于“快”和“大”的工程师们敲响了一个警钟:稳定和可靠才是真正的速度之源。我甚至能想象到作者在编写这些章节时,一定是经历了无数次的线上故障排查和性能瓶颈的折磨,才能提炼出如此精辟的见解。这本书不仅仅是技术手册,它更像是一部关于如何构建高可用、高韧性系统的“编年史”,记录了无数个夜晚技术人员与系统较劲的过程。
这本书的专业深度毋庸置疑,它显然是基于多年的实战经验沉淀下来的,那种对HBase设计哲学的独到见解,是任何官方文档或入门教程都无法比拟的。虽然我可能无法完全复现书中所描述的所有复杂部署场景,但那种“预见未来风险”的能力,才是真正区分高级工程师和普通开发者的分水岭。书中对数据一致性和事务处理的探讨,尤其体现了作者对于分布式事务复杂性的深刻认识,它没有提供廉价的解决方案,而是展示了在复杂约束下,做出最优权衡的艰难抉择。这种对技术边界的清晰认知和坦诚,非常难得。它没有过度美化技术,而是直面了在海量数据面前,任何系统都可能出现的脆弱性,并提供了与之抗争的智慧。这本书仿佛一位老兵,在给你讲述如何在这片数字战场上生存下来,而不是教你如何赢得每一场无关紧要的战斗。
这本书的封面设计真是太抓人眼球了,那种深邃的蓝色调,配上跃动的光影效果,仿佛在诉说着数据洪流中那些不为人知的秘密。我一直对分布式系统底层的一些机制充满了好奇,尤其是那种需要24/7保持稳定运行的技术,总让人觉得充满了挑战和魅力。读完这本书,虽然内容本身我没有仔细深究那些复杂的算法和代码细节,但那种作者对技术近乎偏执的追求和对系统稳定性的执着,深深地感染了我。它让我意识到,构建一个真正“不睡觉”的系统,需要的不仅仅是强大的硬件堆砌,更是一种精妙的架构设计哲学,一种对异常情况预判和处理的深思熟虑。那种文字中流露出的对HBase生态系统的深刻理解,即便是我这样的旁观者,也能感受到背后蕴含的巨大心血和实战经验。这本书更像是一本行业专家的心法秘籍,它指导的不是如何去“修”一个坏掉的系统,而是如何从一开始就“筑”起一个坚不可摧的堡垒,这种前瞻性的思维,才是最宝贵的财富。
最让我欣赏的是,这本书似乎有一种魔力,能把原本枯燥的系统调优过程,写得像一场引人入胜的侦探小说。那些关于RegionServer负载均衡的讨论,简直就像是在破解一个复杂的谜团,每一步操作、每一种策略的选择,背后都有着极其充分的理由和大量的测试数据支撑。我尤其喜欢其中关于错误处理和恢复策略的章节,它不是简单地罗列错误码,而是真正站在系统设计者的角度,去思考“如果发生最坏的情况,我们该如何优雅地应对”。这种对系统“韧性”的强调,远比单纯追求“性能巅峰”来得实在和有价值。读完这些描述,你会产生一种强烈的冲动,想要去深入了解一个健壮系统背后的每一个齿轮是如何精确咬合的,那种对细节的极致追求,让人肃然起敬。它成功地将工程实践中的血泪教训,转化为了可供后人借鉴的宝贵经验。
我注意到这本书的结构布局非常用心,每一个章节的递进都仿佛在引导读者进行一次深入的“代码考古”。它不仅仅是告诉你“是什么”,更多的是解释了“为什么会是这样”,这种追本溯源的探究精神,是技术学习中最有价值的部分。尤其是对底层I/O和内存管理的分析,那种细致入微的描写,让我对数据如何从磁盘被唤醒,如何在内存中流转,有了全新的、更立体的认识。这本书的价值在于,它提供了一个思考的框架,让你在面对新的技术挑战时,能迅速地将问题映射到已知的、经过验证的模式上去。它不是一本速成手册,更像是一本可以反复研读的参考典籍,每次重读都会有新的体会,因为你自身的阅历在增长,对系统稳定性的理解也在加深。这绝对是一本能让人在技术道路上走得更远、更稳健的必备宝典,它教会了我们如何与复杂性共存,并最终驾驭复杂性。
看的时候确实没有睡着,挺好的一本书,非常适合入门。
比较不错的入门书籍,内容不是很深入
力荐
确实是不睡觉,内容比较生动
看的时候确实没有睡着,挺好的一本书,非常适合入门。