具体描述
编辑推荐
Apache HBase项目管理委员会主席Michael Stack作序推荐。
作者Lars George是HBase Committer,HBase文档的主要贡献者,Cloudera公司解决方案架构师,主要为Hadoop和HBase提供技术支持、咨询和培训工作。
这是一本介绍HBase内部机制的书,是HBase开发指南。
内容简介
本书探讨了如何通过使用与HBase高度集成的Hadoop将HBase的可伸缩性变得简单;把大型数据集分布到相对廉价的商业服务器集群中;使用本地Java客户端,或者通过提供了REST、Avro和Thrift应用编程接口的网关服务器来访问HBase;了解HBase架构的细节,包括存储格式、预写日志、后台进程等;在HBase中集成MapReduce框架;了解如何调节集群、设计模式、拷贝表、导入批量数据和删除节点等。
本书适合使用HBase进行数据库开发的高级数据库研发人员阅读。
作者简介
Lars George,HBase项目组成员,他是cloudera的解决方案架构师,提供了关于Hadoop和HBase的技术支持、咨询服务和培训工作。他曾经在多个不同的Hadoop用户组会议发言,并且在如布鲁塞尔的自由及开源软件开发者欧洲会议(FOSDEM)这样的大型会议中发言。
内页插图
精彩书评
“分布式系统充其量只能说是经常‘多云’的。Lars George从那些主题的‘水蒸气’中提炼出了实际的项目,在此过程中,他为我们呈现了一本卓越的HBase指南。”
——Josh Patterson
Cloudera公司
目录
第1章 简介
1.1 海量数据的黎明
1.2 关系数据库系统的问题
1.3 非关系型数据库系统Not-Only-SQL(简称NoSQL)
1.3.1 维度
1.3.2 可扩展性
1.3.3 数据库的范式化和反范式化
1.4 结构
1.4.1 背景
1.4.2 表、行、列和单元格
1.4.3 自动分区
1.4.4 存储API
1.4.5 实现
1.4.6 小结
1.5 HBase:Hadoop数据库
1.5.1 历史
1.5.2 命名
1.5.3 小结
第2章 安装
2.1 快速启动指南
2.2 必备条件
2.2.1 硬件
2.2.2 软件
2.3 HBase使用的文件系统
2.3.1 本地模式
2.3.2 HDFS
2.3.3 S
2.3.4 其他文件系统
2.4 安装选项
2.4.1 Apache二进制发布包
2.4.2 编译源码
2.5 运行模式
2.5.1 单机模式
2.5.2 分布式模式
2.6 配置
2.6.1 hbase-site.xml与hbase-default.xml
2.6.2 hbase-env.sh
2.6.3 regionserver
2.6.4 log4j.properties
2.6.5 配置示例
2.6.6 客户端配置
2.7 部署
2.7.1 基于脚本
2.7.2 Apache Whirr
2.7.3 Puppet与Chef
2.8 操作集群
2.8.1 确定安装运行
2.8.2 Web UI介绍
2.8.3 Shell介绍
2.8.4 关闭集群
第3章 客户端API:基础知识
3.1 概述
3.2 CRUD操作
3.2.1 put方法
3.2.2 get方法
3.2.3 删除方法
3.3 批量处理操作
3.4 行锁
3.5 扫描
3.5.1 介绍
3.5.2 ResultScanner类
3.5.3 缓存与批量处理
3.6 各种特性
3.6.1 HTable的实用方法
3.6.2 Bytes类
第4章 客户端API:高级特性
4.1 过滤器
4.1.1 过滤器简介
4.1.2 比较过滤器
4.1.3 专用过滤器
4.1.4 附加过滤器
4.1.5 FilterList
4.1.6 自定义过滤器
4.1.7 过滤器总结
4.2 计数器
4.2.1 计数器简介
4.2.2 单计数器
4.2.3 多计数器
4.3 协处理器
4.3.1 协处理器简介
4.3.2 Coprocessor类
4.3.3 协处理器加载
4.3.4 RegionObserver类
4.3.5 MasterObserver类
4.3.6 endpoint
4.4 HTablePool
4.5 连接管理
第5章 客户端API:管理功能
5.1 模式定义
5.1.1 表
5.1.2 表属性
5.1.3 列族
5.2 HBaseAdmin
5.2.1 基本操作
5.2.2 表操作
5.2.3 模式操作
5.2.4 集群管理
5.2.5 集群状态信息
第6章 可用客户端
6.1 REST、Thrift和Avro的介绍
6.2 交互客户端
6.2.1 原生Java
6.2.2 REST
6.2.3 Thrift
6.2.4 Avro
6.2.5 其他客户端
6.3 批处理客户端
6.3.1 MapReduce
6.3.2 Hive
6.3.3 Pig
6.3.4 Cascading
6.4 Shell
6.4.1 基础
6.4.2 命令
6.4.3 脚本
6.5 基于Web的UI
6.5.1 master的UI
6.5.2 region服务器的UI
6.5.3 共享页面
第7章 与MapReduce集成
7.1 框架
7.1.1 MapReduce介绍
7.1.2 类
7.1.3 支撑类
7.1.4 MapReduce的执行地点
7.1.5 表拆分
7.2 在HBase之上的MapReduce
7.2.1 准备
7.2.2 数据流向
7.2.3 数据源
7.2.4 数据源与数据流向
7.2.5 自定义处理
第8章 架构
8.1 数据查找和传输
8.1.1 B+树
8.1.2 LSM树
8.2 存储
8.2.1 概览
8.2.2 写路径
8.2.3 文件
8.2.4 HFile格式
8.2.5 KeyValue格式
8.3 WAL
8.3.1 概述
8.3.2 HLog类
8.3.3 HLogKey类
8.3.4 WALEdit类
8.3.5 LogSyncer类
8.3.6 LogRoller类
8.3.7 回放
8.3.8 持久性
8.4 读路径
8.5 region查找
8.6 region生命周期
8.7 ZooKeeper
8.8 复制
8.8.1 Log Edit的生命周期
8.8.2 内部机制
第9章 高级用法
9.1 行键设计
9.1.1 概念
9.1.2 高表与宽表
9.1.3 部分键扫描
9.1.4 分页
9.1.5 时间序列
9.1.6 时间顺序关系
9.2 高级模式
9.3 辅助索引
9.4 搜索集成
9.5 事务
9.6 布隆过滤器
9.7 版本管理
9.7.1 隐式版本控制
9.7.2 自定义版本控制
第10章 集群监控
10.1 介绍
10.2 监控框架
10.2.1 上下文、记录和监控指标
10.2.2 master监控指标
10.2.3 region服务器监控指标
10.2.4 RPC监控指标
10.2.5 JVM监控指标
10.2.6 info监控指标
10.3 Ganglia
10.3.1 安装
10.3.2 用法
10.4 JMX
10.4.1 JConsole
10.4.2 JMX远程API
10.5 Nagios
第11章 性能优化
11.1 垃圾回收优化
11.2 本地memstore分配缓冲区
11.3 压缩
11.3.1 可用的编解码器
11.3.2 验证安装
11.3.3 启用压缩
11.4 优化拆分和合并
11.4.1 管理拆分
11.4.2 region热点
11.4.3 预拆分region
11.5 负载均衡
11.6 合并region
11.7 客户端API:最佳实践
11.8 配置
11.9 负载测试
11.9.1 性能评价
11.9.2 YCSB
第12章 集群管理
12.1 运维任务
12.1.1 减少节点
12.1.2 滚动重启
12.1.3 新增服务器
12.2 数据任务
12.2.1 导入/导出
12.2.2 CopyTable工具
12.2.3 批量导入
12.2.4 复制
12.3 额外的任务
12.3.1 集群共存
12.3.2 端口要求
12.4 改变日志级别
12.5 故障处理
12.5.1 HBase Fsck
12.5.2 日志分析
12.5.3 常见问题
附录A HBase配置属性
附录B 计划
附录C 版本升级
附录D 分支
附录E Hush SQL Schema
附录F 对比HBase和BigTable
前言/序言
HBase 权威指南 (“十二五”国家重点图书出版规划项目) 内容简介 《HBase 权威指南》并非一部教你如何撰写文学作品的书籍,也并非一本探讨哲学思想的著作,更不是一本关于烹饪技巧的百科全书。它聚焦于一个特定且极其重要的技术领域——分布式、面向列的NoSQL数据库HBase。本书的编写目的,是为读者提供一个全面、深入、实用的HBase技术学习和实践指南,帮助开发者、架构师、运维人员乃至技术管理者理解HBase的核心概念、架构原理、核心功能、应用场景,并掌握其部署、调优、监控和开发的最佳实践。 本书为何存在? 在当今数据爆炸式增长的时代,传统的单机关系型数据库在处理海量、高并发、非结构化或半结构化数据的能力上显得捉襟见肘。分布式数据库应运而生,而HBase作为Apache Hadoop生态系统中的重要一员,以其高吞吐量、低延迟、可伸缩性强的特点,在处理PB级数据的场景中展现出了强大的生命力。它能够高效地存储和检索海量数据,支持随机读写,是构建大规模数据应用、实时分析平台、物联网数据存储等场景的理想选择。 然而,HBase虽然强大,但其内部机制复杂,学习曲线相对陡峭。许多开发者和运维人员在实际使用过程中,常常面临概念不清、配置困难、性能瓶颈、故障排查等问题。《HBase 权威指南》正是为了解决这些痛点而精心打造。它旨在打破信息壁垒,系统性地梳理HBase的方方面面,让读者能够真正“吃透”HBase,并将其高效地应用于实际项目中。 本书涵盖哪些核心内容? 本书的内容围绕HBase的核心技术展开,层层递进,确保读者能够循序渐进地掌握。 第一部分:HBase基础概念与架构解析 NoSQL数据库概览: 在深入HBase之前,我们会先对NoSQL数据库的演进、分类(键值存储、文档数据库、列族数据库、图数据库)及其与关系型数据库的对比进行宏观介绍,帮助读者理解HBase在整个数据库技术体系中的定位和优势。 HBase核心概念: 表(Table)、行(Row)、列族(Column Family)、列(Column)、单元格(Cell): 详细解释HBase数据模型的基本构成,以及这些概念如何与传统关系型数据库的表、行、列进行类比和区分。 Rowkey设计: 这是HBase性能优化的关键。本书将深入探讨Rowkey的设计原则、常见模式(如顺序Rowkey、散列Rowkey)、如何避免热点问题,以及设计不当可能带来的性能影响。 时间戳(Timestamp): 解释HBase单元格的多版本存储机制,以及时间戳在版本控制和数据恢复中的作用。 HBase存储结构: 剖析HFile、MemStore、HLog(Write-Ahead Log)等内部存储机制,揭示HBase数据持久化和读写流程的底层逻辑。 HBase架构总览: HMaster: 介绍HMaster在集群管理、元数据管理、表和区域的分配、故障转移等方面的职责。 RegionServer: 阐述RegionServer如何负责存储和管理数据区域(Region),处理客户端的读写请求,以及与HMaster的交互。 ZooKeeper: 强调ZooKeeper在HBase集群中的关键作用,包括master选举、RegionServer注册、元数据存储、配置管理等。 Client: 描述HBase客户端如何与HMaster和RegionServer进行交互,以及请求的路由过程。 第二部分:HBase核心功能与操作 数据模型与Schema设计: 进一步细化列族的设计、数据类型、编码方式等,提供实际场景下的Schema设计指导。 数据读写操作: Put(写入): 详细讲解Put操作的细节,包括单行写入、批量写入、原子性保证等。 Get(读取): 解释Get操作的工作原理,如何通过Rowkey、列族、列进行精确或范围查询。 Scan(扫描): 深入探讨Scan操作的配置选项、性能优化技巧,如过滤器(Filter)的使用、列的过滤、行键的过滤等。 Delete(删除): 介绍不同类型的删除操作(按单元格、按时间戳、按版本),以及其底层实现。 HBase Shell命令: 提供常用的HBase Shell命令集锦,涵盖表的创建、修改、删除,数据的增删改查,以及集群状态的查看等。 HBase API开发: Java API: 详细讲解HBase Java客户端API的使用,包括Configuration、Connection、Table、ResultScanner等核心类,以及如何进行各种数据操作。 其他语言的API(如Python、Go等)简介: 简要介绍主流编程语言与HBase的交互方式。 第三部分:HBase高级特性与性能调优 数据压缩与编码: 介绍HBase支持的多种压缩算法(如Snappy, LZO, GZIP)及其选择策略,以及数据编码(如Dictionary Encoding, Prefix Encoding)对存储效率的影响。 协处理器(Coprocessor): 深度解析协处理器的工作原理,包括Observer Coprocessor和Endpoint Coprocessor,以及如何利用协处理器实现服务器端逻辑(如二次索引、自定义聚合计算),从而提升查询性能。 过滤与查询优化: 详细介绍HBase提供的各种过滤器(包括RowFilter, ColumnFamilyFilter, ColumnQualifierFilter, ValueFilter, RegexStringComparator, PrefixFilter, PageFilter等),以及如何结合使用它们来精确高效地检索数据。 缓存与内存管理: 讲解MemStore、BlockCache等内存结构的作用,以及如何通过调整相关参数来优化读写性能。 Region分裂与合并: 解释Region分裂的触发条件、过程,以及Region合并的作用,并讨论如何控制分裂和合并的节奏以避免性能抖动。 负载均衡与容错: 探讨Region在RegionServer之间的分配和迁移机制,以及RegionServer故障时HMaster的自动恢复和数据迁移策略。 性能监控与诊断: 介绍HBase的监控指标(如请求延迟、吞吐量、MemStore大小、HFile数量等),以及如何利用HBase Web UI、JMX、日志等工具来诊断性能问题。 分布式事务与一致性: 探讨HBase的弱一致性模型,以及在需要强一致性的场景下如何通过应用层逻辑进行模拟或实现。 第四部分:HBase部署、运维与生态集成 HBase集群部署: Standalone模式: 适用于开发和测试环境。 Pseudo-Distributed模式: 模拟分布式环境进行验证。 Distributed模式: 详细讲解在Hadoop集群(HDFS)上的完整分布式部署流程,包括配置项的详解、依赖组件(ZooKeeper, HDFS)的配置要求。 HBase集群运维: 日常监控: 建立完善的监控体系,及时发现和处理潜在问题。 版本升级: 提供HBase版本升级的指导和注意事项。 备份与恢复: 讲解HBase数据的备份策略和恢复流程。 安全配置: 涉及Kerberos认证、ACL授权等安全加固措施。 HBase与其他Hadoop生态系统组件的集成: HDFS: HBase数据存储在HDFS上的工作原理。 MapReduce: 如何使用MapReduce作业读写HBase数据,进行批量处理。 Hive: HBase与Hive的集成,实现SQL化查询HBase数据。 Spark: 利用Spark进行HBase数据分析和处理。 Phoenix: 介绍Phoenix作为HBase的SQL中间件,提供关系型数据库的查询体验。 本书适合哪些读者? 初学者: 想要系统学习HBase技术,从零开始掌握其核心概念和基本操作的开发者和运维人员。 有一定HBase使用经验的工程师: 希望深入理解HBase内部机制,解决实际工作中遇到的性能瓶颈、故障排查等问题。 技术架构师: 在设计和选型大规模数据存储解决方案时,需要全面了解HBase的适用场景、优劣势,并进行技术决策。 大数据技术爱好者: 对分布式数据库、NoSQL技术以及Hadoop生态系统感兴趣的技术人员。 需要进行HBase集群管理和维护的运维团队。 本书的价值与特色 权威性: 作为“十二五”国家重点图书出版规划项目,本书经过了严格的评审和内容把关,力求内容的准确性和专业性。 全面性: 覆盖了HBase从基础概念到高级应用、从开发到运维的各个环节,是一本“一站式”的学习资源。 实践性: 结合大量实际案例和代码示例,帮助读者将理论知识转化为实际操作能力。 深入性: 不仅仅停留在API的使用层面,更深入剖析HBase的内部原理和设计思想,让读者知其然更知其所以然。 易读性: 尽管技术内容深邃,但本书在语言组织和结构安排上力求清晰明了,便于不同层次的读者理解和吸收。 《HBase 权威指南》将是您掌握HBase技术、构建高性能分布式数据应用的得力助手。它将引领您走进HBase的世界,解锁PB级数据的无限可能。