主要来自:http://zjushch.iteye.com/blog/1530143
1.Bloomfilter的原理?
可参考 http://hi.baidu.com/yizhizaitaobi/blog/item/cc1290a0a0cd69974610646f.html
2.Bloomfilter在HBase中的作用?
HBase利用Bloomfilter来提高随机读(Get)的性能,对于顺序读(Scan)而言,设置Bloomfilter是没有作用的(0.92以后,如果设置了bloomfilter为ROWCOL,对于指定了qualifier的Scan有一定的优化,但不是那种直接过滤文件,排除在查找范围的形式)
3.Bloomfilter在HBase中的开销?
Bloomfilter是一个列族(cf)级别的配置属性,如果你在表中设置了Bloomfilter,那么HBase会在生成StoreFile时包含一份bloomfilter结构的数据,称其为MetaBlock;MetaBlock与DataBlock(真实的KeyValue数据)一起由LRUBlockCache维护。所以,开启bloomfilter会有一定的存储及内存cache开销。
4.Bloomfilter如何提高随机读(Get)的性能?
对于某个region的随机读,HBase会遍历读memstore及storefile(按照一定的顺序),将结果合并返回给客户端。如果你设置了bloomfilter,那么在遍历读storefile时,就可以利用bloomfilter,忽略某些storefile。
5.HBase中的Bloomfilter的类型及使用?
a)ROW, 根据KeyValue中的row来过滤storefile
举例:假设有2个storefile文件sf1和sf2,
sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v)
sf2包含kv3(r3 cf:q1 v)、kv4(r4 cf:q1 v)
如果设置了CF属性中的bloomfilter为ROW,那么get(r1)时就会过滤sf1,get(r3)就会过滤sf2
b)ROWCOL,根据KeyValue中的row+qualifier来过滤storefile
举例:假设有2个storefile文件sf1和sf2,
sf1包含kv1(r1 cf:q1 v)、kv2(r2 cf:q1 v)
sf2包含kv3(r1 cf:q2 v)、kv4(r2 cf:q2 v)
如果设置了CF属性中的bloomfilter为ROW,无论get(r1,q1)还是get(r1,q2),都会读取sf1+sf2;而如果设置了CF属性中的bloomfilter为ROWCOL,那么get(r1,q1)就会过滤sf2,get(r1,q2)就会过滤sf1
6.ROWCOL一定比ROW效果好么?
不一定
a)ROWCOL只对指定列(Qualifier)的随机读(Get)有效,如果应用中的随机读get,只含row,而没有指定读哪个qualifier,那么设置ROWCOL是没有效果的,这种场景就应该使用ROW
b)如果随机读中指定的列(Qualifier)的数目大于等于2,在0.90版本中ROWCOL是无效的,而在0.92版本以后,HBASE-2794对这一情景作了优化,是有效的(通过KeyValueScanner#seekExactly)
c)如果同一row多个列的数据在应用上是同一时间put的,那么ROW与ROWCOL的效果近似相同,而ROWCOL只对指定了列的随机读才会有效,所以设置为ROW更佳
7.ROWCOL与ROW只在名称上有联系,ROWCOL并不是ROW的扩展,不能取代ROW
8.region下的storefile数目越多,bloomfilter的效果越好
9.region下的storefile数目越少,HBase读性能越好
如有错误,谢谢指正!
分享到:
相关推荐
利用Bloom Filter减少不必要的磁盘I/O;以及利用二级索引和Coprocessors进行复杂查询等。 总之,HBase的jar包是我们在Hadoop项目中进行明细查询的关键。正确引入并使用这些jar包,可以让我们在大数据环境下高效地...
4. Bloom Filter:使用Bloom Filter可以减少不必要的磁盘I/O,提高查询性能。 5. Indexing:虽然HBase本身不支持索引,但可以通过第三方库如 phoenix 或 hbase-indexer 实现索引功能。 六、监控与维护 1. 使用...
{NAME => 'cl3', VERSIONS => 1, IN_MEMORY => false, BLOOMFILTER => ROW, COMPRESSION => 'NONE', DATA_BLOCK_ENCODING => NONE, TTL => FOREVER, KEEP_DELETED_CELLS => false, BLOCKCACHE => true, MIN_...
* bloomfilter:根据应用需求,判断是否需要精确到 rowkey 或 column, bloomfilter 可以对 region 下的 hfile 进行查询优化。 2. rowkey 设计 rowkey 是 HBase 的 key-value 存储中的 key,通常使用用户要查询的...
3. Bloom Filter:减少无效磁盘I/O,提高查询效率。 4. Coprocessor:在Region服务器端实现业务逻辑,减少网络传输。 六、HBase监控与故障恢复 1. 监控指标:包括内存使用、磁盘I/O、网络流量等,通过JMX和Hadoop ...
Google Bigtable,Apache HBase,Apache Cassandra和PostgreSQL使用Bloom过滤器来减少对不存在的行或列的磁盘查找。 避免昂贵的磁盘查找,可大大提高数据库查询操作的性能。 计数过滤器提供了一种在Bloom过滤器上...
BloomFilter是一种probability数据结构,用于快速判断某个元素是否存在于集合中。启用BloomFilter可以提高读取性能,特别是在大规模数据集群环境中。 调整Put操作 Put操作是HBase中的一种基本操作,用于将数据写入...
例如,启用bloomfilter过滤器,bloomfilter可以在查询时过滤掉不存在的行,这将显著提高查询性能;增加HBase堆内存,根据业务需求调整hbase-env.sh中的HBASE_HEAPSIZE设置;增加RPC调用数量,通过修改hbase-site.xml...
2.9. Bloom Filter 3. 升级 3.1. 从HBase 0.20.x or 0.89.x 升级到 HBase 0.90.x 3.2. 从 0.90.x 到 0.92.x 4. The HBase Shell 4.1. 使用脚本 4.2. Shell 技巧 5. 数据模型 5.1. 概念视图 5.2. 物理视图 5.3. 表 ...
2. Bloom Filter:利用Bloom Filter减少不必要的磁盘I/O,提高查询效率。 3. Compaction策略:适时进行Compaction,平衡存储空间和读取速度。 六、挑战与解决方案 1. 数据一致性:在高并发场景下,如何保证数据的...
- ** Bloom Filter**:利用Bloom Filter减少不必要的磁盘I/O,提升查询效率。 总之,HBase-0.94.1作为一个早期版本,展示了HBase在大数据实时处理中的强大能力。随着技术的发展,HBase已经迭代到更高的版本,但其...
默认关闭 setBloomFilter 指定是否使用 BloomFilter。 HBase 的 Java API 提供了多种方法来操作数据,如 put、get、scan 和 delete。put 方法用于插入数据,get 方法用于获取数据,scan 方法用于扫描数据,delete ...
可以利用布隆过滤器(Bloom Filter)减少无效的磁盘I/O,以及Scan操作来批量获取数据。 7. **HBase与Hadoop集成**:HBase构建在Hadoop的HDFS之上,利用HDFS的分布式存储特性。MapReduce可以用于对HBase进行批量操作...
- ** Bloom Filter**:减少不必要的磁盘I/O,提高查询效率。 - **BlockCache和MemStore**:缓存机制,提升读取性能。 - **Compaction**:定期合并Region中的文件,减少数据文件的数量,优化读写性能。 5. **...
{NAME=>'wp_test',FAMILIES=>[{NAME=>'id',BLOOMFILTER=>'NONE',REPLICATION_SCOPE=>'0',COMPRESSION=>'NONE',VERSIONS=>'3',TTL=>'2147483647',BLOCKSIZE=>'65536',IN_MEMORY=>'false',BLOCKCACHE=>'true'}, ...
2. **布隆过滤器**:在不确定数据是否存在时,使用Bloom Filter避免无效的磁盘访问。 3. **Scan优化**:限制返回结果的数量,使用StartRow和StopRow控制扫描范围,避免全表扫描。 五、运维优化 1. **监控与调优**:...
HBase表设计的最后一个重要概念是布隆过滤器(Bloom Filter)。布隆过滤器是一种空间效率高的概率数据结构,用于判断一个元素是否在一个集合中。在HBase中使用布隆过滤器可以减少文件的打开次数,从而减少磁盘I/O。...
- 内存Cache优化:增大写入缓存,利用Bloom Filter减少磁盘I/O,部分小表设为全内存表。 - 负载均衡:针对时间序列数据的定制化算法,避免热点Region集中在单一节点。 - 单点故障避免:通过分类分发批处理操作和...
通过对HBase 1.2.0源码的阅读,可以深入了解这些机制的实现细节,比如Region分配算法、数据读写的内部流程、Bloom Filter的构建和使用、以及Compaction策略的设定等。这将有助于开发者更好地优化HBase应用,解决实际...