hbase零碎小记

1)hbase表查行
可以在shell中进行,命令如下:
count ’tablename’,CACHE=>10000,INTERVAL=>10000
CACHE是客户端缓存条数,INTERVAL是分隔多久显示一次结果

上述方法实现是走scan客户端完成,一旦表较大,查起来很慢。

另外一种方式如下:
 bin/hbase org.apache.hadoop.hbase.mapreduce.RowCounter ’tablename’
通过yarn调度mr任务完成查行,速度较快。

2)客户端连接hbase集群时,与zookeeper建立起连接,需要加载两个配置,一个是zookeeper的ip地址,还有是hbase在zookeeper上的根节点。
客户端从zookeeper中获得meta表的地址,然后从meta表中获取表的region在regionserver间的分布,至于数据读写请求则直接发往数据所在的regionserver。
hbase的client端会与zookeeper保持一个长连接,并在其上注册一个watcher,用于检测hbase集群可能发生的变化,包括meta表位置的变化,regionserver的上下线以及region分布的变化等等

3)hbase的bulkload
bulkload是高负载hbase的一种常见的优化方式,简单来说就是先写hdfs文件,然后直接装载到hbase集群,这种数据写入方式不走client端的rpc通信,可以极大地节省集群的I/O
形式上类似于solr的全量创建索引,线下搞定,然后线上只是装载

4)blockcache的大小
  当前blockcache的大小可以从regionserver页的block cache信息栏查看到。
调整参数 hfile.block.cache.size可以修改block cache的大小,默认是0.4,表示使用整个堆大小(hbase-env.sh中配置的-Xmx)的40%作为block cache,当内存紧张时可以考虑调小此值,但是不推荐。
hbase的blockcache机制是采用LRUBlockCache实现的。

5)hbase的IN_MEMORY属性
hbase在LRU缓存基础之上采用了分层设计,整个blockcache分成了三个部分,分别是single、multi和inMemory。三者区别如下:
single:如果一个block第一次被访问,放在该优先队列中;
multi:如果一个block被多次访问,则从single队列转移到multi队列
inMemory:优先级最高,常驻cache,因此一般只有hbase系统的元数据,如meta表之类的才会放到inMemory队列中。普通的hbase列族也可以指定IN_MEMORY属性,方法如下:
create 'table', {NAME => 'f', IN_MEMORY => true}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值