vlambda博客
学习文章列表

数据中台存储之Hbase|清风

目录

1、HBase是什么?

2、HBase适用哪些场景?

3、HBase不适用哪些场景?

4、HBase的理论基础是什么?

5、HBase的整体架构是什么?

6、HBase核心功能、重要功能有哪些?

7、HBase的案例有哪些?

8、使用HBase能得到什么好处?

9、HBase的不足的地方是什么?

10、HBase怎么上云?


数据存储是数据中台重要的一层,可以选择的数据存储包括关系数据库,NoSQL数据库,图数据库,时序数据库,不同的场景需求不同数据存储决策,下面我们就一起聊聊HBase。

1、HBase是什么?

Apache HBase是 基于Apache Hadoop构建的一个 高可用、高性能、多版本的分布式 NoSQL数据库,是Google BigTable的开源实现,通过在 廉价服务器上搭建大规模 结构化存储集群,提供海量数据高性能的 随机读写能力。

2、HBase适用哪些场景?

(1)单表数据量超千万,而且并发高。

(2)数据分析需求较弱,或者不需要那么灵活或者实时。

(3)构建音乐站用户属性库。用户属性分析和行为分析,标签库。

(4)构建广告实时计算系统。构建广告业务中的实时计算系统,将从网络广告的背景、数据特性、各种流处理框架、案例需求描述、概要设计、详细设计和核心功能实现等多个方面进行细致介绍,完全按照互联网项目从预研、设计、开发和部署的开发规范,将全面涵盖相关的理论背景知识和实践操作。

(5)用户画像。比如大型的视频网站,电商平台产生的用户点击行为、浏览行为等海量用户行为数据。

(6)消息/订单存储。譬如电商平台,因为HBase提供了一个低延时、高并发的访问能力。

(7)对象存储。在KV存储中,Meta数据:sizeof(KeyValue)<1MB,MOB数据:1MB<sizeof(KeyValue)<10MB,表示中等大小的数据,LOB数据:sizeof(KeyValue)>10MB,表示大对象。这里的MOB存储是中等对象存储,是对HDFS存储文件的一个缓冲过度,因为如果我们大量的1M或2M这种小文件直接存储在HDFS上,会对NameNode造成元数据维护的压力,所以在HBase中可以很好的做过度,合并后再持久化到HDFS上。

(8)时序数据。这里的时序数据是指随着时间而变化的数据,比如速度的展示,天气、温度、风速、车流量等等。

(9)Cube分析(KyLin)。通过KyLin将Hive或kafka中的数据,来构建Cube,这些Cube会存储在HBase中,以供其他的应用或其他的系统做实时查询或实时展示。

(10)Feeds流。这个场景主要是应用在抖音、或其他小视频系统中,可以把Feeds流理解为一种内容聚合器,它可以帮助用户实时的获取最新的订阅源内容。

3、HBase不适用哪些场景?

(1)产品主要需求是数据分析,比如做报表。

(2)单表数据量不超过千万。

(3)不能替代关系数据库。

(4)不能替代hdfs。

4、HBase的理论基础是什么?

(1)Google BigTable论文。论证了在大规模廉价服务器上搭建结构化数据存储的可行性。

(2)跳跃表(SkipList)。一种能高效实现插入、删除、查找的内存数据结构,这些操作的期望复杂度都是O(logN)。

(3)LSM树。一种对写入更友好的磁盘数据的索引结构,无论是何种写入请求,LSM树都会将写入操作处理为一次顺序写,而HDFS擅长的正是顺序写(且HDFS不支持随机写),因此基于HDFS实现的HBase采用LSM树作为索引是一种很合适的选择。

(4)布隆过滤器。可以以很小的内存空间快速实现不存在的数据的判断。

(5)Percolator协议。Percolator事务分为两个阶段:预写(Pre-write)和提交(Commit),本质上相当于一个加强的2PC。每一个列族都会预先增加两个列,分别是:

  • lock:存储事务过程中的锁信息;

  • write:存储当前行可见的数据和(最近一次提交)版本号(时间戳)。

