HBase企业应用开发实战

暂无评价综合评分的显示会考虑用户真实性等多项因素,每部作品出现综合评分的时间不定。
6.213 评价豆瓣读书
阅读

作品简介

国内资深Hadoop技术专家实践经验结晶,完全从企业实际生产环境和需求出发,旨在帮助企业真正解决大数据的落地问题;

系统介绍HBase的功能使用、框架设计、基本原理和高级特性;详细讲解使用HBase设计大型数据应用系统的实践方法和技巧;深刻总结系统运维、监控和性能调优的最佳实践。

本书强调HBase在企业的实际应用,立足于企业的实际生产环境,旨在帮助企业切实解决大数据技术如何落地的问题。三位作者都是奋战在中国大数据技术一线的实践派专家,本书是他们实践经验的结晶。

本书内容在三个维度上具有重要特色:功能维度,从HBase的安装配置、参数设置,到数据模型、表结构设计、客户端使用、高级特性,本书做了系统且详尽的介绍;实战维度,不仅通过3个典型的应用案例详细讲解了如何使用HBase设计大型的数据应用系统,而且还结合实际生产系统讲解了HBase的集群运维、监控和性能调优;理论维度,则深入分析了HBase、框架设计、模式设计和基本原理。可谓是理论与实践完美结合,深度与广度兼备!

【名家推荐】

本书作者在Hadoop开发和运维领域工作近4年,积累了丰富的经验,同时也对Hadoop技术人员在学习过程中可能会遇到的问题有一定的了解,在此基础上写了这本书。从如何用好HBase出发,首先介绍设计原理和应用场景,让读者了解HBase适合什么场景不适合什么场景,然后再介绍应用编程、性能优化和生产环境中的运维经验,可谓由浅入深,循序渐进,值得推荐!

——查礼 博士

中国大数据技术大会(原Hadoop in China)主席,中国计算机学会大数据专家委员会委员,中科院计算所副研究员

近几年,大数据和开源越来越受到各行各业的关注,而作为大数据中不可替代的重中之重,Hadoop及其周边生态,也逐渐从互联网公司向传统行业过渡。本书的几位作者都是在Hadoop与大数据领域深入工作多年的践行者,既有丰富的理论知识,又有多年工作的实战经验。本书着重介绍了HBase的工作原理和设计架构,同时在实际工作的应用场景上亦着墨很重,大数据的神秘不仅仅在于具体的技术细节,更多的是由于它是个新生事物,很多人并不很清楚大数据的技术架构应如何设计,应用场景如何,而我这几位好友结合自己在实际工作中的宝贵经验,通过撰写本书为广大爱好者解答了这一难题。本书是不可多得的理论与实践完美结合的技术书籍。

——向磊 phphiveadmin作者,汉云数衍创始人

大数据的概念已经逐渐深入人心,从互联网行业到传统行业,已经掀起一股“数据驱动商业价值”的热潮。大数据需要落地,需要开源技术来驱动新一轮的变革,而HBase作为大数据落地过程中的神兵利器,已经一次又一次证明了其巨大价值。本书不同于其他HBase的翻译版书籍,由来自国内互联网最前沿的实战派资深人士撰写而成,融合了自身的实战经验,更契合中国企业应用HBase技术的实情。本书由浅入深,结合理论阐述与案例剖析,如同一壶香茶,值得细细品咂。

——数盟社区 致力于为推崇“数据价值”的企业及个人打造最好的数据科学交流平台

马延辉

资深Hadoop技术专家,对Hadoop生态系统相关技术有深刻的理解。曾就职于淘宝、Answers.com、暴风影音等知名互联网公司,从事Hadoop相关的技术工作,在企业级大数据系统的研发、运维和管理方面积累了丰富的实战经验。开源HBase监控工具Ella的作者。在国内Hadoop社区内非常活跃,经常在各种会议和沙龙上做技术分享,深受欢迎。现在专注于大数据技术在传统行业的落地,致力于大数据技术的普及和推广。

孟鑫

