-
Notifications
You must be signed in to change notification settings - Fork 79
HBase note
mam edited this page Aug 10, 2017
·
3 revisions
在hbase shell中,通过scan去扫描表来获取行数是一个相当耗时的工作。可通过如下方法来快速获取表行数:
$HBASE_HOME/bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter '$tablename'
结果如下:
org.apache.hadoop.hbase.mapreduce.RowCounter$RowCounterMapper$Counters
ROWS=223943
HBase建表的参数及默认值如下:
参数 | 默认值 | 说明 |
---|---|---|
DATA_BLOCK_ENCODING | NONE | 将重复的row/family/qualifier/进行压缩,减少block的空间占用,提高内存使用率,encode算法有NONE(不启用DATA_BLOCK_ENCODING)、PREFIX、DIFF、FAST_DIFF、PREFIX_TREE 等几种。 |
BLOOMFILTER | ROW | 用来提高随机读的性能,值有 ROW 和 ROWCOL 两种。 |
REPLICATION_SCOPE | 0 | 是否复制。若希望复制该列族的话,设置该值为1。 |
VERSIONS | 1 | 保留的版本数。 |
COMPRESSION | NONE | 是否压缩,可指定为SNAPPY,LZO,GZIP等。 |
MIN_VERSIONS | 0 | 保留的最小版本数。 |
TTL | FOREVER | 过期时间,单位为秒,默认永不过期。若MIN_VERSIONS=0,删除所有过期的数据;若MIN_VERSION=N,保留最新的N份的数据,其余份数的数据将被删除。 |
KEEP_DELETED_CELLS | false | 基于时间的历史数据查询中是否可见?解释:在时间点T写入数据A,在T+X删除数据A,若该值为false,则查询[0, T+1)的数据时,A不会返回;若该值为true,查询[0, T+1)时将返回A。 |
BLOCKSIZE | 65535 | block大小,默认为64kb(65535byte) |
IN_MEMORY | false | 数据块缓存保存这个列族相比其它列族更激进。即使设置为true,该列族也不会长久驻留cache而不被逐出cache, 当不断有新的in-memory的block被访问,而in-memory cache已达到上限时,旧的in-memory block就会被替换出去,除非所有in-memory的block的总体积小于in-memory cache。 |
BLOCKCACHE | true | 是否开启数据块cache。如果一个表或表的列族只被顺序化扫描访问或很少被访问,建议关掉BLOCKCACHE。 |
- 修改 hbase ttl 为 forever
若表已创建,现需要将 ttl 调整为 forever,可指定TTL => org.apache.hadoop.hbase.HConstants::FOREVER
,注意不要加引号。