PS:之前做项目的时候,需要做个复杂的查询,大量的查询总是导致hbase集群奔溃,最后定位到时full GC的原因。

以下转自《Hbase不睡觉书》------------------------

可怕的Full GC

随着内存的加大, 有一个不容忽视的问题也出现了, 那就是JVM的堆内存越大, Full GC的时间越久。 Full GC有时候可以达到好几分钟。在Full GC的时候JVM会停止响应任何的请求, 整个JVM的世界就像是停止了一样, 所以这种暂停又被叫做Stop-The-World( STW) 。当ZooKeeper像往常一样通过心跳来检测RegionServer节点是否存
活的时候, 发现已经很久没有接收到来自RegionServer的回应, 会直接把这个RegionServer标记为已经宕机。 等到这台RegionServer终于结束了Full GC后, 去查看ZooKeeper的时候会发现原来自己已经“ 被宕机” 了, 为了防止脑裂问题的发生, 它会自己停止自己。 这种场景称为RegionServer自杀, 它还有另一个美丽的名字叫朱丽叶暂停, 而且这问
题还挺常见的, 早期一直困扰着HBase开发人员。 所以我们一定要设定好GC回收策略, 避免长时间的Full GC发生, 或者是尽量减小Full GC的时间。

GC回收策略优化
     由于数据都是在RegionServer里面的, Master只是做一些管理操作, 所以一般内存问题都出在RegionServer上。 接下来主要用RegionServer来讲解参数配置, 如果你想调整Master的内存参数, 只需要把HBASE_REGIONSERVER_OPTS换成HBASE_MASTER_OPTS就行了。JVM提供了4种GC回收器:

  • 串行回收器( SerialGC) 。
  • 并行回收器( ParallelGC) , 主要针对年轻带进行优化( JDK 8默认策略) 。
  • 并发回收器( ConcMarkSweepGC, 简称CMS) , 主要针对年老带进行优化。
  • G1GC回收器, 主要针对大内存( 32GB以上才叫大内存) 进行优化。

具体实现请参考《Hbase不睡觉书》第八章第一节。

《Hbase不睡觉书》下载  https://pan.baidu.com/s/1u6lA1zRcYvLGxGov19ObcA      提取码: 7xpb

其实spark也有这个问题。

可怕的Full GC (转自Hbase不睡觉书)的更多相关文章

  1. HBase电子书

    HBase 不睡觉书  https://pan.baidu.com/s/1d4u7pPAu_B3sW5w9x1ARdA HBase2018年年度总结 https://pan.baidu.com/s/1 ...

  2. HBase学习笔记(一)——基础入门

    1.what:什么是HBase HBase的原型是Google的BigTable论文,受到了该论文思想的启发,目前作为Hadoop的子项目来开发维护,用于支持结构化的数据存储. HBase是一个高可靠 ...

  3. HBase学习笔记(四)—— 架构模型

    在逻辑上,HBase 的数据模型同关系型数据库很类似,数据存储在一张表中,有行有列. 但从 HBase 的底层物理存储结构(K-V)来看,HBase 更像是一个 multi-dimensional m ...

  4. HBase原理、设计与优化实践

    转自:http://www.open-open.com/lib/view/open1449891885004.html 1.HBase 简介 HBase —— Hadoop Database的简称,G ...

  5. HBase优化实战

    本文来自网易云社区. 背景 Datastream一直以来在使用HBase分流日志,每天的数据量很大,日均大概在80亿条,10TB的数据.对于像Datastream这种数据量巨大.对写入要求非常高,并且 ...

  6. (转)hbase master挂掉-zookeeper连接超时原因

    link:http://www.51testing.com/?uid-445759-action-viewspace-itemid-812467 并行运行hbase删表,建表操作,多个表多个regio ...

  7. HBASE架构解析(二)

    http://www.blogjava.net/DLevin/archive/2015/08/22/426950.html HBase读的实现 通过前文的描述,我们知道在HBase写时,相同Cell( ...

  8. HBase 管理,性能调优

    设置 Hadoop 来扩展磁盘 I/O 现代服务器通常有多个磁盘硬件来提供大存储能力.这些磁盘通常配置成 RAID 阵列,作为它们的出厂设置.这在很多情况下是有益的,但对 Hadoop 却不是. Ha ...

  9. 深入HBase架构解析(二)【转】

    转自:http://www.blogjava.net/DLevin/archive/2015/08/22/426950.html 前言 这是<深入HBase架构解析(一)>的续,不多废话, ...

随机推荐

  1. ScheduledThreadPoolExecutor源码

    添加元素,先添加到数组末尾,然后上调整堆. 取对首元素,把最后一个元素放到0位置,然后下调整堆. 移除中间元素,把最后一个元素放到中间位置,然后下调整堆,下调整堆没动(已经是最大的),就在上调整堆.下 ...

  2. axios源码入口以及公用方法

    axios学习笔记(公用方法) 源码地址 找到入口文件 axios/lib/axios.js var utils = require('./utils'); var bind = require('. ...

  3. linux内核树的建立(Ubuntu)

    博客地址:http://www.cnblogs.com/zengjianrong/p/3178874.html 1.搜索源码 2.下载源码,下载路径可设为:/usr/src/ 3.解压源码 4.进入源 ...

  4. Java ReentrantLock中tryLock与lock的区别(非公平锁与公平锁)

    设置同步状态,利用CAS操作. // CAS操作:如果当前状态值等于期望值,则自动将同步状态设置为给定的更新值 protected final boolean compareAndSetState(i ...

  5. sentry之二:sentry配置钉钉和email

    springboot+springcloud后台项目配置日志采集 gradle: compile 'com.getsentry.raven:raven-logback:8.0.2' compile ' ...

  6. W tensorflow/core/util/ctc/ctc_loss_calculator.cc:144] No valid path found 或 loss:inf的解决方案

    基于Tensorflow和Keras实现端到端的不定长中文字符检测和识别(文本检测:CTPN,文本识别:DenseNet + CTC),在使用自己的数据训练这个模型的过程中,出现如下错误,由于问题已经 ...

  7. Java学习:方法的引用

    方法引用(Method references) lambda表达式允许我们定义一个匿名方法,并允许我们以函数式接口的方式使用它.我们也希望能够在已有的方法上实现同样的特性. 方法引用和lambda表达 ...

  8. 如何让SQL语句不执行默认排序,而是按照in语句的顺序返回结果

    Oracle: ')order by instr('111,222,333,444,555,666',order_id); Mysql: ') order by instr(',111,222,333 ...

  9. java--static与代码块

    static与代码块: static class Student{ static String school; // 随着类的加载而执行 可以由类进行调用 static { // 静态代码块 加载类时 ...

  10. RISC-V GNU 工具链:安装与使用

    1. 安装Wmware和unbuntu,我安装的是Wmware workstation pro 12.1.1 build-3770994, unbuntu 是18.04.2 amd版本, ubuntu ...