5、HBase的整体架构是什么?

HBase体系结构借鉴了BigTable论文,是典型的Master-Slave模型。

Client提供put、scan、get等接口,支持客户端元数据缓存。使用Zookeeper存储和管理元数据。使用主备的Master管理RegionServer集群。一个RegionServer节点包括至少一个HLog,一个BlockCache,多个Region,其中,HLog用来保证写入数据的可靠性,BlockCache用来缓存数据提升查询性能。一个Region包括多个Store,一个Store就对应到一个列族的数据,每个Store包括一个MemStore和多个HFile,通过DFSClient将定制化格式数据的HFile写到HDFS存储系统。

6、HBase核心功能、重要功能有哪些?

(1)RegionServer是HBase系统中最核心的组件,主要负责用户数据写入、读取等基础操作。

(2)Region迁移。作为一个分布式系统,分片迁移是最基础的核心功能。

(3)Region分裂。HBase最核心的功能之一,是实现分布式可扩展性的基础。

(4)Snapshot。HBase非常核心的一个功能,使用在线Snapshot备份可以满足用户很多需求,比如增量备份和数据迁移。

(5)在线合并Region是HBase非常重要的功能之一。

7、HBase的案例有哪些?

(1)目前国内使用Hbase的公司。阿里巴巴、小米、腾讯、网易、华为、滴滴、快手、中国移动、中国电信、中国人寿、京东等。

(2)异常案例:Full GC异常、HDFS异常、RegionServer直接宕机等。

8、使用HBase能得到什么好处?

(1)容量巨大。HBase的单表可以支持千亿行、百万列的数据规模,数据容量可以达到TB甚至PB级别。

(2)良好的可扩展性。HBase集群可以非常方便地实现集群容量扩展,主要包括数据存储节点扩展以及读写服务节点扩展。

(3)稀疏性。HBase支持大量稀疏存储,即允许大量列值为空,并不占用任何存储空间。

(4)高性能。HBase目前主要擅长于OLTP场景,数据写操作性能强劲,对于随机单点读以及小范围的扫描读,其性能也能够得到保证。对于大范围的扫描读可以使用MapReduce提供的API,以便实现更高效的并行扫描。

(5)多版本。HBase支持多版本特性,即一个KV可以同时保留多个版本,用户可以根据需要选择最新版本或者某个历史版本。

(6)支持过期。HBase支持TTL过期特性,用户只需要设置过期时间,超过TTL的数据就会被自动清理,不需要用户写程序手动删除。

(7)Hadoop原生支持。

9、HBase的不足的地方是什么?

(1)HBase本身不支持很复杂的聚合运算(如Join、GroupBy等)。

(2)HBase本身并没有实现二级索引功能,所以不支持二级索引查找。

(3)HBase原生不支持全局跨行事务,只支持单行事务模型。

10、HBase怎么上云?

目前在阿里,已经有上万台的HBase集群,在各个场景下有广泛的应用。也就是说HBase上云方案已经很成熟。支持单独部署(同一个VPC),混合部署(经典网络迁移到VPC)以HBase迁移阿里云的步骤为例:

(1)购买云HBase实例;

(2)申请ECS资源用于部署迁移服务(和HBase混部可以忽略这一项);

(3)打通迁移服务和源集群、目标集群的网络通信;

(4)快速部署启动迁移服务;

(5)拷贝建表信息到目标集群;

(6)增量数据同步开启,进行即时新增数据的同步;

(7)基线数据同步,并进行数据装载;

(8)数据正确性校验,并提供校验报告;

(9)验证;

(10)切换业务上阿里云HBase。

以上,就是我们对HBase的整体认知。如果想更进一步学习,可以读胡争和范欣欣的博客和相关的书,讲得很棒。
YC SB(雅 ,SB, 谐音记忆 ),写完看完 ,别忘记了 用这个 雅虎出品的神奇的性能压测工具测试一把