HBase之BlockCache数据读取(转)
转自:http://blog.csdn.net/u014297175/article/details/47976909
Hbase上Regionserver的内存分为两个部分,一部分作为Memstore,主要用来写;另外一部分作为BlockCache,主要用于读数据;上面一篇文章已经介绍过Memstore,这里主要介绍读取数据的部分,即BlockCache。
BlockCache主要提供给读使用。读请求先到memstore中查数据,查不到就到blockcache中查,再查不到就会到磁盘上读,并把读的结果放入blockcache。由于blockcache是一个LRU,因此blockcache达到上限(heapsize * hfile.block.cache.size)后,会启动淘汰机制,淘汰掉最老的一批数据。
1.服务器端配置
一个regionserver上有一个blockcache和N个memstore,它们的大小之和必须小于heapsize* 0.8,否则hbase不能启动,因为仍然要留有一些内存保证其它任务的执行。即为
(1)hbase.regionserver.global.memstore.upperLimit默认值:0.4
(2)hfile.block.cache.size 默认值0.2
这两个值默认和为RegionServer的堆内存的60%,上面值在hbase-memstore刷写已经介绍过。一般情况下可具体看读写情况,对于注重读响应时间的系统,应该将blockcache设大些,比如设置blockcache=0.4,memstore=0.39,这会加大缓存命中率。
2.客户端读取数据配置
(1)hbase.client.scanner.caching 默认值:1
hbase.client.scanner.caching配置项可以设置HBase scanner一次从服务端抓取的数据条数,默认情况下一次一条。通过将其设置成一个合理的值,可以减少scan过程中next()的时间开销,代价是 scanner需要通过客户端的内存来维持这些被cache的行记录。
有三个地方可以进行配置:1)在HBase的conf配置文件中进行配置;2)通过调用HTable.setScannerCaching(intscannerCaching)进行配置;3)通过调用Scan.setCaching(intcaching)进行配置。三者的优先级越来越高。
少的RPC是提高hbase执行效率的一种方法,理论上一次性获取越多数据就会越少的RPC,也就越高效。但是内存是最大的障碍。设置这个值的时候要选择合适的大小,一面一次性获取过多数据占用过多内存,造成其他程序使用内存过少。或者造成程序超时等错误(这个超时与hbase.regionserver.lease.period相关)。
(2)hbase.regionserver.lease.period默认值:60000
说明:客户端租用HRegion server 期限,即超时阀值。
调优:这个配合hbase.client.scanner.caching使用,如果内存够大,但是取出较多数据后计算过程较长,可能超过这个阈值,适当可设置较长的响应时间以防被认为宕机。
本文参考(http://blog.csdn.net/huoyunshen88/article/details/9169077)
HBase之BlockCache数据读取(转)的更多相关文章
- hbase实践之数据读取详解
hbase基本存储组织结构与数据读取组织结构对比 Segment是Hbase2.0的概念,MemStore由一个可写的Segment,以及一个或多个不可写的Segments构成.故hbase 1.*版 ...
- hbase 从hdfs上读取数据到hbase中
<dependencies> <dependency> <groupId>org.apache.hbase</groupId> <artifact ...
- Spark读取Hbase中的数据
大家可能都知道很熟悉Spark的两种常见的数据读取方式(存放到RDD中):(1).调用parallelize函数直接从集合中获取数据,并存入RDD中:Java版本如下: JavaRDD<Inte ...
- Hive直接读取Hbase及MySQL数据
0.概述 Hive对外提供了StorageHandler接口,提供了访问各种存储组件中的数据的能力.Hbase提供了HbaseStorageHandler,使得hive可以通过建立外部映射表访问hba ...
- 8.hbase写入流程和读取流程
1 hbase写入流程 hbase中无论是新增数据还是修改已有行,其内部流程都是一样的,hbase执行写入时会写到两个地方,write-ahead log 简称wal 也叫hlog 预写式日志 和 M ...
- 使用Hive或Impala执行SQL语句,对存储在HBase中的数据操作
CSSDesk body { background-color: #2574b0; } /*! zybuluo */ article,aside,details,figcaption,figure,f ...
- HBase 高性能获取数据(多线程批量式解决办法) + MySQL和HBase性能测试比较
摘要: 在前篇博客里已经讲述了通过一个自定义 HBase Filter来获取数据的办法,在末尾指出此办法的性能是不能满足应用要求的,很显然对于如此成熟的HBase来说,高性能获取数据应该不是问题. ...
- TableInputFormat分片及分片数据读取源码级分析
我们在MapReduce中TextInputFormat分片和读取分片数据源码级分析 这篇中以TextInputFormat为例讲解了InputFormat的分片过程以及RecordReader读取分 ...
- HBase跨版本数据迁移总结
某客户大数据测试场景为:Solr类似画像的数据查出用户标签--通过这些标签在HBase查询详细信息.以上测试功能以及性能. 其中HBase的数据量为500G,Solr约5T.数据均需要从对方的集群人工 ...
随机推荐
- 六、Redis五种类型 - hash(散列)类型
1.介绍 (1).hash也是一种字典结构,存储了字段(field)和字段值(value)的映射,字段值只能是字符串,不支持其他类型.(2).适合存储对象,对象列表和ID构成键名,字段表示对象的属性, ...
- 所有anaconda安装包失败的解决办法汇总
多试几次,有时候网络不稳定下载一半会停掉 更改Pip源 pip install scrapy -i https://pypi.tuna.tsinghua.edu.cn/simple 1.首先确认镜像源 ...
- jdbcTemplate查询结果为对象list
RowMapper<WmsExpensesSettleEntity> rowMapper1=new BeanPropertyRowMapper<WmsExpensesSettleEn ...
- ldap yum安装-centos6
yum安装openldap 系统环境信息 操作系统:CentOS release 6.7 基础的环境准备 iptables -F && /etc/init.d/iptables sav ...
- mysql全家桶(二)数据操作
一.数据操作1.增#新增insert into 表名(字段列表) values(值列表);INSERT INTO table_name ( field1, field2,...fieldN ) VAL ...
- idea 配置idk
[Toc] #一.idea配置全局jdk ##1.1 File-->Project Structure ##1.2 选择SDKs ##1.3 选择jdk路径即可,可以添加多个jdk #二.配置项 ...
- CTO 技能图谱skill-map
# CTO 技能图谱 ### 岗位职责* 建立技术团队文化* 规划技术发展路线* 落地产品研发成果* 宣传公司技术品牌* 吸引优秀技术人才 ### 基本素质* 正直诚实的道德修养* 谦虚谨慎的工作态度 ...
- 优化问题及KKT条件
整理自其他优秀博文及自己理解. 目录 无约束优化 等式约束 不等式约束(KKT条件) 1.无约束优化 无约束优化问题即高数下册中的 “多元函数的极值" 部分. 驻点:所有偏导数皆为0的点: ...
- js类型问题
js比较数据一定要记得鉴别类型是否一致,number类型转换string 需要用到toString方法
- shell脚本之nginx的安装
为了编写nginx自动部署的脚本而刚学习的shell脚本语言.写文章只是为了记录,有错误勿喷. 一.创建shell脚本程序 操作系统是Linux的 CentOS 7 版本. ...