hbase的高级用法 - 读书札记。
2.hbase表的两种设计: (tall-narrow and flat-wide)高而窄型设计、宽而平型设计。
前者拥有较少的列和较多的行。后者行少而列多。考虑到keyrow查询粒度的问题,建议把cell中的值提取到key中,
尤其是当cell中的值需要查询时。另外,hbase仅支持行边界分裂,因此前者能很好支持,而flat-wide的设计中,
如果一行数据太大,超过region大小就会和region分裂策略相互冲突。
3.部分键值扫描器:通过设置startrow 和endrow来查询一段RowKey。(startrow + 1是一个很好的技巧)
4.分页:分页可通过partial key scan实现,原理是先通过设置start key和stop key确定一个范围,然后再在客户端
通过偏移量(Offset)和大小限制(limit)来实现分页,这和普通的数据库分页是有区别的。
或者使用PageFilter或是ColumnPaginationFilter也可实现分页。
5.时间序列数据:具有时间顺序的数据,一般RowKey代表了时间,这种单调递增的数据,造成所有进入的数据
都被写到一个region而不是分散到各个region上,这将导致集群的效率降低(数据更新将集中在一个特定的region上)。
解决的办法是在时间前面加上非序列的前缀,如:
byte prefix = (byte) (Long.hashCode(timestamp) % <number of regionservers>);
byte[] rowkey = Bytes.add(Bytes.toBytes(prefix), Bytes.toBytes(timestamp);
但这样一来RowKey的范围就会扩散。
在组合键的情况下可以考虑把时间戳放在次要位置。带来的问题是按照时间范围的查询难以进行。好处是某记录
是时间顺序(倒序)的。
总得来说键的设计,键值越随机,写性能越好,键值越连续,读性能约好。
#时间排序关系,FamilyColumn的每个Column都是排序的,把时间戳当做列名存储。可以把它当做二级索引的替代,关系数据库中的二级索引
可以通过多Column进行模拟,尽管这不是推荐的设计。但是对于只有少量索引的情况是有效的。
6.bloom Filter:
三种方式:
Type Description
NONE Disables the filter (default)
ROW Use the row key for the filter
ROWCOL Use the row key and column key (family+qualifier) for the filter
原文引用如下:
The final question is whether to use a row or a row+column Bloom filter. The answer depends on your usage pattern. If you are doing only row scans, having the more specific row+column filter will not help at all: having a row-level Bloom filter enables you to narrow down the number of files that need to be checked, even when you do row+column read operations, but not the other way around.
The row+column Bloom filter is useful when you cannot batch updates for a specific row, and end up with store files which all contain parts of the row. The more specific row+column filter can then identify which of the files contain the data you are re-questing. Obviously, if you always load the entire row, this filter is once again hardly useful, as the region server will need to load the matching block out of each file anyway.
Since the row+column filter will require more storage, you need to do the math to
determine whether it is worth the extra resources. It is also interesting to know that there is a maximum number of elements a Bloom filter can hold. If you have too many cells in your store file, you might exceed that number and would need to fall back to the row-level filter.
Depending on your use case, it may be useful to enable Bloom filters, to increase the overall performance of your system. If possible, you should try to use the row-level Bloom filter, as it strikes a good balance between the additional space requirements and the gain in performance coming from its store file selection filtering. Only resort to the more costly row+column Bloom filter when you would otherwise gain no ad-vantage from using the row-level one.
也就是说如果要使用bloom Filter,尽量把它加在row级别上,而不是row+col都加,第三中ROWCOL的方式将
占用最多的磁盘和内存。
如果你只是做Scan,row级别的bloom Filter就足够了,row+col毫无用处。
分享到:
相关推荐
HBase The Definitive Guide, 2nd Edition HBase The Definitive Guide, 2nd Edition
### HBase权威指南知识点概述 #### 一、引言与背景 - **大数据时代的来临**:随着互联网技术的发展,人类社会产生了前所未为的数据量。这些数据不仅数量巨大,而且种类繁多,传统的数据库系统难以应对这样的挑战。 ...
### HBase 权威指南(HBase The Definitive Guide)关键知识点解析 #### 标题与描述中的核心概念 **HBase** 是一个开源的、分布式的、面向列的数据库系统,它运行在 **Hadoop** 文件系统之上,旨在处理大规模数据...
通过阅读《HBase The Definitive Guide》,无论是初学者还是经验丰富的开发者,都能深入理解HBase的内部工作机制,提升在大数据环境中的实践能力。这本书的PDF版本提供了一种方便的学习方式,让读者可以随时随地查阅...
赠送jar包:hbase-hadoop2-compat-1.2.12.jar; 赠送原API文档:hbase-hadoop2-compat-1.2.12-javadoc.jar; 赠送源代码:hbase-hadoop2-compat-1.2.12-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop2-compat-...
hbase-hbck2-1.1.0-SNAPSHOT.jar
HBase(hbase-2.4.9-bin.tar.gz)是一个分布式的、面向列的开源数据库,该技术来源于 Fay Chang 所撰写的Google论文“Bigtable:一个结构化数据的分布式存储系统”。就像Bigtable利用了Google文件系统(File System...
HBCK是HBase1.x中的命令,到了HBase2.x中,HBCK命令不适用,且它的写功能(-fix)已删除;...其GitHub地址为:https://github.com/apache/hbase-operator-tools.git 附件资源是已经编译好的hbase2.4.4版本的hbck
赠送jar包:hbase-hadoop2-compat-1.1.3.jar; 赠送原API文档:hbase-hadoop2-compat-1.1.3-javadoc.jar; 赠送源代码:hbase-hadoop2-compat-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop2-compat-...
HBCK2 jar包是这个工具的可执行文件,通常在HBase的lib目录下可以找到,名为`hbase-hbck2-x.x.x.jar`,其中`x.x.x`表示具体的HBase版本号。这个jar包包含了所有执行HBCK2命令所需的功能和类。你可以通过Hadoop的`...
《深入解析YCSB-HBase14-Binding 0.17.0》 YCSB(Yahoo! Cloud Serving Benchmark)是一种广泛使用的云数据库基准测试工具,它为各种分布式存储系统提供了标准化的性能评估框架。YCSB-HBase14-Binding 0.17.0是针对...
《Hadoop The Definitive Guide, 4th Edition》是Hadoop领域的经典之作,由O'Reilly Media出版,为读者提供了全面深入的Hadoop知识体系。这本书是第四版,相较于之前的版本,它更新了Hadoop生态系统的最新发展,并对...
Hbase修复工具 示例情景: Q:缺失hbase.version文件 A:加上选项 -fixVersionFile 解决 Q:如果一个region即不在META表中,又不在hdfs上面,但是在regionserver的online region集合中 A:加上选项 -...
本文将深入探讨这两个技术及其结合体`phoenix-hbase-2.2-5.1.2-bin.tar.gz`的详细内容。 首先,HBase(Hadoop Database)是Apache软件基金会的一个开源项目,它构建于Hadoop之上,是一款面向列的分布式数据库。...
hbase-client-2.1.0-cdh6.3.0.jar
赠送jar包:hbase-hadoop2-compat-1.1.3.jar; 赠送原API文档:hbase-hadoop2-compat-1.1.3-javadoc.jar; 赠送源代码:hbase-hadoop2-compat-1.1.3-sources.jar; 赠送Maven依赖信息文件:hbase-hadoop2-compat-...