Apache HBase的现状和发展

中国HBase技术社区第五届MeetUp: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