资深Hadoop技术专家,在软件行业从业近10年,对海量数据处理技术有着深刻的认识,曾负责Hadoop平台建设工作,在Hadoop开发和运维方面积累了大量的实战经验。于2013年获取了Cloudera的Hadoop Developer认证,多次到企业和社区去分享Hadoop、HBase等方面的技术知识和经验。对技术拥有极大的兴趣,热衷于研究各种新技术,乐于总结和分享经验及教训。目前从事管理工作,但依然热衷于产品设计和实现。

李立松

资深Hadoop技术专家,Easyhadoop技术社区创始人之一,对HDFS、MapReduce、HBase、Hive等Hadoop生态系统中的技术有比较深入的研究,在Hadoop开发方面积累了丰富的经验。曾就职于暴风影音,负责大数据平台开发与应用,担任大数据项目负责人。现在就职于缔元信,担任Hadoop高级工程师,负责缔元信DMP平台的研发工作。

作品目录

  1. HBase企业应用开发实战
  2. 前言
  3. 为什么要写这本书
  4. 读者对象
  5. 如何阅读本书
  6. 勘误和支持
  7. 致谢
  8. 第一部分 基础篇
  9. 第1章 认识HBase
  10. 1.1 理解大数据背景
  11. 1.1.1 什么是大数据
  12. 1.1.2 为何大数据至关重要
  13. 1.1.3 NoSQL在大数据中扮演的角色
  14. 1.2 HBase是什么
  15. 1.2.1 HBase的发展历史
  16. 1.2.2 HBase的发行版本
  17. 1.2.3 HBase的特性
  18. 1.3 HBase与Hadoop的关系
  19. 1.4 HBase的核心功能模块
  20. 1.4.1 客户端Client
  21. 1.4.2 协调服务组件ZooKeeper
  22. 1.4.3 主节点HMaster
  23. 1.4.4 Region节点HRegionServer
  24. 1.5 HBase的使用场景和经典案例
  25. 1.5.1 搜索引擎应用
  26. 1.5.2 增量数据存储
  27. 1.5.3 用户内容服务
  28. 1.5.4 实时消息系统构建
  29. 1.6 本章小结
  30. 第2章 HBase安装与配置
  31. 2.1 先决条件
  32. 2.2 HBase运行模式
  33. 2.2.1 单机模式
  34. 2.2.2 分布式模式
  35. 2.3 HBase的Web UI
  36. 2.4 HBase Shell工具使用
  37. 2.5 停止HBase集群
  38. 2.6 本章小结
  39. 第3章 数据模型
  40. 3.1 两类数据模型
  41. 3.1.1 逻辑模型
  42. 3.1.2 物理模型
  43. 3.2 数据模型的重要概念
  44. 3.2.1 表
  45. 3.2.2 行键
  46. 3.2.3 列族
  47. 3.2.4 单元格
  48. 3.3 数据模型的操作
  49. 3.3.1 读Get
  50. 3.3.2 写Put
  51. 3.3.3 扫描Scan
  52. 3.3.4 删除Delete
  53. 3.4 数据模型的特殊属性
  54. 3.4.1 版本
  55. 3.4.2 排序
  56. 3.4.3 列的元数据
  57. 3.4.4 连接查询
  58. 3.4.5 计数器
  59. 3.4.6 原子操作
  60. 3.4.7 事务特性ACID
  61. 3.4.8 行锁
  62. 3.4.9 自动分区
  63. 3.5 CAP原理与最终一致性
  64. 3.6 本章小结
  65. 第4章 HBase表结构设计
  66. 4.1 模式创建
  67. 4.2 Rowkey设计
  68. 4.3 列族定义
  69. 4.3.1 可配置的数据块大小
  70. 4.3.2 数据块缓存
  71. 4.3.3 布隆过滤器
  72. 4.3.4 数据压缩
  73. 4.3.5 单元时间版本
  74. 4.3.6 生存时间
  75. 4.4 模式设计实例
  76. 4.4.1 实例1:动物分类
  77. 4.4.2 实例2:店铺与商品
  78. 4.4.3 实例3:网上商城用户消费记录
  79. 4.4.4 实例4:微博用户与粉丝
  80. 4.5 本章小结
  81. 第5章 HBase客户端
  82. 5.1 精通原生Java客户端
  83. 5.1.1 客户端配置
  84. 5.1.2 创建表
  85. 5.1.3 删除表
  86. 5.1.4 插入数据
  87. 5.1.5 查询数据
  88. 5.1.6 删除数据
  89. 5.1.7 过滤查询
  90. 5.2 使用HBase Shell工具操作HBase
  91. 5.2.1 命令分类
  92. 5.2.2 常规命令
  93. 5.2.3 DDL命令
  94. 5.2.4 DML命令
  95. 5.2.5 工具命令Tools
  96. 5.2.6 复制命令
  97. 5.2.7 安全命令
  98. 5.3 使用Thrift客户端访问HBase
  99. 5.3.1 Thrift与Thrift2区别
  100. 5.3.2 安装与部署Thrift2
  101. 5.3.3 Python使用案例
  102. 5.4 通过REST客户端访问HBase
  103. 5.4.1 启动服务
  104. 5.4.2 使用REST访问example表
  105. 5.5 使用MapReduce批量操作HBase
  106. 5.5.1 三种访问模式
  107. 5.5.2 实现MapReduce API
  108. 5.5.3 HBase作为输入源示例
  109. 5.5.4 HBase作为输出源示例
  110. 5.5.5 HBase作为共享源示例
  111. 5.6 通过Web UI工具查看HBase状态
  112. 5.6.1 Master状态界面
  113. 5.6.2 RegionServer状态界面
  114. 5.6.3 ZooKeeper统计信息页面
  115. 5.7 其他客户端
  116. 5.8 本章小结
  117. 第二部分 实战篇
  118. 第6章 整合SQL引擎层
  119. 6.1 NoSQL背景知识
  120. 6.1.1 什么是NoSQL
  121. 6.1.2 将SQL整合到HBase的原因
  122. 6.1.3 基于HBase的SQL引擎实现
  123. 6.2 Hive整合HBase的实现
  124. 6.2.1 认识Hive
  125. 6.2.2 Hive整合HBase的环境准备
  126. 6.2.3 Linux环境下重新编译Hive
  127. 6.2.4 Hive参数配置
  128. 6.2.5 启动Hive
  129. 6.2.6 Hive与HBase整合后的框架如何使用
  130. 6.2.7 HBase到Hive的字段映射
  131. 6.2.8 多列与Hive Map类型
  132. 6.3 查询引擎Phoenix
  133. 6.3.1 认识Phoenix
  134. 6.3.2 Phoenix安装环境准备
  135. 6.3.3 Phoenix安装部署
  136. 6.3.4 Phoenix源码编译
  137. 6.3.5 Phoenix中SQLLine的快速使用
  138. 6.3.6 使用JDBC访问Phoenix
  139. 6.4 对象映射框架Kundera
  140. 6.4.1 认识Kundera
  141. 6.4.2 Kundera的客户端API快速使用
  142. 6.4.3 Kundera模块介绍
  143. 6.4.4 Kundera的REST访问方式
  144. 6.5 分布式SQL引擎Lealone
  145. 6.5.1 认识Lealone
  146. 6.5.2 Lealone的安装部署
  147. 6.5.3 通过JDBC访问Lealone
  148. 6.5.4 通过Python访问Lealone
  149. 6.5.5 Lealone特有的建表语法
  150. 6.6 本章小结
  151. 第7章 构建音乐站用户属性库
  152. 7.1 案例背景
  153. 7.1.1 音乐站
  154. 7.1.2 需求概述
  155. 7.1.3 需求范围和系统边界
  156. 7.1.4 需求详述
  157. 7.1.5 名词解释
  158. 7.2 概要设计
  159. 7.2.1 设计目标
  160. 7.2.2 数据规模假设
  161. 7.2.3 功能指标
  162. 7.2.4 系统流程
  163. 7.3 表结构设计
  164. 7.3.1 功能抽象
  165. 7.3.2 逻辑结构
  166. 7.3.3 Rowkey设计
  167. 7.3.4 列族设计
  168. 7.3.5 版本定义
  169. 7.3.6 优化属性定义
  170. 7.4 数据加载
  171. 7.4.1 加载流程
  172. 7.4.2 Mapper类
  173. 7.4.3 Main类
  174. 7.4.4 运行
  175. 7.5 数据检索
  176. 7.5.1 HBaseTable
  177. 7.5.2 HBaseAdmin
  178. 7.5.3 几种检索类型
  179. 7.6 后台查询
  180. 7.6.1 二级索引实现
  181. 7.6.2 后台查询系统
  182. 7.7 本章小结
  183. 第8章 构建广告实时计算系统
  184. 8.1 理解广告数据和流处理框架
  185. 8.1.1 网络广告的几大特性
  186. 8.1.2 网络广告的数据类型
  187. 8.1.3 流处理框架
  188. 8.1.4 背景与需求描述
  189. 8.2 概要设计
  190. 8.2.1 设计目标
  191. 8.2.2 主要功能
  192. 8.2.3 系统架构
  193. 8.3 详细设计
  194. 8.3.1 表结构设计
  195. 8.3.2 功能模块设计
  196. 8.4 核心功能实现
  197. 8.4.1 规划集群环境部署
  198. 8.4.2 安装ZooKeeper集群
  199. 8.4.3 安装Kafka分布式集群
  200. 8.4.4 实现Kafka生产者
  201. 8.4.5 安装Storm分布式集群
  202. 8.4.6 查看集群节点部署情况
  203. 8.4.7 基于Storm-kafka中间件实现计算逻辑
  204. 8.4.8 如何使用HBase中统计数据
  205. 8.5 本章小结
  206. 第三部分 高级篇
  207. 第9章 核心概念
  208. 9.1 核心结构
  209. 9.1.1 B+树
  210. 9.1.2 LSM树
  211. 9.1.3 两种结构本质区别
  212. 9.2 底层持久化
  213. 9.2.1 存储基本架构
  214. 9.2.2 HDFS文件
  215. 9.2.3 Region切分
  216. 9.2.4 合并
  217. 9.2.5 HFile格式
  218. 9.2.6 KeyValue格式
  219. 9.3 预写日志
  220. 9.3.1 概要流程
  221. 9.3.2 相关Java类
  222. 9.3.3 日志回放
  223. 9.3.4 日志一致性
  224. 9.4 写入流程
  225. 9.4.1 客户端
  226. 9.4.2 服务器端
  227. 9.5 查询流程
  228. 9.5.1 两种查询操作
  229. 9.5.2 客户端
  230. 9.5.3 服务器端
  231. 9.6 数据备份
  232. 9.6.1 备份机制架构
  233. 9.6.2 故障恢复
  234. 9.7 数据压缩
  235. 9.7.1 支持的压缩算法
  236. 9.7.2 使用配置
  237. 9.8 本章小结
  238. 第10章 HBase高级特性
  239. 10.1 过滤器
  240. 10.1.1 过滤器的两类参数
  241. 10.1.2 比较器
  242. 10.1.3 列值过滤器
  243. 10.1.4 键值元数据过滤器
  244. 10.1.5 行键过滤器
  245. 10.1.6 功能过滤器
  246. 10.1.7 Thrift使用过滤器
  247. 10.1.8 过滤器总结
  248. 10.2 计数器
  249. 10.2.1 使用Shell操作计数器
  250. 10.2.2 基于单列的计数器
  251. 10.2.3 多列计数器
  252. 10.3 协处理器
  253. 10.3.1 认识协处理器
  254. 10.3.2 观察者Observer
  255. 10.3.3 终端EndPoint
  256. 10.3.4 协处理器部署
  257. 10.4 Schema设计要点
  258. 10.4.1 行键设计
  259. 10.4.2 列族设计
  260. 10.5 二级索引
  261. 10.5.1 Client-managed方式
  262. 10.5.2 ITHBase实现
  263. 10.5.3 IHBase实现
  264. 10.5.4 Coprocessor方式
  265. 10.5.5 MapReduce两种方式
  266. 10.6 布隆过滤器
  267. 10.6.1 基本概念
  268. 10.6.2 配置布隆过滤器
  269. 10.6.3 使用布隆过滤器
  270. 10.7 负载均衡
  271. 10.7.1 全局计划
  272. 10.7.2 随机分配计划
  273. 10.7.3 批量启动分配计划
  274. 10.7.4 通过Shell控制负载均衡
  275. 10.8 批量加载
  276. 10.8.1 准备数据:importtsv
  277. 10.8.2 加载数据:completebulkload
  278. 10.9 本章小结
  279. 第11章 集群运维管理
  280. 11.1 HBase常用工具
  281. 11.1.1 文件检测修复工具hbck
  282. 11.1.2 文件查看工具hfile
  283. 11.1.3 WAL日志查看工具hlog
  284. 11.1.4 压缩测试工具CompressionTest
  285. 11.1.5 数据迁移工具CopyTable
  286. 11.1.6 导出工具export
  287. 11.1.7 导入工具Import
  288. 11.1.8 日志回放工具WALPlayer
  289. 11.1.9 行数统计工具RowCounter
  290. 11.2 Region和RegionServer管理
  291. 11.2.1 大合并工具major_compact
  292. 11.2.2 Region合并工具Merge
  293. 11.2.3 下线节点
  294. 11.2.4 滚动重启
  295. 11.3 性能指标Metrics
  296. 11.3.1 Master Metrics
  297. 11.3.2 RegionServer Metrics
  298. 11.3.3 RPC Metrics
  299. 11.3.4 JVM Metrics
  300. 11.3.5 集群属性Metrics
  301. 11.4 监控系统Ganglia
  302. 11.4.1 HBase监控指标
  303. 11.4.2 安装、部署和使用Ganglia
  304. 11.5 HBase管理扩展JMX
  305. 11.5.1 如何使用JMX
  306. 11.5.2 基于JMX的监控工具Ella
  307. 11.6 报警工具Nagios
  308. 11.7 故障处理
  309. 11.7.1 问题咨询渠道
  310. 11.7.2 常用日志信息
  311. 11.7.3 常用故障调试工具
  312. 11.7.4 客户端故障排查
  313. 11.7.5 MapReduce故障排查
  314. 11.7.6 网络故障排查
  315. 11.7.7 RegionServer相关问题解决
  316. 11.7.8 Master相关问题解决
  317. 11.7.9 ZooKeeper相关问题解决
  318. 11.8 集群备份
  319. 11.8.1 冷备份
  320. 11.8.2 热备份之Replication
  321. 11.8.3 热备份之CopyTable
  322. 11.8.4 热备份之Export
  323. 11.9 本章小结
  324. 第12章 性能调优
  325. 12.1 硬件和操作系统调优
  326. 12.1.1 配置内存
  327. 12.1.2 配置CPU
  328. 12.1.3 操作系统
  329. 12.2 网络通信调优
  330. 12.2.1 配置交换机
  331. 12.2.2 添加机架感知
  332. 12.3 JVM优化
  333. 12.3.1 Java垃圾回收算法
  334. 12.3.2 Java垃圾收集器
  335. 12.3.3 垃圾回收器的选择
  336. 12.3.4 JVM参数设置
  337. 12.4 HBase查询优化
  338. 12.4.1 设置Scan缓存
  339. 12.4.2 显式地指定列
  340. 12.4.3 关闭ResultScanner
  341. 12.4.4 禁用块缓存
  342. 12.4.5 优化行键查询
  343. 12.4.6 通过HTableTool访问
  344. 12.4.7 使用批量读
  345. 12.4.8 使用Filter降低客户端压力
  346. 12.4.9 使用Coprocessor统计行数
  347. 12.4.10 缓存查询结果
  348. 12.5 HBase写入优化
  349. 12.5.1 关闭写WAL日志
  350. 12.5.2 设置AutoFlush
  351. 12.5.3 预创建Region
  352. 12.5.4 延迟日志flush
  353. 12.5.5 通过HTableTool访问
  354. 12.5.6 使用批量写
  355. 12.6 HBase基本核心服务优化
  356. 12.6.1 优化分裂操作
  357. 12.6.2 优化合并操作
  358. 12.7 HBase配置参数优化
  359. 12.7.1 设置RegionServer Handler数量
  360. 12.7.2 调整BlockCache大小
  361. 12.7.3 设置MemStore的上下限
  362. 12.7.4 调整影响合并的文件数
  363. 12.7.5 调整MemStore的flush因子
  364. 12.7.6 调整单个文件大小
  365. 12.7.7 调整ZooKeeper Session的有效时长
  366. 12.8 分布式协调系统ZooKeeper优化
  367. 12.8.1 配置ZooKeeper节点数
  368. 12.8.2 独立ZooKeeper集群
  369. 12.9 表设计优化
  370. 12.9.1 开启布隆过滤器
  371. 12.9.2 调整列族块大小
  372. 12.9.3 设置In Memory属性
  373. 12.9.4 调整列族最大版本数
  374. 12.9.5 设置TTL属性
  375. 12.10 其他优化
  376. 12.10.1 关闭MapReduce的预测执行功能
  377. 12.10.2 修改负载均衡执行周期
  378. 12.11 性能测试
  379. 12.12 本章小结
  380. 附录A HBase配置参数介绍
  381. 附录B Phoenix SQL语法详解
  382. B.1 SQL基本语法
  383. B.2 函数支持
  384. B.3 数据类型
  385. 附录C YCSB编译安装
  386. C.1 安装Maven2
  387. C.2 编译YCSB

