内容简介:本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。版权声明:禁止转载,欢迎学习。QQ邮箱地址:1120746959@qq.com,如有任何学术交流,可随时联系。HBase中Master的角色被弱化了,就算短时间待机都不会受影响,但不能宕机时间太久,数据的读取和写入都跟他没有什么关系。那么Master主要负责什么呢?创建表,修改列族配置,Region的分割和合并操作。HBase所有数据的写入操作第
本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。版权声明:禁止转载,欢迎学习。QQ邮箱地址:1120746959@qq.com,如有任何学术交流,可随时联系。
1 弱化的Master
HBase中Master的角色被弱化了,就算短时间待机都不会受影响,但不能宕机时间太久,数据的读取和写入都跟他没有什么关系。那么Master主要负责什么呢?创建表,修改列族配置,Region的分割和合并操作。
2 干保险业的WAL
HBase所有数据的写入操作第一步先二话不说写进WAL中,然后进一步写进MemStore中。等到MemStore的数据达到一定的数量时才刷写到最终存储的HFile中。如果在刷写的时候宕机或者断电了,干保险业的WAl就会起到数据恢复的作用。为什么呢?因为WAL是放在HDFS上的,宕机是不影响WAL文件的。
3 MemStore 真的是加速机吗?
注意数据写入到MemStore之前,是要先要写入到WAL的,所以增加MemStore并不能加快写入速度,MemStore最大的意义,在于维持数据按照rowkey的顺序排列,进而数据在MemStore中被整理成LSM树,最后再刷写到HFile上。
4 Store 和 Column Family的关系
在一个RegionServer中,会有多个Region,而在每一个Region中,会根据 Column Family生成多个Store。注意一个Store又会对应一个MemStore。而一个RegionServer对应一个全局的BlockCache。
5 Minor compact 和 Major Compact
-
Minor compact :可以用于把多个HFile文件进行合并,同时可以删除TTL过期的数据,但是手动删除数据操作是不能被删除的。为什么这里可以删除TTL过期的数据?因为MemStore在LSM整理时,对于TTL过期只要不写入HFile文件就算是删除了,而对于手动删除数据操作则可能位于不同的HFile文件中,因此做不到删除。
-
Major Compact:是把一个Store中的HFile文件合并为一个HFile文件,而不是把一个Region内的所有HFile文件,因为一个Region可能有多个Collumn Family对应的Store。
6 RegioneServer的JVM参数调优
-
编辑hbase-env . sh,调整HBASE_HEAPSIZE大小,默认是1G,而MemStore则占用40%,也就是400M。显然是不够的。因此需要根据需要设置,比如:
export HBASE_HEAPSIZE =8G 复制代码
-
PermSize的调整:
(1) HBASE_MASTER_OPTS
export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xmx4g -Xms4g" 复制代码
(2) HBASE_REGIONSERVER_OPTS
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xms8g -Xmx8g" 复制代码
注意永远至少留10%的内存给操作系统。
-
举例如下:一台16GB的机器,上面有MapReduce服务,RegionServer 和 DataNode
分配策略如下:
- 系统进程:2G
- MapReduce:8GB
- RegionServer服务:4GB
- TaskTracker:1GB
- DataNode:1GB
7 朱丽叶暂停FULL GC
-
原因主要是Zookeeper惹的祸,在RegionerServer发生FULL GC的时候,STW期间太长,被ZK标记为宕机,当RegionerServer GC完成后,苏醒了发现被标记为宕机了,这时候RegionerServer GC就自杀,防止脑裂发生。醒来再自杀,朱丽叶暂停,哈哈!
-
JVM提供4种GC方案
-
如果你的RegionServer内存大于32GB,建议使用G1GC策略,因为G1Gc会把堆内存划分为多个Region,然后对各个Region单独进行GC,这样整体的Full GC 可以被最大限度地避免。另外通过设置MaxGCPauseMillis最大暂停时间,避免时间太长RegionServer自杀。
export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xms8g -Xmx8g -XX:+UseG1GC -XX:+MaxGCPauseMillis=100" 复制代码
-
如果你的RegionServer内存小于4GB,就不需要考虑G1GC策略了,直接使用
-XX:+UseParNewGC (年轻代使用) -XX:+UseConcMarkSweepGC(年老代使用) export HBASE_REGIONSERVER_OPTS="$HBASE_REGIONSERVER_OPTS -Xms8g -Xmx8g -XX:+UseParNewGC -XX:+UseConcMarkSweepGC " 复制代码
-
8 Justin Kestelyn 测试调优论文
- 32GB heap : -XX:G1NewSizePercent=3 设置要用作年轻代大小最小值的堆百分比。默认值是 Java 堆的 5%。这是一个实验性的标志
- 64GB heap: -XX:G1NewSizePercent=2
- 100GB 或者更大的heap时,-XX:G1NewSizePercent=1
9 总结
网上的Hbase调优资料参差不齐,实在是不忍卒读,有些都是拼凑且版本过时的东西,我这里决定综合所有优质资源进行整合,写一份最全,最有深度,不过时的技术博客。辛苦成文,各自珍惜,谢谢!
本套技术专栏是作者(秦凯新)平时工作的总结和升华,通过从真实商业环境抽取案例进行总结和分享,并给出商业应用的调优建议和集群环境容量规划等内容,请持续关注本套博客。版权声明:禁止转载,欢迎学习。QQ邮箱地址:1120746959@qq.com,如有任何学术交流,可随时联系。
秦凯新 于深圳 20182309
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Kernel Hack实战:修改并编译手机内核源码对抗反调试
- 内核必须懂(六): 使用kgdb调试内核
- Linux内核如何替换内核函数并调用原始函数
- Linux内核工程师是怎么步入内核殿堂的?
- Linux内核工程师是怎么步入内核殿堂的?
- 面试官:说说操作系统微内核和 Dubbo 微内核?
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Probability and Computing
Michael Mitzenmacher、Eli Upfal / Cambridge University Press / 2005-01-31 / USD 66.00
Assuming only an elementary background in discrete mathematics, this textbook is an excellent introduction to the probabilistic techniques and paradigms used in the development of probabilistic algori......一起来看看 《Probability and Computing》 这本书的介绍吧!