硬件层面
内存要大,最好是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. MySql如何安装?

    官方网址:https://www.mysql.com/downloads/ Community——>MySqlCommunity Server->GA->64位: GA:正式版: C ...

  2. godaddy之ssl申请

    第一步 执行下面命令生成csr和key文件 openssl req -new -newkey rsa: -nodes -keyout trips.com.key -out trips.com.csr ...

  3. [数据库] - org.springframework.jdbc.CannotGetJdbcConnectionException: Could not get JDBC Connection

    MySQL的驱动改名了,如果使用原来的com.mysql.jdbc.Driver 那么会提醒驱动不正常了,那么新的MySQL驱动名为:com.mysql.cj.jdbc.Driver 之后还报错,如题 ...

  4. UVa 10054 项链(欧拉回路)

    https://vjudge.net/problem/UVA-10054 题意:有一种由彩色珠子连接成的项链.每个珠子的两半由不同颜色组成.相邻两个珠子在接触的地方颜色相同.现在有一些零碎的珠子,需要 ...

  5. Android -- 怎么发出和接收广播, Broadcast, 电话拨号拦截,短信拦截

    1. 发送广播 使用以下三个API可以发送广播 public void click(View view){ Intent intent = new Intent(); intent.setAction ...

  6. python 判断列表的包含关系

    def is_Sublist(l, s): sub_set = False if s == []: sub_set = True elif s == l: sub_set = True elif le ...

  7. Redis为什么要把所有数据放到内存中?

    Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘.所以Redis具有快速和数据持久化的特性. 如果不将数据放到内存中,磁盘的I/O速度会严重影响redis的性能.在内 ...

  8. Android之获取输入用户名与密码发送短信

    打算在过两三天的时间我就要准备出发去浙江了,所以把之前的资料来个总结. 这都是在课堂上做过的作业. 好了,废话少说,直接上代码. 步骤: 1.设置单击事件2.获取输入的QQ号码与密码3.判断输入获取的 ...

  9. Educational Codeforces Round 23C

    超级坑的水题!!!想了两天没一点思路,看了题解第一段话就做出来了 刚开始一直在想找到通项就是例如an*10^n+...+a0*10^0-an-...-a0>=s,然后从这个里面找到规律,结果走进 ...

  10. UVALive-3126 Taxi Cab Scheme (DAG的最小路径覆盖)

    题目大意:要给n个人安排车,已知每个人的出发时间和起点与终点,问最少需要安排几辆车才能完成任务. 题目分析:最小路径覆盖.如果送完a到目的地后能在b出发之前赶来接b,那么连一条有向边a->b,最 ...