hbase shell命令 hbase

HBase是什么呢,都有哪些特点呢?Hbase是一种NoSQL数据库,这意味着它不像传统的RDBMS数据库那样支持SQL作为查询语言 。Hbase是一种分布式存储的数据库,技术上来讲,它更像是分布式存储而不是分布式数据库,它缺少很多RDBMS系统的特性,比如列类型,辅助索引,触发器,和高级查询语言等待
那Hbase有什么特性呢?如下:
强读写一致,但是不是“最终一致性”的数据存储,这使得它非常适合高速的计算聚合
自动分片,通过Region分散在集群中,当行数增长的时候,Region也会自动的切分和再分配
自动的故障转移
Hadoop/HDFS集成,和HDFS开箱即用,不用太麻烦的衔接
丰富的“简洁,高效”API,Thrift/REST API,Java API
【hbase shell命令 hbase】块缓存,布隆过滤器,可以高效的列查询优化
操作管理,Hbase提供了内置的web界面来操作,还可以监控JMX指标
什么时候用Hbase?
Hbase不适合解决所有的问题:
首先数据库量要足够多,如果有十亿及百亿行数据,那么Hbase是一个很好的选项,如果只有几百万行甚至不到的数据量,RDBMS是一个很好的选择 。因为数据量小的话,真正能工作的机器量少,剩余的机器都处于空闲的状态
其次,如果你不需要辅助索引,静态类型的列,事务等特性,一个已经用RDBMS的系统想要切换到Hbase,则需要重新设计系统 。
最后,保证硬件资源足够,每个HDFS集群在少于5个节点的时候,都不能表现的很好 。因为HDFS默认的复制数量是3,再加上一个NameNode 。
Hbase在单机环境也能运行,但是请在开发环境的时候使用 。
内部应用
存储业务数据:车辆GPS信息,司机点位信息,用户操作信息,设备访问信息 。。。
存储日志数据:架构监控数据(登录日志,中间件访问日志,推送日志,短信邮件发送记录 。。。),业务操作日志信息
存储业务附件:UDFS系统存储图像,视频,文档等附件信息
不过在公司使用的时候,一般不使用原生的Hbase API,使用原生的API会导致访问不可监控,影响系统稳定性,以致于版本升级的不可控 。
HFile
HFile是Hbase在HDFS中存储数据的格式,它包含多层的索引,这样在Hbase检索数据的时候就不用完全的加载整个文件 。索引的大小(keys的大小,数据量的大小)影响block的大小,在大数据集的情况下,block的大小设置为每个RegionServer 1GB也是常见的 。
探讨数据库的数据存储方式,其实就是探讨数据如何在磁盘上进行有效的组织 。因为我们通常以如何高效读取和消费数据为目的,而不是数据存储本身 。
Hfile生成方式
起初,HFile中并没有任何Block,数据还存在于MemStore中 。
Flush发生时,创建HFile Writer,第一个空的Data Block出现,初始化后的Data Block中为Header部分预留了空间,Header部分用来存放一个Data Block的元数据信息 。
而后,位于MemStore中的KeyValues被一个个append到位于内存中的第一个Data Block中:
注:如果配置了Data Block Encoding,则会在Append KeyValue的时候进行同步编码,编码后的数据不再是单纯的KeyValue模式 。Data Block Encoding是HBase为了降低KeyValue结构性膨胀而提供的内部编码机制 。

hbase shell命令 hbase

文章插图
HBASE名词解析及关系梳理表 :hbase中数据都是以表形式来组织的 , hbase中的表由多个行组成.
row key :hbase中行由一个row key 和一个或多个列族组成,行在存储时按行键的的字典顺序排序.
column 列 :hbase的列由 列族名+列名组成 例如: C1:User_id , C1:sex.
列族 (column family): 列族将一组列名及其值组织在一起,表中的每一行列族必须相同,但是列名不一定相同.官方建议尽量保证每一列数据的列名一致,最好能将同一类列名放在一个列族中.
列名(column) :列族中包含一个个的列名,可以根据列名取得对应的值.
单元格(cell)单元格是由行,列族,列名,值,代表版本的时间戳组成的.
hbase是什么意思hbase的意思如下:
HBase是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统” 。
就像Bigtable利用了Google文件系统(File System)所提供的分布式数据存储一样,HBase在Hadoop之上提供了类似于Bigtable的能力 。
HBase是Apache的Hadoop项目的子项目 。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库 。另一个不同的是HBase基于列的而不是基于行的模式 。

秒懂生活扩展阅读