hbase查看数据分区,hbaseshell查看分区

hbase依据什么分布判断存储hbase依据数据分布判断存储 。数据分布问题简述 分布式产生的根源是“规模” , 规模可理解为计算和存储的需求 。当单机能力无法承载日益增长的计算存储需求时,就要寻求对系统的扩展方法 。
每个列簇对应HDFS中的一个单独文件,hbase不是按行存储,你想一行有多列族的情况下,就会把数据存在多个文件下 , 按行存储的意思,是会把行数据存在一个文件中 , 所以hbase是按列存储的 。
HBase采用了类似Google Bigtable的数据模型 , 即一个稀疏的、分布式的、持久化的多维映射表,每个表都由行键、列族、列限定符和时间戳组成 。
HBase中表的数据是存储在RegionServer上的一个个Region中的,表的一个列族对应于一个Region 。Region是按照数据行键Rowkey的字典序来存储数据的 。
HBase从入门到精通11:HBase数据保存过程和Region分裂每个 cell都保存 着同一份数据的多个版本 。版本通过时间戳来索引 。时间戳的类型是 64位整型 。时间戳可以由HBASE(在数据写入时自动 )赋值,此时时间戳是精确到毫秒 的当前系统时间 。时间戳也可以由客户显式赋值 。
HBase数据模型 HBase是基于Google BigTable模型开发的,典型的key/value系统 。一个Row key对应很多Column Family,Column Family中有很多Column 。其中,保存了不同时间戳的数据 。如图所示,Rowkey cutting对应列簇info和roles 。
所以你先去网上看看rowkey的设计原则,比如长度原则等等,然后根据自己业务,哪些查询经常用到,哪些不会用到 , 想要用hbase实现那种非常灵活的类似关系数据库的查询是不理智的 。
http:// HBASE基于HDFS作为默认推荐的存储引擎,海量级别存储时使用,HBASE中核心的组件就是RegionServer , 由WAL和Region组成WAL,日志备份Region:数据存储 。
分布式存储:HBase数据存储在分布式文件系统Hadoop HDFS上 , 数据被水平分割成多个Region并在集群中分布存储 。每个Region被存储在不同的RegionServer上,实现了数据的横向扩展和负载均衡 。
HBase调优:预分区与行键设计像这样预先创建hbase表分区的方式 , 称之为预分区 。hash(主键) + 年月日时(2019062315)这里只取hash(主键)的前6位,使得行键的长度正好是16 , 也就是8的整数倍,在64位计算机中,效果最好 。
像这样预先创建hbase表分区的方式 , 称之为预分区 。hash(主键)+年月日时(2019062315)这里只取hash(主键)的前6位,使得行键的长度正好是16,也就是8的整数倍,在64位计算机中 , 效果最好 。
HBase 在创建表的时候,会自动为表分配一个Region,当一个 Region 达到拆分条件时(shouldSplit 为 true) , HBase 中该 Region 将会进行 split,分裂为2个 Region,以此类推 。
HBase数据写入通常会遇到两类问题,一类是写性能较差,另一类是数据根本写不进去 。
目前我们已经确定了hbase存储,并且采用预分区的方式并且采用rowkey进行过滤查询,那么现在考虑rowkey的设计 。
默认情况下 , 在创建HBase表的时候会自动创建一个region分区,当导入数据的时候,所有的HBase客户端都向这一个region写数据,直到这个region足够大了才进行切分 。
Hbase分区partition 顾名思义就是分区式 , 这种分区有点类似于 mapreduce 中的 partitioner,将区域用长整数作为分区号,每个 Region 管理着相应的区域数据 , 在 RowKey 生成时,将 id 取模后,然后拼上 id 整体作为 RowKey。
hbase分区会自动裂变 。根据查询相关资料信息,当Region的大小达到一定的阈值,该Region会自动分裂 。

推荐阅读