
正文
hbase创建列族和列,hbase的列族是如何存储的
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
HBase性能优化-Rowkey&列族设计
必须在设计上保证RowKey的唯一性。由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上,避免数据热点现象。rowkey:行键设计的三个原则唯一必须在设计上保证其唯一性。
必须在设计上保证RowKey的唯一性。由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上, 避免数据热点现象。
目前针对这种较大KeyValue写入性能较差的问题还没有直接的解决方案,好在社区已经意识到这个问题,在接下来即将发布的下一个大版本HBase 0.0版本会针对该问题进行深入优化,详见 HBase MOB ,优化后用户使用HBase存储文档、图片等二进制数据都会有极佳的性能体验。
基于此我们可以控制在建表的时候,创建多个空region,并确定每个region的起始和终止rowkey,这样只要我们的rowkey设计能均匀的命中各个region,就不会存在写热点问题。自然split的几率也会大大降低。当然随着数据量的不断增长,该split的还是要进行split。像这样预先创建hbase表分区的方式,称之为预分区。
相关问答
Q1: hbase是怎么进行读写的
所以hbase大多数读要走磁盘,所以读很慢。 每次刷写会生成新的Hfile,Hfile很小并且数量多的时候会影响查询的速度。所以要进行合并。
hbase客户端通过rpc调用将put、delete数据请求提交到对应的regionserver,regionserver对请求进行处理,并将数据最终写入hfile中,进行持久化保存。hbase为了保证随机读取的性能,所以hfile里面的rowkey是有序的。
写的权限是因为在HFile跨越多个Region时,需要对HFile进行split操作。
以及 RegionServer的服务器地址。HBase应用举例 Hbase适合需对数据进行随机读操作或者随机写操作、大数据上高并发操作,比如每秒对PB级数据进行上千次操作以及读写访问均是非常简单的操作。淘宝指数是Hbase在淘宝的一个典型应用。交易历史纪录查询很适合用Hbase作为底层数据库。
Q2: HBase建表后能否添加列族?如何添加?
1、要使用 Java API 在 Apache HBase 中添加名为表的列族,您可以使用 theclass 的方法。此方法将 a object 作为参数,该参数指定要创建的列系列的详细信息,例如其名称和配置设置。infocreateColumnFamilyAdminColumnFamilyDescriptor 下面是如何执行此操作的示例:在此代码中,我们首先从包中导入所需的类。
2、必须在设计上保证RowKey的唯一性。由于在HBase中数据存储是Key-Value形式,若向HBase中同一张表插入相同RowKey的数据,则原先存在的数据会被新的数据覆盖。设计的RowKey应均匀的分布在各个HBase节点上,避免数据热点现象。rowkey:行键设计的三个原则唯一必须在设计上保证其唯一性。
3、对HBase的读写操作,实际上就是对这张表进行增删改查操作。 对于写操作,HBase提供了Put操作。一个Put操作就是一次写操作,它将指定Row Key的数据写入到HBase中。例如,我们可以创建一个Put对象,指定行键,然后添加需要写入的列族、列限定符和值,最后通过Table对象的put方法将其写入HBase。
4、列族必须作为表模式(schema)定义的一部分预先给出;列名以列族作为前缀,每个“列族”都可以有多个列成员(column);HBase把同一列族里面的数据存储在同一目录下,由几个文件保存。
5、在HBase中,数据表的组织结构与传统的关系型数据库有所不同。为了更好地理解HBase的数据表结构,我们可以先回顾一下关系数据库中的表的处理方式。例如,在一个用户表user_info中,有字段:id、name、tel,这些表名和字段需要在建表时指定。
6、为了避免数据存在过多版本造成的的管理 (包括存贮和索引)负担,HBASE提供 了两种数据版本回收方式。一是保存数据的最后n个版本,二是保存最近一段 时间内的版本(比如最近七天)。用户可以针对每个列族进行设置。
hbase创建列族和列的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于hbase的列族是如何存储的、hbase创建列族和列的信息别忘了在本站进行查找喔。






