专栏首页大数据技术架构HBase漫谈 | HBase技术选型准则

HBase漫谈 | HBase技术选型准则

聊一聊 NoSQL

NoSQL(Not only SQL)数据库,可以理解为区别于关系型数据库如mysql、oracle等的非关系型数据库。聊到NoSQL不得不提著名的CAP理论,全称 Consistency Available and Partition tolerance,即一致性、可用性与分区容错性,这是Eric Brewer教授提出的分布式系统设计理念,并给出了定论:任何分布式系统只能同时满足其中二点,无法做到三者兼顾。这可以说是NoSQL数据库的理论基石,至今NoSQL领域也称得上是百花齐放了,一直也没有哪一款NoSQL同时兼顾着这三点特性。

NoSQL必须要在一致性、可用性与分区容错性之间做出取舍,目前而言,几乎所有的NoSQL都是在保有分区容错性的基础上选择一致性或可用性,例如HBase就是牺牲了部分可用性换取了完全的一致性,与HBase类似的Cassandra则是牺牲了强一致性换来了可用性的保证。

NoSQL能做哪些事情、不能做哪些事情?NoSQL作为分布式系统的实现,海量数据永久性存储、非结构化数据存储、超大规模数据高效读写、超强水平扩展能力等这些特征让NoSQL得到了广泛应用。然而,事务支持、关联特性,甚至于SQL查询,这些却是NoSQL的短板,也决定了NoSQL尚且取代不了关系型数据库。

HBase 简单介绍

HBase(Hadoop database)是一个分布式、可扩展、面向列的NoSQL数据库,本质上是一个Key-Value系统,底层存储基于HDFS,原生支持MapReduce计算框架,具有高吞吐、低延时的读写特点。

HBase 的主要特性

HBase包含很多特性,这里列举了HBase的一些关键特性:

  • 强一致性读写:HBase并不是最终一致性,而是强一致性的系统,这使得HBase非常适合做高速的聚合操作。
  • 自动sharding:HBase的表在水平方向上以region为单位分布式存储在各个节点上,当region达到一定大小时,就会自动split重新分布数据。
  • 自动故障转移:这是HBase高可用的体现,当某一个节点故障下线时,节点上的region也会下线并会自动转移到状态良好的节点上线。
  • 面向列的存储:HBase是面向列的存储系统,相同特征(列族相同)的数据会被尽量放到一起,这有利于提高数据读取的效率。
  • 无缝结合Hadoop:HBase被定义为Hadoop database,就是基于HDFS做的数据存储,同时原生的支持MapReduce计算引擎。
  • 非常友好的API操作:HBase提供了简单易用的Java API,并且提供了Thrift与REST的API供非Java环境使用。
  • Block Cache与Bloom Filter:查询优化方面HBase支持Block Cache与Bloom Filter,使得HBase能够对海量数据做高效查询。

什么时候使用 HBase

HBase作为一款NoSQL数据库,前面也提及了并不能解决所有问题。关于我们在实际生产过程中满足哪些条件的时候可以选择HBase作为底层存储,这里给出几点建议:

1、数据量规模非常庞大

一般而言,单表数据量如果只有百万级或者更少,不是非常建议使用HBase而应该考虑关系型数据库是否能够满足需求;单表数据量超过千万或者十亿百亿的时候,并且伴有较高并发,可以考虑使用HBase。这主要是充分利用分布式存储系统的优势,如果数据量比较小,单个节点就能有效存储的话则其他节点的资源就会存在浪费。

2、要求是实时的点查询

HBase是一个Key-Value数据库,默认对Rowkey即行键做了索引优化,所以即使数据量非常庞大,根据行键的查询效率依然会很高,这使得HBase非常适合根据行键做单条记录的查询。值得说明的是,允许根据行键的一部分做范围查询,这里涉及到Rowkey的设计问题,不再赘言。

3、能够容忍NoSQL短板

前面提及了NoSQL并不能解决所有问题,HBase也是一样,如果业务场景是需要事务支持、表与表的关联查询等,不建议使用HBase。HBase有它适合的业务场景,我们不能苛求它能够帮我们解决所有问题。

4、数据分析需求并不多

虽然说HBase是一个面向列的数据库,但它有别于真正的列式存储系统比如Parquet、Kudu等,再加上自身存储架构的设计,使得HBase并不擅长做数据分析,或者说数据分析是HBase的弱项,所以如果主要的业务需求就是为了做数据分析,比如做报表,那么不建议直接使用HBase。

如果能够满足上诉的几点,硬件条件也满足的情况下,强烈建议考虑使用HBase作为底层存储解决你的问题。

HBase 的使用场景

由于HBase丰富的特性,加上自身的海量数据存储能力与超大规模并发访问能力,使得HBase应用非常广泛。目前已经在金融、交通、医疗、车联网、IoT等众多领域有了最佳实践,涉及到订单/账单存储、用户画像、时空/时序数据、对象存储、Cube分析等各个使用场景。

更多的应用场景、最佳实践请关注公众号,持续讨论HBase相关话题。

喜欢本文 那就点个在看吧

本文分享自微信公众号 - 大数据技术架构(bigdata-tech),作者:大数据手稿笔记

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-05-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一文读懂 HBase 核心原理与应用场景

    HBase是大数据NoSQL领域里非常重要的分布式KV数据库,是一个高可靠、高性能、高伸缩的分布式存储系统,目前国内知名公司都有在大规模使用,社区也非常活跃。本...

    大数据技术架构
  • 网易基于 HBase 的最佳实践

    本文根据网易杭州研究院技术专家范欣欣在中国HBase技术社区第3届 MeetUp 杭州站分享的《网易HBase实践》编辑整理而成。

    大数据技术架构
  • HBase 性能调优第一弹:内存篇

    这是使用 HBase 最不可避免的一个话题,就是 HBase 的性能调优,而且通常建立在我们对 HBase 内部运行机制比较了解的基础上进行的,因此无论怎么说,...

    大数据技术架构
  • (课程)基于HBase做Storm 实时计算指标存储

    Hi,大家好!我是祝威廉,本来微博也想叫祝威廉的,可惜被人占了,于是改名叫·祝威廉二世。然后总感觉哪里不对。目前在乐视云数据部门里从事实时计算,数据平台、搜索和...

    用户2936994
  • 什么时候才应该使用HBase?

    在使用HBase一定要明白HBase的适用场合,因为HBase并非适用于每种情况。 首先,要确认有足够多的数据存入HBase。 如 果有几亿或者几十亿条记录要存...

    cloudskyme
  • 一文读懂 HBase 核心原理与应用场景

    HBase是大数据NoSQL领域里非常重要的分布式KV数据库,是一个高可靠、高性能、高伸缩的分布式存储系统,目前国内知名公司都有在大规模使用,社区也非常活跃。本...

    大数据技术架构
  • HBase 深入浅出

    HBase 深入浅出 HBase 在大数据生态圈中的位置 提到大数据的存储,大多数人首先联想到的是 Hadoop 和 Hadoop 中的 HDFS 模块。大家熟...

    搜云库
  • Hadoop技术(四)分布式、面向列的开源数据库HBase

    时间静止不是简史
  • Hadoop学习笔记—15.HBase框架学习(基础知识篇)

    HBase是Apache Hadoop的数据库,能够对大型数据提供随机、实时的读写访问。HBase的目标是存储并处理大型的数据。HBase是一个开源的,分布式的...

    Edison Zhou
  • Apache HBase内核深度剖析

    前面一篇文章介绍了Kafka的具体内容,今天讲述一下HBase相关的知识。首先HBase作为大数据发展初期伴随Google三大论文问世的一个组件,在今天依旧被广...

    ThoughtWorks

扫码关注云+社区

领取腾讯云代金券