当前位置:首页 > 设计 > 正文

hbase表设计(hbase数据表的基本设计原则)

Hbase表怎么设计比较合理,怎么实现多表关联查询

1、现在遇到这样的情况:关系型数据库里面(oracle)有全国用户的数据1千多亿; 而且存在不同的数据库里面,每个数据库里面表有50个左右。数据存放入Hbase里面,表怎么设计比较好。怎么实现hbase表里面的关联查询。

2、hbase不支持多表连接。HBase没有太多复杂的多表连接,只有简单的插入、查询、删除、更新等。对于数据操作,HBase没有多表连接操作。对于存储模式,HBase基于列,关系数据库基于行。数据维护方面,HBase没有数据覆盖的操作。

3、格式: create table name,column family其中 table name 为表名,创建表必须指定;column family 为列族名,创建表也必须指定。

4、Hbase是不支持条件查询、聚集操作和Order by查询的!Hbase查询方式只有三种:根据主键,根据主键范围和全表。

5、这样,当进行查询或scan操作的时候,系统效率将会受到影响。行键(RowKey)的设计 首先应该避免使用时序或单调(递减/递增)行键。

HBase性能优化-Rowkey&列族设计

必须在设计上保证RowKey的唯一性。由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上,避免数据热点现象。

必须在设计上保证RowKey的唯一性。由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上, 避免数据热点现象。

我这里只分了三个region,用hbase shell命令创建表,设置预分区数量为3 下图中,可以看到,预分区以后,数据的读写访问请求数量均匀分布在3台RegionServer上,避免了热点问题。

行键(RowKey)的设计 首先应该避免使用时序或单调(递减/递增)行键。

HBase的Rowkey是按照ASCII有序设计的,我们在设计Rowkey时要充分利用这点。比如视频网站上对影片《泰坦尼克号》的弹幕信息,这个弹幕是按照时间倒排序展示视频里,这个时候我们设计的Rowkey要和时间顺序相关。

这个命令一般很少用,因为使用这个=的filer需要扫hbase全表,因为这种方式很少使用,所以暂时没考虑如何优化)二.删除数据功能 ./ihbase –t table_name –rowkey rowkey –delete 根据rowkey进行删除。

HBase中rowkey设计有哪些注意点

1、必须在设计上保证RowKey的唯一性。由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上,避免数据热点现象。

2、设计的RowKey应均匀的分布在各个HBase节点上, 避免数据热点现象。

3、行键(RowKey)的设计 首先应该避免使用时序或单调(递减/递增)行键。

4、rowkey的设计主要为了方便后期的查询(条件查询语句),如果设计的合理,查询速率可以大大提升 分区的设计,主要考量的是入库HBase的速率。如果设计的不合理,会导致局部入库数据过热,严重的有可能出现入库失败的情况。

5、综上所述,我们的rowkey设计为ip+timestamp+port+prot 设计搞定之后,我们再考虑查询的问题。我们知道对于hbase的查询,最快的方式就是get,这样的话,可以迅速定位到一条数据。

hbase中的数据以什么形式存储

1、Zookeeper用来保证任何时候,集群中只有一个master,存贮所有Region的寻址入口以及实时监控Region server的上线和下线信息。并实时通知给Master存储HBase的schema和table元数据。

2、存储时,数据按照RowKey的字典序(byte order)排序存储。设计RowKey时,要充分排序存储这个特性,将经常一起读取的行存储放到一起。(位置相关性)Column Family 列族:HBASE表中的每个列,都归属于某个列族。

3、具有可靠性,高能性,列存储,可伸缩的征,可以对大型数据进行实时、随机的读写访问。

4、HBase在Hadoop之上提供了类似于Bigtable的能力。HBase是Apache的Hadoop项目的子项目。HBase不同于一般的关系数据库,它是一个适合于非结构化数据存储的数据库。另一个不同的是HBase基于列的而不是基于行的模式。

HBase调优:预分区与行键设计

1、像这样预先创建hbase表分区的方式,称之为预分区。hash(主键) + 年月日时(2019062315)这里只取hash(主键)的前6位,使得行键的长度正好是16,也就是8的整数倍,在64位计算机中,效果最好。

2、像这样预先创建hbase表分区的方式,称之为预分区。hash(主键)+年月日时(2019062315)这里只取hash(主键)的前6位,使得行键的长度正好是16,也就是8的整数倍,在64位计算机中,效果最好。

3、已经有自动分区了,为什么还需要预分区? HBase 在创建表的时候,会自动为表分配一个Region,当一个 Region 达到拆分条件时(shouldSplit 为 true),HBase 中该 Region 将会进行 split,分裂为2个 Region,以此类推。

取消
扫码支持 支付码