评论

载入中

热门划线

  1. 在物理上,一个列族的成员在文件系统上都存储在一起,因为存储优化都是针对列族级别的,这就意味着,访问一个列族的所有成员的方式都是相同的。12 人
  2. 不能经常改变数据的压缩编码,但是如果的确需要改变某个列族的压缩编码,也可以直接更改表定义,设定新的压缩编码。此后Region合并时,生成的HFile全部会采用新编码压缩。这个过程不需要创建新表和复制数据。12 人
  3. 在HBase模式设计过程中需要考虑不少因素,这些因素的列表如下:1)这个表应该有多少个列族。2)列族使用什么数据。3)每个列族应该有多少列。4)列名是什么,尽管列名不必在建表的时候定义,但是读写数据是需要知道的。5)单元应该存放什么数据。6)每个单元存储多少个时间版本。7)行健(Rowkey)结构是什么,应该包含什么信息。11 人
  4. 而大表结构可以解决这一问题,只需要一条行记录加上一个特定的行关键字,就可以实现把所有关于Join的数据合并在一起。11 人
  5. 关系型数据库可以在多列上建立索引,但是HBase只能在Rowkey上建立索引。访问数据库的最主要方法就是使用Rowkey。非Rowkey访问,即在不清楚Rowkey前提下访问表,可以使用扫描全表。11 人
  6. 1.Rowkey是以字典顺序从大到小排序11 人
  7. Rowkey设计可以使用当前时间(观影时间)的Long值作为Rowkey的前缀。另外建议Rowkey最好都是String:一是方便线上使用Shell查数据、排查错误;二是更容易让数据均匀分布;三是不必考虑存储成本。11 人
  8. 列族必须在表建立的时候声明。列则不需要特别声明,用户随时可以创建新列。11 人
  9. 现在HBase并不能很好地处理两个或者三个以上的列族,所以尽量减少列族数量。目前,flush和compaction操作是针对一个Region的,所以当一个列族操作大量数据的时候会引发一个flush。那些不相关的列族也要进行flush操作,尽管它们没有操作多少数据。compaction操作现在是根据一个列族下全部文件的数量触发的,而不是根据文件大小触发的。当很多的列族在进行flush和compaction时,会造成很多没用的I/O负载,要解决这个问题,需要将flush和compaction操作只针对一个列族进行。11 人
  10. 原生HBase只支持从小到大的排序,但是现在有个需求想展现影片热度排行榜,这就要求实现从大到小排列,针对这种情况可以采用Rowkey=Integer.MAX_VALUE-Rowkey的方式将Rowkey进行转换,最大的变最小,最小的变最大,在应用层再转回来即可完成排序需求。10 人

喜欢这本书的人也喜欢