为什么HBase数据查询快速
2016-11-24 16:17
429 查看
快速查询可以分作两方面: 一是根据亿级的记录中快速查询,二是以实时的方式查询数据。 A:如果快速查询(从磁盘读数据),hbase是根据rowkey查询的,只要能快速的定位rowkey, 就能实现快速的查询,主要是以下因素: 1、hbase是可划分成多个region,你可以简单的理解为关系型数据库的多个分区。 2、键是排好序了的 3、按列存储的 首先,能快速找到行所在的region(分区),假设表有10亿条记录,占空间1TB, 分列成了500个region, 1个region占2个G. 最多读取2G的记录,就能找到对应记录; 其次,是按列存储的,其实是列族,假设分为3个列族,每个列族就是666M, 如果要查询的东西在其中1个列族上,1个列族包含1个或者多个HStoreFile,假设一个HStoreFile是128M, 该列族包含5个HStoreFile在磁盘上. 剩下的在内存中。 再次,是排好序了的,你要的记录有可能在最前面,也有可能在最后面,假设在中间,我们只需遍历2.5个HStoreFile共300M 最后,每个HStoreFile(HFile的封装),是以键值对(key-value)方式存储,只要遍历一个个数据块中的key的位置,并判断符合条件可以了。 一般key是有限的长度,假设跟value是1:19(忽略HFile上其它块),最终只需要15M就可获取的对应的记录,按照磁盘的访问100M/S,只需0.15秒。 加上块缓存机制(LRU原则),会取得更高的效率。 B:实时查询 实时查询,可以认为是从内存中查询,一般响应时间在1秒内。HBase的机制是数据先写入到内存中,当数据量达到一定的量(如128M),再写入磁盘中, 在内存中,是不进行数据的更新或合并操作的,只增加数据,这使得用户的写操作只要进入内存中就可以立即返回,保证了HBase I/O的高性能。 实时查询,即反应根据当前时间的数据,可以认为这些数据始终是在内存的,保证了数据的实时响应。 |
相关文章推荐
- Elasticsearch+hbase 实现hbase中数据的快速查询(一)
- Elasticsearch+hbase 实现hbase中数据的快速查询(二)
- Elasticsearch+hbase 实现hbase中数据的快速查询(三)
- Elasticsearch对Hbase中的数据建索引实现海量数据快速查询
- 为什么Hbase能实现快速的查询
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
- HBase数据查询之常规查询
- Spark如何读取Hbase特定查询的数据
- 为什么增大HashMap容器类里的加载因子 会增加查询数据的时间开销
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
- HBase-7.hbase查询多版本数据&过滤器原则&批量导入Hbase&hbase预分区
- java调用scala 查询hbase数据
- 快速查询hive数据仓库表中的总条数
- 万亿级日志与行为数据存储查询技术剖析——Hbase系预聚合方案、Dremel系parquet列存储、预聚合系、Lucene系
- MySQL杂项(索引注意事项 快速导入导出数据 锁 字符集 慢查询)
- hbase 快速入门之---HFILE数据格式
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询
- HBase数据查询之Coprocessor
- 使用二分法实现对Sbo DBDatasource数据的快速定位查询
- Java操作Hbase进行建表、删表以及对数据进行增删改查,条件查询