- 快召唤伙伴们来围观吧
- 微博 QQ QQ空间 贴吧
- 文档嵌入链接
- 复制
- 微信扫一扫分享
- 已成功复制到剪贴板
Apache HBase的现状和发展
展开查看详情
1 .Apache HBase的现状和发展 2018.9.15@HBase Meetup, 深圳 杨文龙
2 .个人简介 杨文龙,花名正研,阿里巴巴技术专家 Ali-HBase内核研发负责人 HBase社区Committer Apache ID: Allan Yang E-mail: allan163@apache.org
3 . 目 录 CONTENT HBase是什么 PART ONE HBase社区的发展 PART TWO HBase2.0 PART THREE HBase未来规划 PART FOUR Become a Committer PART FIVE
4 .HBase是什么 PART ONE
5 . HBase基本概念 HBase(Hadoop Database),是一个基于Google BigTable论文设计的 高可靠性、高性能、可伸缩的分布式存储系统。 • 松散表结构(Schema free) • 原生海量数据分布式存储 • 随机查询、范围查询 • 高吞吐,低延迟 • 在线NOSQL数据库 • 多版本,增量导入、多维删除
6 .HBase的四大基因 自动 LSM 存储计 HBase 分区 Tree 算分离 生态
7 .自动分区 • 数据分片 数据爆发式增长 • 分区自动分裂 访问爆发式增长 • 分区在线Merge
8 .LSM-Tree • LSM (Log Structured Merge) Tree • HBase/Level DB/RocksDB • 随机写 -> 顺序写 • LSM特点 • 写吞吐高 • 不受HDD随机写瓶颈和SSD随机写入放大干扰 • 超强数据导入能力(相对B+Tree)
9 .存储计算分离 • 存储计算分离 • 负载均衡更高效 • 资源扩容更节省 • 存储优化更便捷 • 非对称副本冗余:异构介质、Erasure Code等
10 .HBase生态 计算 数据库 Sqoop Yarn Geo Janus MR Hive Flink ES/Slor Mesa Graph 系 数 Open Ambari 统 Flume 据 Spark Kylin …… Phoenix …… TSDB 管 交 理 换 HBase Kafka Hue HDFS Zookeeper
11 .场景
12 .使用HBase的商业公司
13 . HBase特性总结 • HBase,为大数据而生 • 动态列 – LSM树 • 数据发散的利器 • 离线导入效率巨高 • 协处理器 • 实时写入吞吐大 • 数据校正 • 高效适应个性化 • 增量导入隔离性强 • 异构介质多副本存储 – 伸缩性强 • 海量与实时的性价比满足 – TTL • Erasure Code • 因大而生 • 数据时效性,系统自动处 理 Volume Variety • 时效性的个性化设置 – 多版本 Value Velocity • 数据的第三维度 • 高效删除方式 大数据的四个特征
14 .HBase社区的发展 PART TWO
15 . HBase的起源 • HBase于2006年诞生于Powerset,一家从事自然语言处理和搜 索的创业公司(后被微软收购) • HBase的实现基于Google发布的Big Table 论文,用来解决 Hadoop中随机读写效率低下的问题 • HBase最初的开发人员是Michael Stack和Jim Kellerman • 2007年4月,HBase做为一个模块提交到Hadoop的代码库中, 代码量~8000行 • 2010年5月HBase成为Apache的顶级项目 • 同年,Facebook把HBase使用在其消息平台中
16 .HBase项目现状 目前HBase的代码已经超过100万行
17 . HBase项目现状 每月代码commit数量 HBase Issue数目 每月活跃Contributor人数 • HBase仍然是最活跃的Apache项目之一 • 拥有76个Committer,42位PMC • 共有328位Contributor • 其中14位 Committer/PMC 来自中国
18 .目前版本
19 .HBase2.0 PART THREE
20 . HBase2.0版本发布历史 • Branch-2 分支4年前就已经fork出来 • 花费了一年多的时间才稳定下来: • hbase-2.0.0 released, April 29th, 2018 • hbase-2.0.0-beta2 released, March 22nd, 2018 • hbase-2.0.0-beta1 released January, 16th, 2018 • hbase-2.0.0-alpha4 released November 4th, 2017 • hbase-2.0.0-alpha3 released September 17th, 2017 • hbase-2.0.0-alpha2 released August 21st, 2017 • hbase-2.0.0-alpha1 released June 22nd, 2017 • Release Manager多次更换 • Matteo Bertozzi, Stephen Yuan Jiang, Michael Stack 社区已经从发布HBase2.0的事情上吸取了经验教训,之后会更加好地控制版本 发布的节奏
21 . 新功能:Region Replica • 在CAP理论中,HBase一直是一个CP系统,遵循强一 致的读写语义。 • Server宕机后需要一定的恢复时间 • 为数据分片Region准备多个副本,host在不同的 RegionServer上,称为Region Replica • 提供高可用读,宕机0影响,规避抖动,毛刺,降低 P999延迟 • 高可用读遵循最终一致性协议 • 需要额外耗费CPU/Memory资源,但不会占用额外空 间 解读文章:https://yq.aliyun.com/articles/599162
22 . 新功能:读写链路Off-heap 读写链路数据端到端Off-heap,减少java GC带来的停顿,进一 步降低P999延迟,提高吞吐 写链路 Off-heap: 读链路 Off-heap: • 在RPC层使用Netty的Off-heap ByteBuffer • 使用Off-heap的Bucket Cache • 使用支持Off-heap的Protobuf • 对Bucket Cache进行引用计数,读取时不再需 • 使用Off-heap的Chunk 来存储Memstore中的 要先拷贝到heap KeyValue • 对Bucket Cache进行了一系列性能优化 Network HDFS 端到端的Off-heap
23 . 新功能:读写链路Off-heap Offheap Read-Path in Production - The Alibaba story https://blogs.apache.org/hbase/entry/offheap-read-path-in-production
24 . 新功能:In Memory Compaction • 把Memstore使用的ConcurrentSkipListMap 在内存中 flush成更加紧凑的CellArrayMap • 多个CellArrayMap会在内存中做compaction,使内存 的使用更加紧凑 • 通过In memory的flush和compaction,在内存中可以 存储更多的数据,因此可以提高读性能,同时减少磁 盘IO,减轻compaction小文件造成的写放大 Accordion: HBase Breathes with In-Memory Compaction https://blogs.apache.org/hbase/entry/accordion-hbase-breathes-with-in
25 . 新功能:小对象存储MOB MOB(Moderate Object Storage) 功能使HBase能 高效地存储那些100k~10M 中等大小的对象。这 使得用户可以把文档、图片对象保存到HBase系统 中 • 用户写入的小对象flush成一个独立文件,原有 的KV中的value只存这个对象的引用路径 • 对于存储对象文件,更少地进行compaction来 减少写入放大效应
26 . 新功能:Assignment MangerV2 • 旧AM系统参与角色多,状态更新混乱,效率 低,无事务保证,容易出现RIT问题。 • AM V2使用ProcedureV2来保证 Table/Region 状态转换在master重启后仍然能恢复执行 旧AM中Region变化的过程 • AM V2中去除了Zookeeper做为中间角色, Master/RegionServer直接交互,Region assign/unassgin速度大大提升 解读文章:https://yq.aliyun.com/articles/601096 去除ZK后,Assign速度的提升
27 . 新功能:其他 • 使用Netty替代原有的RPC框架 • 提供原生Async客户端 • Async WAL(WAL并发写三副本) • 更完善的Quota机制 • Region Server Group • 依赖升级 • Guava 0.12 => 0.22 • Protobuf 2.5 => 3.3 • 所有的三方依赖都做了shade,防止和应用依赖冲突 • HBase2.0中共提交了3000多个Issue(包含bugfix)
28 . 兼容性和升级建议 • HBase-1.x的客户端都可以直接读写HBase2.0的集群 • HBase-1.x的集群可以和HBase2.0的集群进行双向的Replication • 由于AMv2变化较大,HBase-1.x中的部分DML/Admin操作可能不兼容 • HBase-1.x中的Endpoint Coprocessor 可以在HBase2.0中直接工作 • 由于Coprocessor的接口发生变化,Observer Coprocessor需要重写 • HBase-1.x Rolling Update to HBase2.0的方案社区还在试验中(不建议滚动 升级) HBase2.x仍然在快速演进中,目前已经发布2.0.2版本和2.1.0版本, 目前HBCK不可用,针对HBase2.0的HBCK2还在研发中
29 .HBase未来规划 PART FOUR