共计 1190 个字符,预计需要花费 3 分钟才能阅读完成。
HBase 是一个分布式的、面向列的开源数据库,在 Hadoop 之上提供了类似于 Bigtable 的能力,是 Apache 的 Hadoop 项目的子项目。HBase 不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。
HBase 可以说是一个数据库,也可以说是一个存储。拥有双重属性的 HBase 天生就具备广阔的应用场景。在最近的一些版本中,引入了 OffHeap 降低 gc 影响,优化链路延迟,提供 Replica 等可以满足在线的需求。引入 MOB,可以存储 10M 左右的对象,完全适应了对象存储。另外由于自身的并发能力、存储能力,可以说是具有最为竞争力的引擎
HBase 使用场景
1. 时空数据:主要是轨迹、气象网格之类,比如滴滴打车的轨迹数据主要存在 HBase 之中,另外大数据量的车联网企业,数据也都是存在 HBase 中。比如互联网出行,智慧物流与外卖递送,传感网与实时 GIS 等场景。
2. 推荐画像:别是用户的画像,是一个比较大的稀疏矩阵,蚂蚁的风控就是构建在 HBase 上。用户画像有用户数据量大,用户标签多,标签统计维度不确定等特点,适合 HBase 特性的发挥。
3. 消息 / 订单:在电信领域、银行领域,不少的订单查询底层的存储,另外不少通信、消息同步的应用构建在 HBase 之上。
4. 储存浏览记录:大型的视频网站,电商平台产生的用户点击行为、浏览行为等等存储在 HBase 中为后续的智能推荐做数据支撑。
5. 对象存储:这里的对象存储实际是中等对象存储,是对 HDFS 存储文件的一个缓冲过度。HBase 提供了中等对现象的存储能力,中等对象的大小范围在 100k 至 10M 之间。
6. 时序数据:时序数据就是分布在时间上的一系列数值。HBase 之上有 OpenTSDB 模块,可以满足时序类场景的需求。
比如我们有很多的设备、传感器,产生很多数据,如果规模不是特别大的厂家有几千个风机,每个风机有几百个指标,那么就会有一百万左右的时序数据,如果用采样每一秒会产生一百万个时间点,如果用传统数据库,那么每一秒会产生一百万次,持续地往 MQ 做一百万次,它会崩裂。并且查询也是个大问题,除了多维查询以外,我们还会额外地增加时间纬度,查看一段时间的数据。这时候 HBase 很好了满足了时序类场景的需求。
7.Cube 分析 (KyLin): 通过 KyLin 将 Hive 或 kafka 中的数据,来构建 Cube,这些 Cube 会存储在 HBase 中。
8.NewSQL:HBase 上有 Phoenix 的插件,可以满足二级索引、SQL 的需求,对接传统数据需要 SQL 非事务的需求。从 NoSQL 到 NewSQL,Phoenix 或许是新的趋势。
9.Feeds 流:Feed 流,是 RSS 中用来接收该信息来源更新的接口,简单的说就是持续更新并呈现给用户的内容。比如微信朋友圈中看到的好友的一条条状态,微博看到的你关注的人更新的内容,App 收到的一篇篇新文章的推送,都算是 feed 流。