硬件层面
内存要大,最好是ECC(Error Checking and Correcting),实现内存的动态纠错;CPU要多路(每个路彼此隔离)每个路一个CPU,每个cpu上面一般都是2~12核。
    
在操作系统层面
    1)JVM用64位的;
    2)挂载的硬盘设置为noatime,atime意味着每次读写数据无论是内存硬盘映射还是硬盘都会造成一次写硬盘(日志),因为hdfs已经是fs,所以这次写没有任何意义;
    3)关闭交换空间;为什么要关闭呢?因为有swap空间的目的是延迟进行OOM,如果内存紧张并不是第一时间通将最消耗内存的进程杀死,而是将部分内存放置到磁盘中;如果后续取用这部分数据需要通过磁盘IO在获取数据然后加载到内存中;这就发生了延迟,而且因为内存的紧张,导致载入内存这个操作本身就会造成很大的延迟;所以很多数据库都希望尽量少用Swap;
 4)关闭透明大页;因为透明大页是在运行期动态决定huge page size(大页用于存放文件索引),这将会导致服务延迟相应;对于数据库这类对于相应时间比较敏感的应用而言,需要进行关闭。
 
HBase的查询优化
    1. 设置Scaner的缓存:setCaching(一次可以返回行数,默认每次(while result.next()...) 都会通过RPC去服务器端请求一次;设置了setCache之后,将会一次性从服务器端取回多条;当且仅当当缓存行数去完成了,再去服务端取出下一波数据);
    2. 显式的指定返回的列信息(scan.addColumn("XX"));
    3. 记得关闭resultScanner(scaner返回的数据集对象),否则数据将会一直缓存在服务器端;
    4. 如果数据量比较大(比如全表扫描),最好关闭块缓存;setCacheBlock(false)
 
关于noatime,atime
文件有三个time,atime(access time,记录访问即read时间),mtime(modify time,文件修改时间)以及ctime(create time,文件创建时间),如果文件mount的模式是noatime,就意味着文件的读取不会记录该时间,也就避免了一次磁盘的IO。
 
参考:
http://hbasefly.com/2017/05/24/hbase-linux/
《HBase企业应用开发实战》 马延辉

什么是HBase(六)性能调优的更多相关文章

  1. HBase配置性能调优(转)

    因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 配置优化 zo ...

  2. HBase配置性能调优

    因官方Book Performance Tuning部分章节没有按配置项进行索引,不能达到快速查阅的效果.所以我以配置项驱动,重新整理了原文,并补充一些自己的理解,如有错误,欢迎指正. 配置优化 zo ...

  3. hbase性能调优之压缩测试

    文章概述: 1.顺序写 2.顺序读 3.随机写 4.随机读 5.SCAN数据 0 性能测试工具 hbase org.apache.hadoop.hbase.PerformanceEvaluation ...

  4. hbase性能调优_表设计案例

    hbase性能调优案例 1.人员-角色   人员有多个角色  角色优先级   角色有多个人员   人员 删除添加角色   角色 可以添加删除人员   人员 角色 删除添加   设计思路 person表 ...

  5. hbase性能调优(1)

    hbase性能调优 标签: hbase 性能调优 | 发表时间:2014-05-17 15:10 | 作者:无尘道长 分享到: 出处:http://www.iteye.com 一.服务端调优 1.参数 ...

  6. hbase性能调优案例

    hbase性能调优案例 1.人员-角色   人员有多个角色  角色优先级   角色有多个人员   人员 删除添加角色   角色 可以添加删除人员   人员 角色 删除添加   设计思路 person表 ...

  7. Hbase性能调优(一)

    转自:https://blog.csdn.net/yueyedeai/article/details/14648111 1.修改Linux配置 Linux系统最大可打开文件数一般默认的参数值是1024 ...

  8. 第六章 Java性能调优工具(待续)

    Java性能调优工具 Windows工具 JDK命令行工具 JConsole工具 Visual VM多合一工具 Visual VM对QQL的支持 MAT内存分析工具 MAT对QQL的支持 JProfi ...

  9. Database基础(六):实现MySQL读写分离、MySQL性能调优

    一.实现MySQL读写分离 目标: 本案例要求配置2台MySQL服务器+1台代理服务器,实现MySQL代理的读写分离: 用户只需要访问MySQL代理服务器,而实际的SQL查询.写入操作交给后台的2台M ...

  10. Informatica_(6)性能调优

    六.实战汇总31.powercenter 字符集 了解源或者目标数据库的字符集,并在Powercenter服务器上设置相关的环境变量或者完成相关的设置,不同的数据库有不同的设置方法: 多数字符集的问题 ...

随机推荐

  1. 使用 log4js UDP 发送数据到 logstash

    本文地址 http://www.cnblogs.com/jasonxuli/p/6532723.html 因为 nodejs 一般会部署在多台机器,并且每台机器会起多个进程,因此查看日志时往往要人工区 ...

  2. OpenCV中Denoising相关函数的简单介绍

    参考:http://wenhuix.github.io/research/denoise.html一.基本情况         (一)基本方法          Fast  Non-Local  Me ...

  3. linux及安全第八周总结——20135227黄晓妍

    实验部分 实验环境搭建 -rm menu -rf git clone https://github.com/megnning/menu.git cd menu make rootfs qemu -ke ...

  4. MyBatis小案例完善增强

    https://blog.csdn.net/techbirds_bao/article/details/9233599 上链接为一个不错的Mybatis进阶博客 当你把握时间,时间与你为伍. 将上一个 ...

  5. CSU 1968 Permutation Descent Counts

    http://acm.csu.edu.cn/csuoj/problemset/problem?pid=1968 题意:对于任一种N的排列A,定义它的E值为序列中满足A[i]>A[i+1]的数的个 ...

  6. Spring IOC 源码简单分析 04 - bean的初始化

      ### 准备 ## 目标 了解 Spring 如何初始化 bean 实例 ##测试代码 gordon.study.spring.ioc.IOC04_Initialization.java publ ...

  7. vue双向绑定原理及实现

    vue双向绑定原理及实现 一.总结 一句话总结:vue中的双向绑定主要是通过发布者-订阅者模式来实现的 发布 订阅 1.单向绑定和双向绑定的区别是什么? model view 更新 单向绑定:mode ...

  8. oracle版本号详解

  9. 获取display:none的元素的宽度和高度

    display为none的元素不能通过offsetWidth和offsetHeight来获取宽高(未参与css渲染), 解决方案:可以通过在display为none的元素使用行内样式style设置宽高 ...

  10. java Cookie 获取历史记录列表(三)

    /** * 获取Cookie里面的东西 */ protected List<String> getCookieList() { Cookie[] cookies = null; Cooki ...