shell命令,hbase


有知道HBase使用场景有哪些的吗?

shell命令,hbase


【shell命令,hbase】HBase 简介HBase(Hadoop database)是一个分布式、可扩展、面向列的 NoSQL 数据库 , 本质上是一个 Key-Value 系统 , 底层存储基于 HDFS , 原生支持 MapReduce 计算框架 , 具有高吞吐、低延时的读写特点 。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能够对海量数据做高效查询 。
什么时候使用 HBaseHBase作为一款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作为底层存储解决你的问题 。

    推荐阅读