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)时就会过滤sf2,get(r3)就会过滤sf1
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读性能越好
如有错误,谢谢指正!
分享到:
相关推荐
这份“HBase官方文档中文版”提供了全面深入的HBase知识,帮助用户理解和掌握如何在大数据场景下有效地使用HBase。 一、HBase概述 HBase设计目标是提供大规模数据的实时读写能力,它运行在Hadoop之上,利用HDFS作为...
为了在Hadoop项目中使用HBase进行明细查询,我们需要依赖特定的jar包。这些jar包包含了HBase运行所需的所有类库和函数,使得开发者可以在应用程序中调用HBase的相关API来操作数据。 首先,我们要理解HBase的架构。...
4. Bloom Filter:使用Bloom Filter可以减少不必要的磁盘I/O,提高查询性能。 5. Indexing:虽然HBase本身不支持索引,但可以通过第三方库如 phoenix 或 hbase-indexer 实现索引功能。 六、监控与维护 1. 使用...
* bloomfilter:根据应用需求,判断是否需要精确到 rowkey 或 column, bloomfilter 可以对 region 下的 hfile 进行查询优化。 2. rowkey 设计 rowkey 是 HBase 的 key-value 存储中的 key,通常使用用户要查询的...
例如,启用bloomfilter过滤器,bloomfilter可以在查询时过滤掉不存在的行,这将显著提高查询性能;增加HBase堆内存,根据业务需求调整hbase-env.sh中的HBASE_HEAPSIZE设置;增加RPC调用数量,通过修改hbase-site.xml...
HBase是一种分布式、高性能、基于列族的NoSQL数据库,...记住,理论知识与实践相结合是掌握HBase的关键,通过实际操作和项目经验,你会对HBase有更深入的理解。提供的“hbase 培训”资料应该能帮助你开始这段学习之旅。
这本书旨在帮助读者理解和掌握如何有效地使用HBase处理大规模数据存储和检索问题。HBase是建立在Apache Hadoop之上,一个面向列的、分布式的、可扩展的开源数据库,它能够提供实时的数据访问,并且具有强大的数据...
- ** Bloom Filter**:利用Bloom Filter减少不必要的磁盘I/O,提升查询效率。 总之,HBase-0.94.1作为一个早期版本,展示了HBase在大数据实时处理中的强大能力。随着技术的发展,HBase已经迭代到更高的版本,但其...
通过对HBase 1.2.0源码的阅读,可以深入了解这些机制的实现细节,比如Region分配算法、数据读写的内部流程、Bloom Filter的构建和使用、以及Compaction策略的设定等。这将有助于开发者更好地优化HBase应用,解决实际...
2. Bloom Filter:利用Bloom Filter减少不必要的磁盘I/O,提高查询效率。 3. Compaction策略:适时进行Compaction,平衡存储空间和读取速度。 六、挑战与解决方案 1. 数据一致性:在高并发场景下,如何保证数据的...
- **Bloom Filter**:介绍如何使用Bloom Filter来提高查询效率。 #### 三、HBase升级指南 - **从0.20.x或0.89.x升级到0.90.x**:列出具体的步骤与注意事项。 - **从0.90.x到0.92.x**:提供升级路径与建议。 ####...
理解并熟练掌握上述概念和命令,将有助于在实践中高效地使用HBase来处理大规模数据。在设计HBase表结构时,需要综合考虑数据模型、访问模式、存储和计算资源等因素,以达到最佳的性能和可扩展性。
在HBase中使用布隆过滤器可以减少文件的打开次数,从而减少磁盘I/O。布隆过滤器对于提高查询性能至关重要,尤其是在处理大量数据时。 综上所述,HBase表设计要求设计者深入理解其非关系型的数据模型和底层架构特性...
- `BLOOMFILTER`:布隆过滤器的类型。 - `REPLICATION_SCOPE`:复制范围。 - `COMPRESSION`:压缩算法。 - `VERSIONS`:版本数。 - `TTL`:数据生存时间。 - `BLOCKSIZE`:块大小。 - `IN_MEMORY`:是否将数据缓存在...
本资料将围绕一个具体的HBase项目实例,深入探讨其配置、使用及优化等方面的知识。 一、HBase基本概念 HBase是一个非关系型数据库(NoSQL),它以行键、列族、时间戳为数据存储结构,特别适合处理海量稀疏数据。在...
- 内存Cache优化:增大写入缓存,利用Bloom Filter减少磁盘I/O,部分小表设为全内存表。 - 负载均衡:针对时间序列数据的定制化算法,避免热点Region集中在单一节点。 - 单点故障避免:通过分类分发批处理操作和...
2. Bloom Filter:利用Bloom Filter减少不必要的磁盘I/O,加快数据查找速度。 3. Compaction:定期执行Compaction操作,合并小文件,降低读取延迟。 六、监控与维护 1. ZooKeeper协调:HBase依赖ZooKeeper进行集群...
常见的去重算法有基于哈希的去重(如Bloom Filter)、排序后去重、位图法等。在Hadoop环境中,通常使用MapReduce实现这些算法。例如,Map阶段计算数据的哈希值,Reduce阶段检查并去除重复的哈希值。 5. **...
表的属性包括压缩、 Bloom Filter、BlockCache等,这些设置会影响存储效率和查询性能。 6.2 表创建实例 手册提供了具体的SQL样例,指导用户如何创建表,包括指定列族、配置属性等。 7. bulk loading的使用 7.1 ...