用mapreduce来操作hbase的优化
(1)scan.setCacheBlocks(false);
初始化map任务 TableMapReduceUtil.initTableMapperJob
本次mr任务scan的所有数据不放在缓存中,一方面节省了交换缓存的操作消耗,可以提升本次mr任务的效率,另一方面,一般mr任务scan的数据都是 一次性或者非经常用到的,因此不需要将它们替换到缓存中,缓存中还是放一些正常的多次访问的数据,这样可以提升查询性能。
(2)conf.setBoolean("mapred.map.tasks.speculative.execution", false);
是否开启mr的map备用任务机制,如果设为true,则如果一个map任务占用时间较其他的明显长很多(策略由内部设置),在其他TT节点上新建一个map任务,两个一起做,谁先做完,便结束。
优化项是将其设为false,为何呢,跟hbase存储机制有 关,hbase本地存储机制,即hbase会尽量把hdfs上的数据文件和rs上对应region存在一台机器上,即当前的map的数据肯定在当前的机器 上有本地数据,不需要网络传输。如果启用备用任务机制,则新创建备用任务时,很有可能新建备用任务的机器上没有所需要的数据的备份,如此便需要网络传输数 据,增加了网络的开销,其效率会大大的降低,还不如不开启备用任务,就让原来的map任务正常做呢。当然,即便关闭了此机制,如果创建map失败(比如由 于oom异常)仍然会在其他节点上重新创建此map任务。
(3)HBase提供了scan.setCaching设置 cache数量,但是很多时候 如果设置不当,会相当耗内存。
如果不设置该值,默认是1条。如果设置该值很大,是可以加快速度,同时也消耗了太多的内存。
所以 合理的设置就很重要了。
当设置了setCaching(n)后,我们的server会从regin server上读取出n条数据。
那么client端读取数据的时候会直接从server的缓存中返回,
但是如果每次你只需要读取100条记录,但是设置了setCaching(1000),那么每次
都会从region server 多余的拿出900条记录,这样会让应用的server内存吃不消了
比较好的解决方案就是 设置setCaching(n)为实际需要的记录数。
用mapreduce来操作hbase的优化的更多相关文章
- mapreduce方式操作hbase
一.导入数据到hbase 1.配置hbase-site.xml指向hdfs <configuration> <property> <name>hbase.rootd ...
- Hbase框架原理及相关的知识点理解、Hbase访问MapReduce、Hbase访问Java API、Hbase shell及Hbase性能优化总结
转自:http://blog.csdn.net/zhongwen7710/article/details/39577431 本blog的内容包含: 第一部分:Hbase框架原理理解 第二部分:Hbas ...
- 大数据技术之_11_HBase学习_02_HBase API 操作 + HBase 与 Hive 集成 + HBase 优化
第6章 HBase API 操作6.1 环境准备6.2 HBase API6.2.1 判断表是否存在6.2.2 抽取获取 Configuration.Connection.Admin 对象的方法以及关 ...
- Mapreduce操作HBase
这个操作和普通的Mapreduce还不太一样,比如普通的Mapreduce输入可以是txt文件等,Mapreduce可以直接读取Hive中的表的数据(能够看见是以类似txt文件形式),但Mapredu ...
- Hbase第五章 MapReduce操作HBase
容易遇到的坑: 当用mapReducer操作HBase时,运行jar包的过程中如果遇到 java.lang.NoClassDefFoundError 类似的错误时,一般是由于hadoop环境没有hba ...
- HBase性能优化方法总结(二):写表操作
转自:http://www.cnblogs.com/panfeng412/archive/2012/03/08/hbase-performance-tuning-section2.html 本文主要是 ...
- HBase性能优化方法总结(三):读表操作
本文主要是从HBase应用程序设计与开发的角度,总结几种常用的性能优化方法.有关HBase系统配置级别的优化,可参考:淘宝Ken Wu同学的博客. 下面是本文总结的第三部分内容:读表操作相关的优化方法 ...
- HBase 相关API操练(三):MapReduce操作HBase
MapReduce 操作 HBase 在 HBase 系统上运行批处理运算,最方便和实用的模型依然是 MapReduce,如下图所示. HBase Table 和 Region 的关系类似 HDFS ...
- 7.MapReduce操作Hbase
7 HBase的MapReduce HBase中Table和Region的关系,有些类似HDFS中File和Block的关系.由于HBase提供了配套的与MapReduce进行交互的API如 Ta ...
随机推荐
- BZOJ 1497 JZYZOJ 1344 [NOI2006]最大获利 网络流 最大权闭合图
http://www.lydsy.com/JudgeOnline/problem.php?id=1497 http://172.20.6.3/Problem_Show.asp?id=1344 思路 ...
- Java基础学习——多线程之创建任务
这次来盘点一下Java中用线程执行任务的写法. 1.扩展Thread 最基本的实现方法是在创建一个继承Thread的新类,在其中覆盖run()方法执行任务. public class MyThread ...
- css-stylus
1.stylus 对定义CSS的方式进行了改变,允许我们简化CSS的书写格式,同时允许我们定义变量.定义函数来操作CSS CSS处理器类型: sass/less/stylus stylus结构 1.1 ...
- Debounce 和 Throttle 的原理及实现---防止频繁触发某事件
原文:http://blog.csdn.net/redtopic/article/details/69396722 在处理诸如 resize.scroll.mousemove 和 keydown/ke ...
- jquery-ajax请求:超时设置,增加 loading 提升体验
前端发送Ajax请求到服务器,服务器返回数据这一过程,因原因不同耗时长短也有差别,且这段时间内页面显示空白.如何优化这段时间内的交互体验,以及长时间内服务器仍未返回数据这一问题,是我们开发中不容忽视的 ...
- 用ldapsearch验证LDAP认证信息
企业里面各种各样的系统,堆积多了以后帐号数不胜数,比较好的解决方案之一是用LDAP.不过Microsoft的ActiveDirectory认证是否成功需要有命令来进行验证,可以通过ldapsearch ...
- Java性能优化的9大工具
在这篇文章中,我会带着大家一起看一下9个可以帮助我们优化Java性能的工具.有一些我们已经在IDR Solutions中使用了,而另外一些有可能在个人项目中使用. NetBeans Profiler ...
- Objective-C 关于静态方法与实例方法
objective-c中非常重要的语法知识,在此归纳总结一下. 类方法,也称静态方法,指的是用static关键字修饰的方法.此方法属类本身的方法,不属于类的某一个实例(对象).类方法中不可直接使用实例 ...
- linux文件系统命令(6)---touch和mkdir
一.目的 本文将介绍linux下新建文件或文件夹.删除文件或文件夹命令. touch能够新建文件,mkdir用来新建文件夹.rm用来删除文件或文件夹. 本文将选取ubu ...
- VS 2017 取消结构参考线的显示
Visual studio 中的结构参考线如下所示 其可以通过如下方式取消: